Upload tizen_2.1 source
authorkh5325.kim <kh5325.kim@samsung.com>
Tue, 16 Apr 2013 07:39:34 +0000 (16:39 +0900)
committerkh5325.kim <kh5325.kim@samsung.com>
Tue, 16 Apr 2013 07:39:34 +0000 (16:39 +0900)
Change-Id: I74314488d09e10c7d54f1ea821f1b7da9124768e

266 files changed:
LICENSE.BSD2c [new file with mode: 0644]
LICENSE.EPLv1 [new file with mode: 0644]
LICENSE.LGPLv2.1 [new file with mode: 0644]
LICENSE.MIT [new file with mode: 0644]
org.tizen.common.connection/src/org/tizen/common/connection/debugtools/OnDemandInstall.java
org.tizen.common.connection/src/org/tizen/common/connection/explorer/ConnectionExplorerPanel.java
org.tizen.common.connection/src/org/tizen/common/connection/explorer/messages.properties
org.tizen.common.connection/src/org/tizen/common/connection/log/LogTab.java
org.tizen.common.connection/src/org/tizen/common/connection/preference/TizenConnectionExplorerPreferencePage.java
org.tizen.common.connection/src/org/tizen/common/connection/sdblib/dnd/FileEntryDropAdapter.java
org.tizen.common.connection/src/org/tizen/common/connection/ui/ConnectionExplorer.java
org.tizen.common.connection/src/org/tizen/common/connection/ui/TizenRemoteFileDialog.java
org.tizen.common.feature/feature.xml
org.tizen.common.project/src/org/tizen/common/project/Activator.java
org.tizen.common.project/src/org/tizen/common/project/CommonProjectConstants.java
org.tizen.common.project/src/org/tizen/common/project/util/Messages.java
org.tizen.common.sdblib/src/org/tizen/sdblib/Device.java
org.tizen.common.sdblib/src/org/tizen/sdblib/FileListingService.java
org.tizen.common.sdblib/src/org/tizen/sdblib/IDevice.java
org.tizen.common.sdblib/src/org/tizen/sdblib/MultiLineReceiver.java
org.tizen.common.sdblib/src/org/tizen/sdblib/SyncService.java
org.tizen.common.sign/lib/HashSign.jar
org.tizen.common.sign/lib/xmlsec-1.5.3.jar
org.tizen.common.sign/src/org/tizen/common/sign/SigningPrompter.java
org.tizen.common.sign/src/org/tizen/common/sign/command/ReadSigningProfileFileCommand.java
org.tizen.common.sign/src/org/tizen/common/sign/command/SignCommand.java
org.tizen.common.sign/src/org/tizen/common/sign/model/DeltaListResource.java
org.tizen.common.ui/.classpath [new file with mode: 0644]
org.tizen.common.ui/.project [new file with mode: 0644]
org.tizen.common.ui/.settings/org.eclipse.jdt.core.prefs [new file with mode: 0644]
org.tizen.common.ui/META-INF/MANIFEST.MF [new file with mode: 0644]
org.tizen.common.ui/OSGI-INF/l10n/bundle.properties [new file with mode: 0644]
org.tizen.common.ui/build.properties [new file with mode: 0644]
org.tizen.common.ui/icons/16_TIZEN_SDK_icon.png [new file with mode: 0644]
org.tizen.common.ui/plugin.xml [new file with mode: 0644]
org.tizen.common.ui/src/org/tizen/common/ui/Activator.java [new file with mode: 0644]
org.tizen.common.ui/src/org/tizen/common/ui/commands/DownloadCardCommandHandler.java [new file with mode: 0644]
org.tizen.common.ui/src/org/tizen/common/ui/commands/TizenWebCommandHandler.java [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/common-resources/config.xml
org.tizen.common.verrari/templates/cli/common-resources/icon.png
org.tizen.common.verrari/templates/cli/jqm-masterdetail/index.html
org.tizen.common.verrari/templates/cli/jqm-masterdetail/section1.html
org.tizen.common.verrari/templates/cli/jqm-masterdetail/section2.html
org.tizen.common.verrari/templates/cli/jqm-multipage/index.html
org.tizen.common.verrari/templates/cli/jqm-navigation/section1.html
org.tizen.common.verrari/templates/cli/jqm-singlepage/index.html
org.tizen.common.verrari/templates/cli/tizen-basic/images/tizen_32.png
org.tizen.common.verrari/templates/cli/tizen-basic/index.html
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/config.xml
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/icon.png
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/VERSION
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/depData.json
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/events/orientationchange.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/jquery.mobile.navigation.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/jquery.mobile.navigation.js.orig [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/jquery.mobile.tizen.core.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/jquery.mobile.tizen.loader.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/jquery.mobile.tizen.pinch.js [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/components/imageloader.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/components/motionpath.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/components/webgl.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/forms/select.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/jquery.mobile.tizen.datetimepicker.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/jquery.mobile.tizen.gallery.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/jquery.mobile.tizen.gallery3d.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/jquery.mobile.tizen.multimediaview.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/jquery.mobile.tizen.pagelayout.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/jquery.mobile.tizen.searchbar.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/jquery.mobile.tizen.tokentextarea.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/jquery.mobile.tizen.virtualgrid.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/page.sections.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/popup.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/widgets/popup.js.orig
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.min.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/tizen-web-ui-fw.min.js
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_multimedia.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_picture.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_text.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_unnamed.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_delete.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_dim.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_fullscreen_off.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_fullscreen_on.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_off.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_on.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_pause.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_play.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_radio.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_radio_select.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_check_bg.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_check_bg_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_check_checking.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_contacts_button_header.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_contacts_button_header_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_icon_cancel.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_icon_cancel_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_list_process_01.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_messagebubble_bg_receive.9.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_messagebubble_bg_sent.9.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_messagebubble_date_bg.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_page_indicator_01.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_page_indicator_02.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_progress_bar.9.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_progress_bg.9.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_scroll_bar_handler.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_scroll_bar_handler_hor.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_splite_handler_h.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_splite_handler_v.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/ajax-loader.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_field_btn_clear.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_field_btn_clear_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_icon_favorite_off.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_icon_favorite_on.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_search_icon.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_01.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_01_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_02.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_02_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_01.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_01_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_02.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_02_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_handle.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_handle_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_popup_bg.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_back.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_back_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_bars.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_bars_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_call.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_call_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_check.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_check_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_down.png [moved from org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-white/images/controls/button/00_button_down.png with 100% similarity]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_down_press.png [moved from org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-white/images/controls/button/00_button_down_press.png with 100% similarity]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_cancel.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_cancel_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_closed.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_closed_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_minus.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_minus_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_opened.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_opened_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_send.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_send_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_gear.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_gear_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_grid.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_grid_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_home.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_home_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_info.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_info_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_left.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_left_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_plus.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_plus_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_refresh.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_refresh_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_rename.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_rename_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_right.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_right_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_search.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_search_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_star.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_star_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_warning.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_warning_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump_left.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump_left_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_Back.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_Back_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_edit.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_edit_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_more.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_more_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_plus.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_plus_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_toolbar_button_bg.9.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_toolbar_button_bg.9_press.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_toolbar_button_ef.9.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/theme.js [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/tizen-web-ui-fw-theme.css [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/tizen-web-ui-fw-theme.min.css [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-white/images/controls/button/00_icon_SIP_close_press_web.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-white/images/controls/button/00_icon_SIP_close_web_web.png [new file with mode: 0644]
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-white/tizen-web-ui-fw-theme.css
org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-white/tizen-web-ui-fw-theme.min.css
org.tizen.common.verrari/templates/cli/tizenwebuifw-multipage/index.html
org.tizen.common.verrari/templates/engine/config/CONFIGBase
org.tizen.common.verrari/templates/engine/html/HTMLTizenBasicBlank
org.tizen.common.verrari/templates/engine/html/HTMLTizenWebUIFWMultiPage
org.tizen.common.verrari/templates/jar/common-resources.jar
org.tizen.common.verrari/templates/jar/jqm-common-resources.jar
org.tizen.common.verrari/templates/jar/jqm-masterdetail.jar
org.tizen.common.verrari/templates/jar/jqm-multipage.jar
org.tizen.common.verrari/templates/jar/jqm-navigation.jar
org.tizen.common.verrari/templates/jar/jqm-singlepage.jar
org.tizen.common.verrari/templates/jar/tizen-basic.jar
org.tizen.common.verrari/templates/jar/tizenwebuifw-common-resources.jar
org.tizen.common.verrari/templates/jar/tizenwebuifw-masterdetail.jar
org.tizen.common.verrari/templates/jar/tizenwebuifw-multipage.jar
org.tizen.common.verrari/templates/jar/tizenwebuifw-navigation.jar
org.tizen.common.verrari/templates/jar/tizenwebuifw-singlepage.jar
org.tizen.common/.classpath
org.tizen.common/META-INF/MANIFEST.MF
org.tizen.common/build.properties
org.tizen.common/log4j.xml [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/CommonPlugin.java
org.tizen.common/src/org/tizen/common/IProjectInfo.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/TizenHelpContextIds.java
org.tizen.common/src/org/tizen/common/TizenPlatformConstants.java
org.tizen.common/src/org/tizen/common/core/application/InstallPathConfig.java
org.tizen.common/src/org/tizen/common/core/command/prompter/ChoiceOption.java
org.tizen.common/src/org/tizen/common/file/EclipseFileHandler.java
org.tizen.common/src/org/tizen/common/rds/DeltaResourceInfo.java
org.tizen.common/src/org/tizen/common/rds/RdsDeltaDetector.java
org.tizen.common/src/org/tizen/common/rds/RdsDeltaListFile.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/rds/RdsDeployer.java
org.tizen.common/src/org/tizen/common/rds/RdsMessages.java
org.tizen.common/src/org/tizen/common/rds/RdsMessages.properties
org.tizen.common/src/org/tizen/common/rds/ui/preference/RdsPreferencePage.java
org.tizen.common/src/org/tizen/common/sdb/command/SdbCommand.java
org.tizen.common/src/org/tizen/common/sdb/command/message/PkgcmdErrorMessages.java
org.tizen.common/src/org/tizen/common/sdb/command/message/PkgcmdErrorMessages.properties
org.tizen.common/src/org/tizen/common/sdb/command/message/PkgcmdErrorType.java
org.tizen.common/src/org/tizen/common/sdb/command/receiver/CommandOutputReceiver.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/sdb/command/receiver/PkgCmdReceiver.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/ui/HelpToolTip.java
org.tizen.common/src/org/tizen/common/ui/dialog/NewIconDialog.java
org.tizen.common/src/org/tizen/common/ui/page/preference/Messages.java
org.tizen.common/src/org/tizen/common/ui/page/preference/Messages.properties
org.tizen.common/src/org/tizen/common/ui/page/preference/TizenBasePreferencePage.java
org.tizen.common/src/org/tizen/common/ui/view/console/ConsoleManager.java
org.tizen.common/src/org/tizen/common/ui/view/console/ConsoleManager2.java
org.tizen.common/src/org/tizen/common/ui/view/console/ITizenConsoleManager.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/util/FileUtil.java
org.tizen.common/src/org/tizen/common/util/HostUtil.java
org.tizen.common/src/org/tizen/common/util/ImageUtil.java
org.tizen.common/src/org/tizen/common/util/LocalPortChecker.java
org.tizen.common/src/org/tizen/common/util/PropertyUtil.java
org.tizen.common/src/org/tizen/common/util/SWTUtil.java
org.tizen.common/src/org/tizen/common/util/ThreadLocalMap.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/util/log/EclipseAppender.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/util/log/FileAppender.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/util/log/GoogleAnalyticAppender.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/util/log/Level.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/util/log/Logger.java
org.tizen.common/src/org/tizen/common/util/log/LoggerConstants.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/util/log/Messages.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/util/log/TizenLog4Configurator.java [deleted file]
org.tizen.common/src/org/tizen/common/util/log/TizenLog4jAppender.java [deleted file]
org.tizen.common/src/org/tizen/common/util/log/TizenLog4jConfigurator.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/util/log/UserLogger.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/util/log/messages.properties [new file with mode: 0644]
org.tizen.common/test/src/org/tizen/common/util/log/FileAppenderTest.java [new file with mode: 0644]
org.tizen.common/test/src/org/tizen/common/util/log/GoogleAnalyticAppenderTest.java [new file with mode: 0644]
package/addingFiles/documents/shortcuts.pdf [new file with mode: 0644]
package/changelog
package/pkginfo.manifest

diff --git a/LICENSE.BSD2c b/LICENSE.BSD2c
new file mode 100644 (file)
index 0000000..9c38c25
--- /dev/null
@@ -0,0 +1,10 @@
+Copyright (C) 2000 - 2013 Samsung Electronics Co., Ltd.
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/LICENSE.EPLv1 b/LICENSE.EPLv1
new file mode 100644 (file)
index 0000000..d5cdecf
--- /dev/null
@@ -0,0 +1,86 @@
+Eclipse Public License - v 1.0(EPLv1)\r
+\r
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC\r
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT¡¯S ACCEPTANCE OF THIS AGREEMENT.\r
+\r
+1. DEFINITIONS\r
+\r
+"Contribution" means:\r
+\r
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and\r
+b) in the case of each subsequent Contributor:\r
+\r
+i) changes to the Program, and\r
+\r
+ii) additions to the Program;\r
+\r
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor¡¯s behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.\r
+\r
+"Contributor" means any person or entity that distributes the Program.\r
+\r
+"Licensed Patents¡± mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.\r
+\r
+"Program" means the Contributions distributed in accordance with this Agreement.\r
+\r
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.\r
+\r
+2. GRANT OF RIGHTS\r
+\r
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.\r
+\r
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.\r
+\r
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient¡¯s responsibility to acquire that license before distributing the Program.\r
+\r
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.\r
+\r
+3. REQUIREMENTS\r
+\r
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:\r
+\r
+a) it complies with the terms and conditions of this Agreement; and\r
+\r
+b) its license agreement:\r
+\r
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;\r
+\r
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;\r
+\r
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and\r
+\r
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.\r
+\r
+When the Program is made available in source code form:\r
+\r
+a) it must be made available under this Agreement; and\r
+b) a copy of this Agreement must be included with each copy of the Program.\r
+\r
+Contributors may not remove or alter any copyright notices contained within the Program.\r
+\r
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.\r
+\r
+4. COMMERCIAL DISTRIBUTION\r
+\r
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.\r
+\r
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor¡¯s responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.\r
+\r
+5. NO WARRANTY\r
+\r
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. \r
+\r
+6. DISCLAIMER OF LIABILITY\r
+\r
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
+\r
+7. GENERAL\r
+\r
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.\r
+\r
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient¡¯s patent(s), then such Recipient¡¯s rights granted under Section 2(b) shall terminate as of the date such litigation is filed. \r
+\r
+All Recipients¡¯ rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipients¡¯ rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient¡¯s obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.\r
+\r
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppels or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.\r
+\r
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.\r
diff --git a/LICENSE.LGPLv2.1 b/LICENSE.LGPLv2.1
new file mode 100644 (file)
index 0000000..1c4d7b7
--- /dev/null
@@ -0,0 +1,195 @@
+GNU LESSER GENERAL PUBLIC LICENSE (LGPLv2.1)\r
+Version 2.1, February 1999\r
+\r
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA  02110-301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.\r
+\r
+[This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.]\r
+\r
+Preamble\r
+\r
+  The licenses for most software are designed to take away your freedom to share and change it.  By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.\r
+\r
+  This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it.  You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below.\r
+\r
+  When we speak of free software, we are referring to freedom of use, not price.  Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things.\r
+\r
+To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights.  These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it.\r
+\r
+  For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code.  If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights.\r
+\r
+  We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library.\r
+\r
+  To protect each distributor, we want to make it very clear that there is no warranty for the free library.  Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others.\r
+\r
+  Finally, software patents pose a constant threat to the existence of any free program.  We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder.  Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license.\r
+\r
+  Most GNU software, including some libraries, is covered by the ordinary GNU General Public License.  This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License.  We use this license for certain libraries in order to permit linking those libraries into non-free programs.\r
+\r
+  When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library.  The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom.  The Lesser General Public License permits more lax criteria for linking other code with the library.\r
+\r
+  We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License.  It also provides other free software developers less of an advantage over competing non-free programs.  These disadvantages are the reason we use the ordinary General Public License for many libraries.  However, the lesser license provides advantages in certain special circumstances.\r
+\r
+  For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard.  To achieve this, non-free programs must be allowed to use the library.  A more frequent case is that a free library does the same job as widely used non-free libraries.  In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License.\r
+\r
+  In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software.  For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system.\r
+\r
+Although the Lesser General Public License is less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library.\r
+\r
+  The precise terms and conditions for copying, distribution and modification follow.  Pay close attention to the difference between a "work based on the library" and a "work that uses the library".  The former contains code derived from the library, whereas the latter must be combined with the library in order to run.\r
+\r
+GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION \r
+\r
+  0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".\r
+\r
+  A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.\r
+\r
+  The "Library", below, refers to any such software library or work which has been distributed under these terms.  A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language.  (Hereinafter, translation is included without limitation in the term "modification".)\r
+\r
+  "Source code" for a work means the preferred form of the work for making modifications to it.  For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.\r
+\r
+  Activities other than copying, distribution and modification are not covered by this License; they are outside its scope.  The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it).  Whether that is true depends on what the Library does and what the program that uses the Library does.\r
+\r
+  1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.\r
+\r
+  You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\r
+\r
+  2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\r
+\r
+a) The modified work must itself be a software library.\r
+\r
+b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.\r
+\r
+c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.\r
+\r
+d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.\r
+\r
+(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application.  Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)\r
+\r
+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works.  But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\r
+\r
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.\r
+\r
+In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\r
+\r
+  3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library.  To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License.  (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.)  Do not make any other change in these notices.\r
+\r
+Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.\r
+\r
+  This option is useful when you wish to copy part of the code of the Library into a program that is not a library.\r
+\r
+  4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.\r
+\r
+  If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.\r
+\r
+  5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library".  Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.\r
+\r
+  However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library".  The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.\r
+\r
+When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library.  The threshold for this to be true is not precisely defined by law.\r
+\r
+  If such an object file uses only numerical parameters, data structure layouts and assessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work.  (Executables containing this object code plus portions of the Library will still fall under Section 6.)\r
+\r
+  Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.\r
+\r
+  6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.\r
+\r
+  You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License.  You must supply a copy of this License.  If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License.  Also, you must do one of these things:\r
+\r
+a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library.  (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)\r
+\r
+b) Use a suitable shared library mechanism for linking with the Library.  A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.\r
+\r
+c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.\r
+\r
+d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.\r
+\r
+e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.\r
+\r
+  For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it.  However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\r
+\r
+  It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system.  Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.\r
+\r
+  7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:\r
+\r
+a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities.  This must be distributed under the terms of the Sections above.\r
+\r
+b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.\r
+\r
+  8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License.  Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License.  However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\r
+\r
+  9. You are not required to accept this License, since you have not signed it.  However, nothing else grants you permission to modify or distribute the Library or its derivative works.  These actions are prohibited by law if you do not accept this License.  Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.\r
+\r
+  10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions.  You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.\r
+\r
+  11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License.  If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all.  For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.\r
+\r
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.\r
+\r
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices.  Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\r
+\r
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\r
+\r
+  12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded.  In such case, this License incorporates the limitation as if written in the body of this License.\r
+\r
+13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. \r
+\r
+Each version is given a distinguishing version number.  If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation.  If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.\r
+\r
+  14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission.  For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this.  Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\r
+\r
+NO WARRANTY\r
+\r
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\r
+\r
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\r
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
+\r
+ END OF TERMS AND CONDITIONS\r
+\r
+   How to Apply These Terms to Your New Libraries\r
+\r
+  If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change.  You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License).\r
+\r
+To apply these terms, attach the following notices to the library.  It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. \r
+\r
+<one line to give the library's name and a brief idea of what it does.>\r
+Copyright (C) <year>  <name of author>\r
+\r
+This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.\r
+\r
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.\r
+\r
+You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\r
+\r
+Also add information on how to contact you by electronic and paper mail.\r
+\r
+You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary.  Here is a sample; alter the names:\r
+\r
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker.\r
+\r
+  <signature of Ty Coon>, 1 April 1990\r
+  Ty Coon, President of Vice\r
+\r
+That's all there is to it!\r
+\r
+1)\r
+Copyright notice for Elementary:\r
+\r
+Copyright (C) 2008-2011 Carsten Haitzler and various contributors (see AUTHORS)\r
+\r
+This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; version 2.1 of the License.\r
+\r
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.\r
+\r
+Below is a copy of the GNU Lesser General Public License that is distributed along with this library. If you do not have a copy below, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\r
+\r
+2)\r
+Copyright notice for Eina:\r
+\r
+Copyright (C) 2008-2011 Jorge Luis Zapata and various contributors (see AUTHORS)\r
+\r
+This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License.\r
+\r
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.\r
+\r
+Below is a copy of the GNU Lesser General Public License that is distributed along with this library. If you do not have a copy below, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\r
diff --git a/LICENSE.MIT b/LICENSE.MIT
new file mode 100644 (file)
index 0000000..0ab88c2
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright(c) ComponentOne, LLC.  All rights reserved.\r
+\r
+Permission is hereby granted, free of charge, to any person obtaining\r
+a copy of this software and associated documentation files (the\r
+"Software"), to deal in the Software without restriction, including\r
+without limitation the rights to use, copy, modify, merge, publish,\r
+distribute, sublicense, and/or sell copies of the Software, and to\r
+permit persons to whom the Software is furnished to do so, subject to\r
+the following conditions:\r
+\r
+The above copyright notice and this permission notice shall be\r
+included in all copies or substantial portions of the Software.\r
+\r
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
index 44d78a1..4d8cc8c 100644 (file)
@@ -228,7 +228,6 @@ public class OnDemandInstall {
 
         for (DebugTool dt : debugTools) {
             // get package list to install
-            verbose("Verifying: " + dt);
             if (verifyArchitecture(dt.getArchitecture()) == false) {
                 continue;
             }
index 4957832..ed7ef70 100755 (executable)
@@ -35,6 +35,7 @@ import java.util.List;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.MenuManager;
@@ -89,6 +90,7 @@ import org.tizen.common.ui.view.console.AnsicodeAdapter;
 import org.tizen.common.ui.view.console.ConsoleManager;
 import org.tizen.common.util.DialogUtil;
 import org.tizen.common.util.FilenameUtil;
+import org.tizen.common.util.SWTUtil;
 import org.tizen.common.util.log.Logger;
 import org.tizen.sdblib.FileListingService.FileEntry;
 import org.tizen.sdblib.IDevice;
@@ -630,7 +632,7 @@ public class ConnectionExplorerPanel extends Panel implements IDeviceChangeListe
                             command = String.format("rm -rf %s; echo $?", FilenameUtil.addDoubleQuote(entry.getFullEscapedPath()));
                         } else
                         {
-                            command = String.format("rm %s; echo $?", FilenameUtil.addDoubleQuote(entry.getFullEscapedPath()));
+                            command = String.format("rm -f %s; echo $?", FilenameUtil.addDoubleQuote(entry.getFullEscapedPath()));
                         }
 
                         try
@@ -701,14 +703,21 @@ public class ConnectionExplorerPanel extends Panel implements IDeviceChangeListe
     {
         if (!lines[lines.length - 1].contains("0"))
         {
-            StringBuilder sb = new StringBuilder();
-            for (String line : lines)
+            if(lines.length <= 2)
             {
-                line = AnsicodeAdapter.getStripAnsiString(line);
-                sb.append(line);
+                Status status = new Status(IStatus.ERROR, id, 0, AnsicodeAdapter.getStripAnsiString(lines[0]), null);
+                ErrorDialog.openError(SWTUtil.getActiveShell(), Messages.getString("FileDialogUtils.message.title"), message, status);
+            }
+            else
+            {
+                MultiStatus multiStatus = new MultiStatus(id, 0, AnsicodeAdapter.getStripAnsiString(lines[0]), null);
+                for (int i=0; i<lines.length-1; i++)
+                {
+                    String strippedLine = AnsicodeAdapter.getStripAnsiString(lines[i]);
+                    multiStatus.add(new Status(IStatus.ERROR, id, 0, strippedLine, null));
+                }
+                ErrorDialog.openError(SWTUtil.getActiveShell(), Messages.getString("FileDialogUtils.message.title"), message, multiStatus);
             }
-            Status status = new Status(IStatus.ERROR, id, 0, sb.toString(), null);
-            ErrorDialog.openError(Display.getCurrent().getActiveShell(), Messages.getString("FileDialogUtils.message.title"), message, status);
         }
     }
 
index 28acc15..e0981e3 100644 (file)
@@ -1,7 +1,7 @@
 FileDialogUtils.message.title=Message\r
 FileDialogUtils.overwrite.message=The {0} file already exists. Do you want to overwrite it?\r
 FileDialogUtils.duplicate.message=Existing file\r
-FileDialogUtils.delete.message=Are you sure you want to delete the {0} file?\r
+FileDialogUtils.delete.message=Are you sure you want to delete the ''{0}'' file?\r
 FileDialogUtils.tabName.message= The tab name already exists. Enter a different name.\r
 FileDialogUtils.update.title=Tizen SDK\r
 FileDialogUtils.update.message= Tizen SDK updates are available. Do you want to install them now?\r
index 3c93918..c703f36 100755 (executable)
@@ -38,6 +38,7 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.TabItem;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableItem;
+import org.tizen.common.TizenPlatformConstants;
 import org.tizen.common.connection.ConnectionPlugin;
 import org.tizen.common.connection.log.LogPanel.LogMessage;
 import org.tizen.common.connection.log.LogPanel.LogMessageInfo;
@@ -288,7 +289,8 @@ public class LogTab
 
                     try
                     {
-                        device.executeShellCommand("dlogutil -v long *:" + level.getPriorityLetter(), logReceiver, 0 /* timeout */); //$NON-NLS-1$
+                        device.executeShellCommand(String.format(TizenPlatformConstants.DLOGUTIL_CMD
+                                , "-v long *:" + level.getPriorityLetter()), logReceiver, 0 /* timeout */); //$NON-NLS-1$
                     } catch (Exception e)
                     {
                         Logger.error("LogTab", e);
index bafe845..f23eded 100644 (file)
@@ -54,7 +54,7 @@ public class TizenConnectionExplorerPreferencePage extends FieldEditorPreference
     public static final String KEY_PUSHPULL_TIMEOUT = "pushpull_timeout"; //$NON-NLS-1$
     public static final String KEY_EMULATOR_MANAGER_PATH = "emulator_manager_path"; //$NON-NLS-1$
 
-    public static final int VALUE_PUSHPULL_TIMEOUT_DEFAULT = 5000;
+    public static final int VALUE_PUSHPULL_TIMEOUT_DEFAULT = 30000;
     public static final String VALUE_EMULATOR_MANAGER_PATH_DEFAULT = getEmulatorManagerDefaultPath(); //$NON-NLS-1$
 
     public TizenConnectionExplorerPreferencePage()
index d116656..1940858 100755 (executable)
@@ -1,28 +1,28 @@
 /*
-*  Common
-*
-* Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
-*
-* Contact:
-* Hoon Kang <h245.kang@samsung.com>
-* Yoonki Park <yoonki.park@samsung.com>
-*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * Hoon Kang <h245.kang@samsung.com>
+ * Yoonki Park <yoonki.park@samsung.com>
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*
-* Contributors:
-* - S-Core Co., Ltd
-*
-*/
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
 package org.tizen.common.connection.sdblib.dnd;
 
 import java.io.File;
@@ -37,6 +37,7 @@ import org.eclipse.ui.part.IDropActionDelegate;
 import org.tizen.common.connection.ConnectionPlugin;
 import org.tizen.common.connection.ddmuilib.FileDialogUtils;
 import org.tizen.common.connection.ddmuilib.console.DdmConsole;
+import org.tizen.common.util.IOUtil;
 import org.tizen.sdblib.SdbCommandRejectedException;
 import org.tizen.sdblib.SyncService;
 import org.tizen.sdblib.SyncService.ISyncProgressMonitor;
@@ -45,91 +46,89 @@ import org.tizen.sdblib.TimeoutException;
 
 public class FileEntryDropAdapter implements IDropActionDelegate {
 
-       @Override
-       public boolean run(Object source, Object target) {
-               IResource resource = null;
+    @Override
+    public boolean run(Object source, Object target) {
+        IResource resource = null;
 
-               if (target instanceof IAdaptable) {
-                       target = ((IAdaptable) target).getAdapter(IResource.class);
-                       if (target != null && target instanceof IResource) {
-                               resource = (IResource) target;
-                               if (resource.getType() == IResource.FILE && resource.getParent() != null)
-                               {
-                                       resource = resource.getParent();
-                               }
-                       }
-               }
+        if (target instanceof IAdaptable) {
+            target = ((IAdaptable) target).getAdapter(IResource.class);
+            if (target != null && target instanceof IResource) {
+                resource = (IResource) target;
+                if (resource.getType() == IResource.FILE && resource.getParent() != null) {
+                    resource = resource.getParent();
+                }
+            }
+        }
 
-               String[] entries = FileEntryTransfer.getInstance().fromByteArray( (byte[]) source);
+        String[] entries = FileEntryTransfer.getInstance().fromByteArray((byte[]) source);
 
-               if (entries.length < 1)
-               {
-                       return false;
-               }
+        if (entries.length < 1) {
+            return false;
+        }
 
-               SyncService sync = null;
-               try {
-                       sync = ConnectionPlugin.getDefault().getCurrentDevice().getSyncService();
-               } catch (TimeoutException e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
-               } catch (SdbCommandRejectedException e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
-               } catch (IOException e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
-               }
-               if (sync != null) {
-                       ISyncProgressMonitor monitor = SyncService.getNullProgressMonitor();
-                       boolean isAlwayCopy = false;
+        SyncService sync = null;
+        try {
+            sync = ConnectionPlugin.getDefault().getCurrentDevice().getSyncService();
+        } catch (TimeoutException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (SdbCommandRejectedException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        if (sync != null) {
+            ISyncProgressMonitor monitor = SyncService.getNullProgressMonitor();
+            boolean isAlwayCopy = false;
 
-                       for (int i = 0; i < entries.length; i++) {
-                               File f = new File(entries[i]);
-                               if (resource == null )
-                               {
-                                       return false;
-                               }
-                               IPath localPath = resource.getFullPath().append(f.getName());
-                               IResource newRes = resource.getWorkspace().getRoot().findMember(localPath);
+            for (int i = 0; i < entries.length; i++) {
+                File f = new File(entries[i]);
+                if (resource == null) {
+                    return false;
+                }
+                IPath localPath = resource.getFullPath().append(f.getName());
+                IResource newRes = resource.getWorkspace().getRoot().findMember(localPath);
 
-                               String localFilePath = resource.getLocation().append(f.getName()).toOSString();
+                String localFilePath = resource.getLocation().append(f.getName()).toOSString();
 
-               if (newRes != null) {
-                                       if (isAlwayCopy == false) {
-                                               int ret = FileDialogUtils.checkOverwrite(f.getName());
-                                               switch (ret) {
-                                                       case FileDialogUtils.CANCEL_ID :
-                                                               return false;
-                                                       case FileDialogUtils.YES_TO_ALL_ID :
-                                                               isAlwayCopy = true;
-                                                               break;
-                                                       case FileDialogUtils.NO_ID :
-                                                               continue;
-                                                       default:
-                                               }
-                                       }
-                               }
-                               SyncResult result = sync.pullFile(entries[i], localFilePath     , monitor);
+                if (newRes != null) {
+                    if (isAlwayCopy == false) {
+                        int ret = FileDialogUtils.checkOverwrite(f.getName());
+                        switch (ret) {
+                        case FileDialogUtils.CANCEL_ID:
+                            return false;
+                        case FileDialogUtils.YES_TO_ALL_ID:
+                            isAlwayCopy = true;
+                            break;
+                        case FileDialogUtils.NO_ID:
+                            continue;
+                        default:
+                        }
+                    }
+                }
+                SyncResult result = sync.pullFile(entries[i], localFilePath, monitor);
 
-                               if (result.getCode() != SyncService.RESULT_OK) {
-                                       DdmConsole.printErrorToConsole(String.format(
-                                                       "Failed to pull %1$s: %2$s",
-                                                       localFilePath, result.getMessage()));
-                                       continue;
-                               } else {
-                                       if (ResourcesPlugin.getWorkspace().isTreeLocked() == false) {
-                                               try {
-                                                       resource.getProject().refreshLocal(IResource.DEPTH_INFINITE, null);
-                                               } catch (CoreException e) {
-                                                       e.printStackTrace();
-                                               }
-                                       }
-                               }
-                       }
-               }
+                if (result.getCode() != SyncService.RESULT_OK) {
+                    DdmConsole.printErrorToConsole(String.format("Failed to pull %1$s: %2$s", localFilePath, result.getMessage()));
+                    continue;
+                } else {
+                    if (ResourcesPlugin.getWorkspace().isTreeLocked() == false) {
+                        try {
+                            resource.getProject().refreshLocal(IResource.DEPTH_INFINITE, null);
+                        } catch (CoreException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                }
+            }
+        }
+        if (sync != null) {
+            IOUtil.tryClose(sync);
+        }
 
-       return false;
-       }
+        return false;
+    }
 
-}
+}
\ No newline at end of file
index e759838..43cce81 100755 (executable)
@@ -27,19 +27,14 @@ package org.tizen.common.connection.ui;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
 
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IContributionItem;
 import org.eclipse.jface.action.IMenuListener;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.KeyAdapter;
 import org.eclipse.swt.events.KeyEvent;
@@ -50,7 +45,6 @@ import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.ToolBar;
 import org.eclipse.swt.widgets.ToolItem;
 import org.eclipse.swt.widgets.Tree;
@@ -64,7 +58,6 @@ import org.eclipse.ui.part.ViewPart;
 import org.tizen.common.TizenHelpContextIds;
 import org.tizen.common.connection.ConnectionPlugin;
 import org.tizen.common.connection.explorer.ConnectionExplorerPanel;
-import org.tizen.common.connection.log.LogUIMessages;
 import org.tizen.common.connection.preference.TizenConnectionExplorerPreferencePage;
 import org.tizen.common.core.application.InstallPathConfig;
 import org.tizen.common.util.HostUtil;
@@ -99,12 +92,13 @@ public class ConnectionExplorer extends ViewPart implements IPartListener2 {
     private Action actionDelete;
     private Action actionPlatformLogOn;
     private Action actionPlatformLogOff;
-
+    
     private MenuManager menuMgr;
     private static ConnectionExplorer explorer;
 
-    public static String PLATFORMLOG_ON = "1";
     public static String PLATFORMLOG_OFF = "0";
+    public static String PLATFORMLOG_ON = "1";
+    public static int PLATFORMLOG_UNABLE = 2;
 
     synchronized public static ConnectionExplorer gerDefault() {
         if (explorer == null) {
@@ -391,16 +385,26 @@ public class ConnectionExplorer extends ViewPart implements IPartListener2 {
         subLogMenu.add(actionPlatformLogOn);
         subLogMenu.add(actionPlatformLogOff);
         manager.add(subLogMenu);
-        boolean isOn = isPlatformLogOn();
-        actionPlatformLogOn.setChecked(isOn);
-        actionPlatformLogOff.setChecked(!isOn);
+
+        int resPlatform = isPlatformLogOn();
+
+        if(resPlatform == Integer.parseInt(PLATFORMLOG_ON)) {
+            actionPlatformLogOn.setChecked(true);
+            actionPlatformLogOff.setChecked(false);
+        } else if(resPlatform == Integer.parseInt(PLATFORMLOG_OFF)) {
+            actionPlatformLogOn.setChecked(false);
+            actionPlatformLogOff.setChecked(true);
+        } else {
+            actionPlatformLogOn.setChecked(false);
+            actionPlatformLogOff.setChecked(false);
+        }
     }
 
-    private boolean isPlatformLogOn() {
+    private int isPlatformLogOn() {
         TreeItem[] items = panel.getTreeViewer().getTree().getSelection();
         FileEntry file = (FileEntry) items[0].getData();
         IDevice[] devices = SmartDevelopmentBridge.getBridge().getDevices();
-        final AtomicBoolean result = new AtomicBoolean(false);
+        final AtomicInteger result = new AtomicInteger(PLATFORMLOG_UNABLE);
         for (IDevice device : devices) {
             if (file.getName().equals(device.getDeviceName())) {
                 String command = "dlogctrl get platformlog";
@@ -409,19 +413,20 @@ public class ConnectionExplorer extends ViewPart implements IPartListener2 {
 
                         @Override
                         public void processNewLines(String[] lines) {
-                            boolean isOn = lines[0].equals(PLATFORMLOG_ON);
-                            boolean isOff = lines[0].equals(PLATFORMLOG_OFF);
-                            if (isOn || isOff) {
-                                if (isOn) {
-                                    result.set(true);
-                                }
-                                if (!subLogMenu.isVisible()) {
-                                    subLogMenu.setVisible(true);
+                            for(String line: lines)
+                            {
+                                if (PLATFORMLOG_ON.equals(line) || PLATFORMLOG_OFF.equals(line)) {
+                                    result.set(Integer.parseInt(line));
+                                    if (!subLogMenu.isVisible()) {
+                                        subLogMenu.setVisible(true);
+                                    }
+                                    break;
                                 }
-                            } else {
-                                MessageDialog.openError(parent.getShell(),
-                                        ConnectionUIMessages.Explorer_Message_PlatformLogError, lines[0]); //$NON-NLS-1$
-                                subLogMenu.setVisible(false);
+                            }
+
+                            if(result.get() == PLATFORMLOG_UNABLE)
+                            {
+                                Logger.error("Fail to get platform log: " + lines[0]);
                             }
                         }
                     });
index 863cf46..eab7bb4 100755 (executable)
@@ -90,6 +90,8 @@ public class TizenRemoteFileDialog {
                         event.detail = SWT.TRAVERSE_NONE;
                         event.doit = false;
                         break;
+                    default:
+                        break;
                 }
             }
         });
index 03ff740..33e3704 100755 (executable)
          version="0.0.0"
          unpack="false"/>
 
+   <plugin
+         id="org.tizen.common.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>
index e025216..a24e42b 100644 (file)
@@ -1,3 +1,30 @@
+/*
+ * Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * NamKoong Ho <ho.namkoong@samsung.com> 
+ * Jihoon Song <jihoon80.song@samsung.com>
+ * BonYong Lee <bonyong.lee@samsung.com>
+ * Kangho Kim <kh5325.kim@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
 package org.tizen.common.project;
 
 import org.eclipse.ui.plugin.AbstractUIPlugin;
index 33420c9..5028347 100644 (file)
@@ -1,3 +1,30 @@
+/*
+ * Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * NamKoong Ho <ho.namkoong@samsung.com> 
+ * Jihoon Song <jihoon80.song@samsung.com>
+ * BonYong Lee <bonyong.lee@samsung.com>
+ * Kangho Kim <kh5325.kim@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
 package org.tizen.common.project;
 
 public final class CommonProjectConstants {
index 19f4038..3355b7f 100644 (file)
@@ -1,3 +1,30 @@
+/*
+ * Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * NamKoong Ho <ho.namkoong@samsung.com> 
+ * Jihoon Song <jihoon80.song@samsung.com>
+ * BonYong Lee <bonyong.lee@samsung.com>
+ * Kangho Kim <kh5325.kim@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
 package org.tizen.common.project.util;
 
 import org.eclipse.osgi.util.NLS;
index 618b22b..5971f78 100644 (file)
@@ -30,7 +30,8 @@ final class Device implements IDevice {
 
     final static String COMMAND_ARCHITECTURE_INFO = "uname -m";
     final static String EMULATOR = "emulator";
-    final static String COMMAND_DEVICE_TYPE = "[ -f /dev/samsung_sdb ] || echo " + EMULATOR;
+    final static String RESULT_EMULATOR = "0";
+    final static String COMMAND_DEVICE_TYPE = "ls -al /dev/samsung_sdb 2>/dev/null | wc -l ";
     public final static String DEFAULT_APP_INSTALL_PATH = "/opt/usr/apps";
     public final static String PKG_TOOL_INSTALL_PATH_COMMAND = "/usr/bin/pkgcmd -a";
     public final static String PKG_TOOL_INSTALL_PATH_COMMAND_RESULT = "Tizen Application Installation Path:";
@@ -105,6 +106,10 @@ final class Device implements IDevice {
     }
 
     public SdbShellProcess executeShellCommand(String command) throws IOException {
+        return (SdbShellProcess) executeShellCommand(command, true);
+    }
+
+    public Process executeShellCommand(String command, boolean prompt) throws IOException {
         SmartDevelopmentBridge sdb = SmartDevelopmentBridge.getBridge();
         if (sdb == null)
             return null;
@@ -115,9 +120,12 @@ final class Device implements IDevice {
             return null;
 
         String sdbShellCmd = sdbPath + " -s " + mSerialNumber + " shell";
+        if (!prompt)
+            sdbShellCmd += " " + command;
         Process pSdb = Runtime.getRuntime().exec(sdbShellCmd);
-        sdbShellProcess = new SdbShellProcess(pSdb, command);
-        return sdbShellProcess;
+        if (!prompt)
+            return pSdb;
+        return new SdbShellProcess(pSdb, command);
     }
 
     public void executeShellCommand(String command, IShellOutputReceiver receiver) throws TimeoutException,
@@ -313,7 +321,7 @@ final class Device implements IDevice {
         public void processNewLines(String[] lines) {
             for(String line : lines) {
                 if(line != null) {
-                    if(EMULATOR.equals(line.toLowerCase())) {
+                    if(RESULT_EMULATOR.equals(line)) {
                         mIsEmulator = true;
                         break;
                     }
index ae0eb89..8f650d9 100644 (file)
@@ -720,6 +720,8 @@ public final class FileListingService
                 case 'p':
                     objectType = TYPE_FIFO;
                     break;
+                default :
+                    break;
             }
             return objectType;
         }
index 5c77443..8d54aa1 100755 (executable)
@@ -136,7 +136,7 @@ public interface IDevice {
     FileListingService getFileListingService();
 
     /**
-     * Executes a shell command on the device and return SdbShellProcess
+     * Executes a shell command on the device interactively and return SdbShellProcess
      *
      * @param command the shell command to execute
      * @throws IOException in case of I/O error on the connection.
@@ -146,6 +146,15 @@ public interface IDevice {
     SdbShellProcess executeShellCommand(String command) throws IOException;
 
     /**
+     * Executes a shell command to the device interactively if prompt is false and return SdbShellProcess
+     *
+     * @param command the shell command to execute
+     * @throws IOException in case of I/O error on the connection.
+     *
+     * @see SdbShellProcess
+     */
+    public Process executeShellCommand(String command, boolean prompt) throws IOException;
+    /**
      * Executes a shell command on the device, and sends the result to a <var>receiver</var>
      * <p/>This is similar to calling
      * <code>executeShellCommand(command, receiver, SdbPreferences.getTimeOut())</code>.
@@ -282,4 +291,4 @@ public interface IDevice {
      * Returns application's installation path.
      */
     String getAppInstallPath();
-}
+}
\ No newline at end of file
index 24a8763..8a844d6 100755 (executable)
@@ -143,6 +143,13 @@ public abstract class MultiLineReceiver implements IShellOutputReceiver {
        public boolean isCancelled() {
                return false;
        }
+       
+       /**
+        * 
+        */
+       public String[] getLines() {
+           return mArray.toArray(new String[mArray.size()]);
+       }
 
        /**
         * Called when new lines are being received by the remote process.
index 2be9068..c174619 100755 (executable)
@@ -16,6 +16,7 @@
 
 package org.tizen.sdblib;
 
+import java.io.Closeable;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
@@ -36,7 +37,7 @@ import org.tizen.sdblib.SyncService.ISyncProgressMonitor;
  * <p/>
  * To get a {@link SyncService} object, use {@link Device#getSyncService()}.
  */
-public final class SyncService {
+public final class SyncService implements Closeable {
 
     private final static byte[] ID_OKAY = { 'O', 'K', 'A', 'Y' };
     private final static byte[] ID_FAIL = { 'F', 'A', 'I', 'L' };
@@ -44,6 +45,7 @@ public final class SyncService {
     private final static byte[] ID_DATA = { 'D', 'A', 'T', 'A' };
     private final static byte[] ID_DONE = { 'D', 'O', 'N', 'E' };
     private final static byte[] ID_SEND = { 'S', 'E', 'N', 'D' };
+    private final static byte[] ID_QUIT = { 'Q', 'U', 'I', 'T' };
 
     private final static NullSyncProgressMonitor sNullSyncProgressMonitor =
             new NullSyncProgressMonitor();
@@ -267,6 +269,7 @@ public final class SyncService {
     public void close() {
         if (mChannel != null) {
             try {
+                sync_quit();
                 mChannel.close();
             } catch (IOException e) {
                 // nothing to be done really...
@@ -329,6 +332,8 @@ public final class SyncService {
             return "Fail delete file.";
         case RESULT_FAIL_CREATE_FILE:
             return "Fail create file.";
+        default :
+            break;
         }
 
         throw new RuntimeException();
@@ -1009,7 +1014,7 @@ public final class SyncService {
             fos.flush();
         } catch (IOException e) {
             return new SyncResult(RESULT_FILE_WRITE_ERROR, e);
-        } 
+        }
 
         return new SyncResult(RESULT_OK);
     }
@@ -1343,6 +1348,15 @@ public final class SyncService {
         return true;
 
     }
+
+    private void sync_quit() {
+        byte[] msg = createReq(ID_QUIT, 0);
+        try {
+            SdbHelper.write(mChannel, msg, -1, SdbPreferences.getTimeOut());
+        }catch (IOException e) {
+            Log.e("sdb", "send quit error");
+        }
+    }
 }
 
 //to process size is bigger than integer maximum value
@@ -1450,7 +1464,7 @@ class TransferInfo{
 
         short_size = (int)size % 1000;
 
-        String unit = null;
+        String unit = "GB";
 
         switch(index)
         {
@@ -1463,8 +1477,7 @@ class TransferInfo{
         case 2:
             unit = "MB";
             break;
-        case 3:
-            unit = "GB";
+        default:
             return String.format("%.2f %s", size_for_GB, unit);
         }
 
index 2ecbe56..304dbda 100644 (file)
Binary files a/org.tizen.common.sign/lib/HashSign.jar and b/org.tizen.common.sign/lib/HashSign.jar differ
index b358394..ec18e51 100644 (file)
Binary files a/org.tizen.common.sign/lib/xmlsec-1.5.3.jar and b/org.tizen.common.sign/lib/xmlsec-1.5.3.jar differ
index fdef1f5..502ff36 100644 (file)
@@ -1,3 +1,29 @@
+/*
+ * Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: 
+ * Jihoon Song <jihoon80.song@samsung.com>
+ * BonYong Lee <bonyong.lee@samsung.com>
+ * Kangho Kim <kh5325.kim@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
 package org.tizen.common.sign;
 
 import static org.tizen.common.util.SWTUtil.syncExec;
index b2266af..344a814 100755 (executable)
@@ -26,9 +26,15 @@ package org.tizen.common.sign.command;
 
 import static org.tizen.common.util.IOUtil.tryClose;
 
+import hashsign.HashingSigning;
+
 import java.io.ByteArrayInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertificateException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -40,10 +46,12 @@ import org.tizen.common.core.command.AbstractCommand;
 import org.tizen.common.core.command.ExecutionContext;
 import org.tizen.common.core.command.Executor;
 import org.tizen.common.core.command.InputValidator;
+import org.tizen.common.core.command.PrompterConstants;
 import org.tizen.common.core.command.UserField;
 import org.tizen.common.file.FileHandler;
 import org.tizen.common.file.FileHandler.Attribute;
 import org.tizen.common.file.FileHandler.Type;
+import org.tizen.common.sign.exception.CertificationException;
 import org.tizen.common.sign.model.SignatureConstants;
 import org.tizen.common.sign.preferences.SigningProfileItem;
 import org.tizen.common.sign.util.SigningProfileUtil;
@@ -64,7 +72,6 @@ extends AbstractCommand<Object>
 
     protected List<SigningProfileItem> profileItems = new ArrayList<SigningProfileItem>();
 
-
     public ReadSigningProfileFileCommand( final String path, final String profileName )
     {
         this.path = path;
@@ -92,17 +99,71 @@ extends AbstractCommand<Object>
             this.profileItems = SigningProfileUtil.parseProfileFile( this.profileInputStream, this.profileName );
             
             interactForPassword( executor, context );
+            validateSigningInfo();
+            
         } finally {
             tryClose( this.profileInputStream );
             this.profileInputStream = null;
         }
     }
 
+    /**
+     * checking password<br>
+     * if wrong password or wrong certificate then throw exception
+     * 
+     * @param item - <code>SigningProfileItem</code> - item have certificate path and password
+     * @throws CertificationException - throw exception when invalid time
+     */
+    protected void checkPkcs12Password(SigningProfileItem item) throws CertificationException {
+        boolean isCorrectPassword = false;
+        
+        try {
+            String password = new String( item.getPassword() );
+            String path = item.getKeyLocation();
+            isCorrectPassword = HashingSigning.CheckPkcs12Password( path, password );
+        } catch (FileNotFoundException e) {
+            throw new CertificationException( "Certificate file not found", e );
+        } catch (NoSuchAlgorithmException e) {
+            throw new CertificationException( "Not supported certificate file format", e );
+        } catch (CertificateException e) {
+            throw new CertificationException( "Could not load a certificate for PKCS12 format", e );
+        } catch (KeyStoreException e) {
+            throw new CertificationException( "Could not find a keystore", e );
+        } catch (IOException e) {
+            throw new CertificationException( "Failed to manipulate a certificate", e );
+        }
+        
+        if ( !isCorrectPassword ) {
+            throw new CertificationException( "Invaild password" );
+        }
+    }
+
+    /*
+     * validate password, if inputed wrong password then throw CertificationException
+     */
+    protected void validateSigningInfo() throws CertificationException {
+        SigningProfileItem authorItem = getItem( true );
+        SigningProfileItem distributorItem = getItem( false );
+
+        boolean hasAuthor = isValidItem( authorItem );
+        boolean hasDistributor = isValidItem( distributorItem );
+
+        if ( hasAuthor ) {
+            // author password validating
+            checkPkcs12Password( authorItem );
+        }
+
+        if ( hasDistributor ) {
+            // distributor password validating
+            checkPkcs12Password( distributorItem );
+        }
+    }
+
     protected void interactForPassword(final Executor executor, final ExecutionContext context)
             throws Exception {
         SigningProfileItem authorItem = getItem( true );
         SigningProfileItem distributorItem = getItem( false );
-        
+
         boolean hasAuthor = isValidItem( authorItem );
         boolean hasDistributor = isValidItem( distributorItem );
         
@@ -113,9 +174,9 @@ extends AbstractCommand<Object>
         
         if ( ! authorItem.hasPassword() ||
                 ( hasDistributor && ! distributorItem.hasPassword() ) ) {
-            
+
             ArrayList<UserField> fieldList = new ArrayList<UserField>();
-            
+
             // Author password text
             UserField authorText = new UserField( SignatureConstants.AUTHOR, "Author password : ", char[].class );
             authorText.setValue( authorItem.getPassword() );
@@ -129,11 +190,11 @@ extends AbstractCommand<Object>
                 }
             } );
             fieldList.add( authorText );
-            
-            // Savable author password button 
+
+            // Savable author password button
             UserField authorButton = new UserField( "authorPwdSavable", "Save author password", boolean.class );
             fieldList.add( authorButton );
-            
+
             // Distributor password text
             UserField distributor2Text = new UserField( SignatureConstants.DISTRIBUTOR_2ND, "Distributor password : ", char[].class );
             if ( !hasDistributor ) {
@@ -153,7 +214,7 @@ extends AbstractCommand<Object>
             fieldList.add( distributor2Text );
             
             // Savable distributor2 password button
-            UserField distributor2Button = new UserField( "distributorPwdSavable", "Save author password", boolean.class );
+            UserField distributor2Button = new UserField( "distributorPwdSavable", "Save distributor password", boolean.class );
             if ( !hasDistributor ) {
                 distributor2Button.setModify( false );
             }
@@ -161,12 +222,11 @@ extends AbstractCommand<Object>
             
             // options
             Map<String, Object> options = new HashMap<String, Object>();
-            
+            options.put( PrompterConstants.OPTION_TITLE, "Signing Dialog" ); // title
             
             // Interact passwords
             context.getPrompter().batch( fieldList, options );
-            
-            
+
             // save profiles
             boolean saveAuthor = getBoolean( authorButton.getValue() );
             boolean saveDistributor = hasDistributor ? getBoolean( distributor2Button.getValue() ) : false;
index 91d3280..86c598c 100755 (executable)
@@ -41,6 +41,7 @@ import org.tizen.common.sign.preferences.SigningProfileItem;
 import org.tizen.common.sign.signer.TizenSigner;
 import org.tizen.common.sign.util.SignatureUtility;
 import org.tizen.common.util.Assert;
+import org.tizen.common.util.FileUtil;
 import org.tizen.common.util.StringUtil;
 
 
@@ -80,11 +81,10 @@ public class SignCommand extends FileHandlingCommand<Object> {
         Assert.notNull( handler );
         
         if ( !handler.is( this.path, Attribute.EXISTS ) ) {
-            logger.error( "{} doesn't exist", this.path );
-//            final Policy policy = context.getPolicy( Policy.NONEXIST_IN_PROJECT );
-//            final MessagePolicy messagePolicy = policy.adapt( MessagePolicy.class );
-//            
-//            messagePolicy.print( context.getPrompter(), "{0} doesn't exist", this.path );
+            final Policy policy = context.getPolicy( Policy.NONEXIST_IN_PROJECT );
+            final MessagePolicy messagePolicy = policy.adapt( MessagePolicy.class );
+            
+            messagePolicy.print( context.getPrompter(), "{0} doesn't exist", this.path );
             return ;
         }
         
@@ -96,12 +96,14 @@ public class SignCommand extends FileHandlingCommand<Object> {
         // remove old signatures
         for ( String child : handler.list( appDirPath ) ) {
             Object type = handler.get( child, Attribute.TYPE );
-            if ( Type.FILE.equals( type ) ) {
-                Object nameObj = handler.get( child, Attribute.NAME );
-                if ( nameObj instanceof String ) {
-                    String name = (String) nameObj;
-                    if ( SignatureUtility.isSignatureFile( name ) ) {
+            Object nameObj = handler.get( child, Attribute.NAME );
+            if ( Type.FILE.equals( type ) && nameObj instanceof String ) {
+                String name = (String) nameObj;
+                if ( SignatureUtility.isSignatureFile( name ) ) {
+                    try {
                         handler.removeFile( child );
+                    } catch (IOException e ) {
+                        logger.warn( "Cannot remove a file. Path : {}", child );
                     }
                 }
             }
index fc87332..987fb34 100644 (file)
@@ -81,12 +81,9 @@ public class DeltaListResource {
      * create a delta information file.
      * 
      * @param deltaInfoList list using {@link org.tizen.common.rds.RdsDeployer#getDelta() }
-     * @param targetPathMap In case of difference with current working relative paths,
-     *  will set a map of resources about the target directory.
-     *  If this is null or no have info, use a current working relative path.
      * @throws IOException
      */
-    public void createListResource(List<DeltaResourceInfo> deltaInfoList, Map<DeltaResourceInfo, String> targetPathMap) throws IOException {
+    public void createListResource(List<DeltaResourceInfo> deltaInfoList) throws IOException {
         Assert.notNull( deltaInfoList );
         
         logger.info( "create delta list for RDS" );
@@ -124,8 +121,10 @@ public class DeltaListResource {
                 strBuilder.append( DELIMETER );
                 
                 // ex. "def/ghi.jkl"
-                if ( targetPathMap != null && targetPathMap.containsKey( deltaInfo ) ) {
-                    strBuilder.append( targetPathMap.get( deltaInfo ) );
+                String remotePath = deltaInfo.getRemotePath();
+                if ( remotePath != null ) {
+                    IPath relRemotePath = new Path( deltaInfo.getRemotePath() ).makeRelative();
+                    strBuilder.append( relRemotePath.toPortableString() );
                 } else {
                     // default relative path
                     strBuilder.append( relativePath.toString() );
@@ -142,24 +141,10 @@ public class DeltaListResource {
         }
     }
     
-    /**
-     * create a delta information file.
-     * 
-     * @param deltaInfoList list using {@link org.tizen.common.rds.RdsDeployer#getDelta() }
-     * @throws IOException
-     */
-    public void createListResource(List<DeltaResourceInfo> deltaInfoList) throws IOException {
-        createListResource( deltaInfoList, null );
-    }
-    
     protected boolean checkValidPath(IPath path) {
         Assert.notNull( path );
         
-        // if the parent path is not equalled
         String firstSegment = path.segment( 0 );
-        if ( "..".equals( firstSegment ) ) {
-            return false;
-        }
         
         // if hidden resource
         String name = path.lastSegment();
diff --git a/org.tizen.common.ui/.classpath b/org.tizen.common.ui/.classpath
new file mode 100644 (file)
index 0000000..ad32c83
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+       <classpathentry kind="src" path="src"/>
+       <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.tizen.common.ui/.project b/org.tizen.common.ui/.project
new file mode 100644 (file)
index 0000000..8cc1453
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>org.tizen.common.ui</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.ManifestBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.SchemaBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.pde.PluginNature</nature>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>
diff --git a/org.tizen.common.ui/.settings/org.eclipse.jdt.core.prefs b/org.tizen.common.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644 (file)
index 0000000..c537b63
--- /dev/null
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/org.tizen.common.ui/META-INF/MANIFEST.MF b/org.tizen.common.ui/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..6d9b82d
--- /dev/null
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.tizen.common.ui;singleton:=true
+Bundle-Version: 2.0.0.qualifier
+Bundle-Activator: org.tizen.common.ui.Activator
+Bundle-Vendor: %Bundle-Vendor
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.tizen.common
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/org.tizen.common.ui/OSGI-INF/l10n/bundle.properties b/org.tizen.common.ui/OSGI-INF/l10n/bundle.properties
new file mode 100644 (file)
index 0000000..a41fe4c
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-Vendor = The Linux Foundation
+Bundle-Name = Tizen Common UI
diff --git a/org.tizen.common.ui/build.properties b/org.tizen.common.ui/build.properties
new file mode 100644 (file)
index 0000000..660d08d
--- /dev/null
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               OSGI-INF/,\
+               plugin.xml,\
+               icons/
diff --git a/org.tizen.common.ui/icons/16_TIZEN_SDK_icon.png b/org.tizen.common.ui/icons/16_TIZEN_SDK_icon.png
new file mode 100644 (file)
index 0000000..1b75de1
Binary files /dev/null and b/org.tizen.common.ui/icons/16_TIZEN_SDK_icon.png differ
diff --git a/org.tizen.common.ui/plugin.xml b/org.tizen.common.ui/plugin.xml
new file mode 100644 (file)
index 0000000..4772cbd
--- /dev/null
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<?eclipse version="3.4"?>\r
+<plugin>\r
+   <extension\r
+         point="org.eclipse.ui.commands">\r
+      <category\r
+            id="org.tizen.common.ui.category"\r
+            name="Tizen SDK">\r
+      </category>\r
+      <command\r
+            categoryId="org.tizen.common.ui.category"\r
+            defaultHandler="org.tizen.common.ui.commands.DownloadCardCommandHandler"\r
+            description="Download keyboard shortcuts in PDF"\r
+            id="org.tizen.common.ui.command.downloadcard"\r
+            name="Keyboard Shortcuts">\r
+      </command>\r
+      <command\r
+            categoryId="org.tizen.common.ui.category"\r
+            defaultHandler="org.tizen.common.ui.commands.TizenWebCommandHandler"\r
+            description="Show official Tizen web site"\r
+            id="org.tizen.common.ui.command.tizenweb"\r
+            name="Tizen Web Site">\r
+      </command>\r
+   </extension>\r
+   <extension\r
+         point="org.eclipse.ui.menus">\r
+      <menuContribution\r
+            locationURI="menu:help?before=helpEnd">\r
+         <menu\r
+               icon="icons/16_TIZEN_SDK_icon.png"\r
+               id="tizensdkhelp"\r
+               label="Tizen SDK">\r
+            <command\r
+                  commandId="org.tizen.common.ui.command.downloadcard"\r
+                  style="push">\r
+            </command>\r
+            <command\r
+                  commandId="org.tizen.common.ui.command.tizenweb"\r
+                  style="push">\r
+            </command>\r
+         </menu>\r
+         <separator\r
+               name="helpSep"\r
+               visible="true">\r
+         </separator>\r
+      </menuContribution>\r
+   </extension>
+</plugin>\r
diff --git a/org.tizen.common.ui/src/org/tizen/common/ui/Activator.java b/org.tizen.common.ui/src/org/tizen/common/ui/Activator.java
new file mode 100644 (file)
index 0000000..df21a0a
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * Shingil Kang <shingil.kang@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.common.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+    // The plug-in ID
+    public static final String PLUGIN_ID = "org.tizen.common.ui"; //$NON-NLS-1$
+
+    // The shared instance
+    private static Activator plugin;
+
+    /**
+     * The constructor
+     */
+    public Activator() {
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+     */
+    public void start(BundleContext context) throws Exception {
+        super.start(context);
+        plugin = this;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+     */
+    public void stop(BundleContext context) throws Exception {
+        plugin = null;
+        super.stop(context);
+    }
+
+    /**
+     * Returns the shared instance
+     *
+     * @return the shared instance
+     */
+    public static Activator getDefault() {
+        return plugin;
+    }
+}
diff --git a/org.tizen.common.ui/src/org/tizen/common/ui/commands/DownloadCardCommandHandler.java b/org.tizen.common.ui/src/org/tizen/common/ui/commands/DownloadCardCommandHandler.java
new file mode 100644 (file)
index 0000000..638286b
--- /dev/null
@@ -0,0 +1,56 @@
+/*\r
+ * Common\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact:\r
+ * Shingil Kang <shingil.kang@samsung.com>\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ * Contributors:\r
+ * - S-Core Co., Ltd\r
+ *\r
+ */\r
+\r
+package org.tizen.common.ui.commands;\r
+\r
+import java.awt.Desktop;\r
+import java.io.File;\r
+import java.io.IOException;\r
+\r
+import org.eclipse.core.commands.AbstractHandler;\r
+import org.eclipse.core.commands.ExecutionEvent;\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+import org.tizen.common.core.application.InstallPathConfig;\r
+\r
+public class DownloadCardCommandHandler extends AbstractHandler {\r
+    final Logger logger = LoggerFactory.getLogger(DownloadCardCommandHandler.class);\r
+    final String pdfFileName = "shortcuts.pdf";\r
+    final String pdfFilePath = InstallPathConfig.getDocumentsPath() + File.separator + pdfFileName;\r
+\r
+    @Override\r
+    public Object execute(ExecutionEvent event) throws ExecutionException {\r
+        File pdfFile = new File(pdfFilePath);\r
+        try {\r
+            Desktop.getDesktop().open(pdfFile);\r
+        } catch (IOException e) {\r
+            // fallback\r
+            logger.error("Failed to open a file " + pdfFile, e);\r
+        }\r
+        return null;\r
+    }\r
+}\r
diff --git a/org.tizen.common.ui/src/org/tizen/common/ui/commands/TizenWebCommandHandler.java b/org.tizen.common.ui/src/org/tizen/common/ui/commands/TizenWebCommandHandler.java
new file mode 100644 (file)
index 0000000..41b9793
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * Shingil Kang <shingil.kang@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.common.ui.commands;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.swt.widgets.Display;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.tizen.common.util.OpenBrowserUtil;
+import org.tizen.common.util.SWTUtil;
+
+public class TizenWebCommandHandler extends AbstractHandler {
+    final Logger logger = LoggerFactory.getLogger(TizenWebCommandHandler.class);
+    final String tizenWebAddress = "https://www.tizen.org";
+
+    @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
+        Display display = SWTUtil.getDisplay();
+        try {
+            URL url = new URL(tizenWebAddress);
+            OpenBrowserUtil.open(url, display);
+        } catch (MalformedURLException e) {
+            // fallback
+            logger.error("A malformed URL was used" , e);
+        }
+        return null;
+    }
+}
\ No newline at end of file
index 649f43d..c35751c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/$${WidgetID|"WidgetID"}" version="1.0.0" viewmodes="maximized">
-    <tizen:application id="$@{APPID=APPLICATIONID()}.$${WidgetID|"WidgetID"}" package="$${APPID}" required_version="1.0"/>
+    <tizen:application id="$@{APPID=APPLICATIONID()}.$${WidgetID|"WidgetID"}" package="$${APPID}" required_version="2.1"/>
     <content src="index.html"/>
     <icon src="icon.png"/>
     <name>$${WidgetID|"WidgetID"}</name>
index 983c883..647c3f9 100644 (file)
Binary files a/org.tizen.common.verrari/templates/cli/common-resources/icon.png and b/org.tizen.common.verrari/templates/cli/common-resources/icon.png differ
index cead747..c3c4ee1 100644 (file)
@@ -3,7 +3,7 @@ $$include{"head.template"}
 <body>
 
 <div data-role="page" class="type-interior" data-theme="$${JQMTheme|'c'}">
-    <div data-role="header" data-theme="$${JQMTheme|'a'}">
+    <div data-role="header" data-theme="$${JQMTheme|'a'}" data-position="fixed">
         <h1>Master-Detail Application</h1>
         <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home">Home</a>
     </div><!-- /header -->
index 52a2e06..73ff6cb 100644 (file)
@@ -3,7 +3,7 @@ $$include{"head.template"}
 <body>
 
 <div data-role="page" class="type-interior" data-theme="$${JQMTheme|'c'}">
-    <div data-role="header" data-theme="$${JQMTheme|'a'}">
+    <div data-role="header" data-theme="$${JQMTheme|'a'}" data-position="fixed">
         <h1>Master-Detail Application</h1>
         <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home">Home</a>
     </div><!-- /header -->
index e198e70..c536266 100644 (file)
@@ -3,7 +3,7 @@ $$include{"head.template"}
 <body>
 
 <div data-role="page" class="type-interior" data-theme="$${JQMTheme|'c'}">
-    <div data-role="header" data-theme="$${JQMTheme|'a'}">
+    <div data-role="header" data-theme="$${JQMTheme|'a'}" data-position="fixed">
         <h1>Master-Detail Application</h1>
         <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home">Home</a>
     </div><!-- /header -->
index c2a21c0..f5d3be2 100644 (file)
@@ -4,7 +4,7 @@ $$include{"head.template"}
 
 <!-- Start of first page: #one -->
 <div data-role="page" id="one" data-theme="$${JQMTheme|'c'}">
-    <div data-role="header" data-theme="$${JQMTheme|'a'}">
+    <div data-role="header" data-theme="$${JQMTheme|'a'}" data-position="fixed">
         <h1>Multi-Page Application</h1>
     </div><!-- /header -->
 
index 4d1d526..fcd5cee 100644 (file)
@@ -3,7 +3,7 @@ $$include{"head.template"}
 <body>
 
 <div data-role="page" id="foo" data-position="fixed" data-theme="$${JQMTheme|'c'}">
-    <div data-role="header" data-theme="$${JQMTheme|'a'}">
+    <div data-role="header" data-theme="$${JQMTheme|'a'}" data-position="fixed">
         <h1>Navigation Application</h1>
     </div><!-- /header -->
 
index f81cda4..6bce4c1 100644 (file)
@@ -3,7 +3,7 @@ $$include{"head.template"}
 <body>
 
 <div data-role="page" data-theme="$${JQMTheme|'c'}">
-    <div data-role="header" data-theme="$${JQMTheme|'a'}">
+    <div data-role="header" data-theme="$${JQMTheme|'a'}" data-position="fixed">
         <h1>Single-Page Application </h1>
     </div><!-- /header -->
 
index 983c883..647c3f9 100644 (file)
Binary files a/org.tizen.common.verrari/templates/cli/tizen-basic/images/tizen_32.png and b/org.tizen.common.verrari/templates/cli/tizen-basic/images/tizen_32.png differ
index fc95f28..93eab15 100644 (file)
@@ -23,12 +23,11 @@ $$include{"head.template"}
       <img src="images/tizen_32.png" /> Application Name
     </h1>
   </header>
-  <p>This is an empty template of Tizen Web Application. Tizen will support multiple device categories:
-    <ul>
-      <li>smartphones, tablets and smart TVs
-      <li>netbooks, in-vehicle infotainment devices
-    </ul>
-  </p>
+  <p>This is an empty template of Tizen Web Application. Tizen will support multiple device categories:</p>
+  <ul>
+    <li>smartphones, tablets and smart TVs
+    <li>netbooks, in-vehicle infotainment devices
+  </ul>
   <section>
     <p>This is a basic section of a document.</p>
     <p>The following button displays a time using JavaScript.</p>
index 7575c4f..62b2e69 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/$${WidgetID|"WidgetID"}" version="1.0.0" viewmodes="maximized">
-    <tizen:application id="$@{APPID=APPLICATIONID()}.$${WidgetID|"WidgetID"}" package="$${APPID}" required_version="1.0"/>
+    <tizen:application id="$@{APPID=APPLICATIONID()}.$${WidgetID|"WidgetID"}" package="$${APPID}" required_version="2.1"/>
     <content src="index.html"/>
     <tizen:privilege name="http://tizen.org/privilege/application.launch"/>
     <icon src="icon.png"/>
index 983c883..647c3f9 100644 (file)
Binary files a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/icon.png and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/icon.png differ
index a0a22dd..b60e76a 100644 (file)
                "group": "Events",
                "description": "Orientation change event"
        },
+       "jquery.mobile.tizen.pinch": {
+               "basedir": "/home/blueisle/playground/web/tizen/web-ui-fw.release/build/tizen-web-ui-fw/0.2/js/src",
+               "path": "jquery.mobile.tizen.pinch.js",
+               "name": "jquery.mobile.tizen.pinch",
+               "depends": [
+                       "jquery.mobile.core"
+               ],
+               "label": "Tizen core",
+               "group": "Tizen:Core",
+               "description": "Tizen core library"
+       },
        "jquery.mobile.define": {
                "basedir": "/home/blueisle/playground/web/tizen/web-ui-fw.release/build/tizen-web-ui-fw/0.2/js/src",
                "path": "jquery.mobile.define.js",
                        "widgets/components/motionpath",
                        "widgets/components/webgl"
                ],
-               "label": "//>>label: Gallery3d",
-               "group": "//>>group: Tizen:Widgets",
-               "description": "//>>description: 3D photo gallery widget."
+               "label": "Gallery3d",
+               "group": "Tizen:Widgets",
+               "description": "3D photo gallery widget."
        },
        "widgets/jquery.mobile.tizen.multimediaview": {
                "basedir": "/home/blueisle/playground/web/tizen/web-ui-fw.release/build/tizen-web-ui-fw/0.2/js/src",
                "path": "widgets/components/imageloader.js",
                "name": "widgets/components/imageloader",
                "depends": [],
-               "label": "//>>label: Image loader",
-               "group": "//>>group: Tizen:Widgets:Components",
-               "description": "//>>description: Tizen image loader component for gallery3d"
+               "label": "Image loader",
+               "group": "Tizen:Widgets:Components",
+               "description": "Tizen image loader component for gallery3d"
        },
        "widgets/components/motionpath": {
                "basedir": "/home/blueisle/playground/web/tizen/web-ui-fw.release/build/tizen-web-ui-fw/0.2/js/src",
                "path": "widgets/components/motionpath.js",
                "name": "widgets/components/motionpath",
                "depends": [],
-               "label": "//>>label: Motion path",
-               "group": "//>>group: Tizen:Widgets:Components",
-               "description": "//>>description: Tizen motion path component for gallery3d"
+               "label": "Motion path",
+               "group": "Tizen:Widgets:Components",
+               "description": "Tizen motion path component for gallery3d"
        },
        "widgets/components/webgl": {
                "basedir": "/home/blueisle/playground/web/tizen/web-ui-fw.release/build/tizen-web-ui-fw/0.2/js/src",
                "path": "widgets/components/webgl.js",
                "name": "widgets/components/webgl",
                "depends": [],
-               "label": "//>>label: WebGL",
-               "group": "//>>group: Tizen:Widgets:Lib",
-               "description": "//>>description: Tizen WebGL component for gallery3d"
+               "label": "WebGL",
+               "group": "Tizen:Widgets:Lib",
+               "description": "Tizen WebGL component for gallery3d"
        },
        "widgets/jquery.mobile.tizen.popupwindow": {
                "basedir": "/home/blueisle/playground/web/tizen/web-ui-fw.release/build/tizen-web-ui-fw/0.2/js/src",
index 93f235c..0b374ba 100644 (file)
@@ -60,7 +60,8 @@
                setup: function() {
                        // If the event is supported natively, return false so that jQuery
                        // will bind to the event using DOM methods.
-                       if ( $.support.orientation && !$.event.special.orientationchange.disabled ) {
+                       if ( $.support.orientation && 
+                               $.event.special.orientationchange.disabled === false ) {
                                return false;
                        }
 
index 64ea296..530d847 100644 (file)
                        if ( !settings.reloadPage ) {
                                enhancePage( page, settings.role );
                                deferred.resolve( absUrl, options, page );
+                               //if we are reloading the page make sure we update the base if its not a prefetch
+                               if( base && !options.prefetch ){
+                                       base.set(url);
+                               }
                                return deferred.promise();
                        }
                        dupCachedPage = page;
                }
 
                // Reset base to the default document base.
-               if ( base ) {
+               // only reset if we are not prefetching
+               if ( base && typeof options.prefetch === "undefined" ) {
                        base.reset();
                }
 
                                                url = fileUrl = path.getFilePath( $( "<div>" + RegExp.$1 + "</div>" ).text() );
                                        }
 
-                                       if ( base ) {
+                                       //dont update the base tag if we are prefetching
+                                       if ( base && typeof options.prefetch === "undefined") {
                                                base.set( fileUrl );
                                        }
 
                                if ( url && $.inArray( url, urls ) === -1 ) {
                                        urls.push( url );
 
-                                       $.mobile.loadPage( url, { role: $link.attr( "data-" + $.mobile.ns + "rel" ) } );
+                                       $.mobile.loadPage( url, { role: $link.attr( "data-" + $.mobile.ns + "rel" ),prefetch: true } );
                                }
                        });
                });
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/jquery.mobile.navigation.js.orig b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/jquery.mobile.navigation.js.orig
new file mode 100644 (file)
index 0000000..0be7861
--- /dev/null
@@ -0,0 +1,1549 @@
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+//>>description: Applies the AJAX navigation system to links and forms to enable page transitions
+//>>label: AJAX Navigation System
+//>>group: Navigation
+
+define( [
+       "jquery",
+       "./jquery.mobile.core",
+       "./jquery.mobile.events",
+       "./jquery.mobile.support",
+       "depend!./jquery.hashchange[jquery]",
+       "./widgets/page",
+       "./jquery.mobile.transition" ], function( $ ) {
+//>>excludeEnd("jqmBuildExclude");
+(function( $, undefined ) {
+
+       //define vars for interal use
+       var $window = $.mobile.$window,
+               $html = $( 'html' ),
+               $head = $( 'head' ),
+
+               //url path helpers for use in relative url management
+               path = {
+
+                       // This scary looking regular expression parses an absolute URL or its relative
+                       // variants (protocol, site, document, query, and hash), into the various
+                       // components (protocol, host, path, query, fragment, etc that make up the
+                       // URL as well as some other commonly used sub-parts. When used with RegExp.exec()
+                       // or String.match, it parses the URL into a results array that looks like this:
+                       //
+                       //     [0]: http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread#msg-content
+                       //     [1]: http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread
+                       //     [2]: http://jblas:password@mycompany.com:8080/mail/inbox
+                       //     [3]: http://jblas:password@mycompany.com:8080
+                       //     [4]: http:
+                       //     [5]: //
+                       //     [6]: jblas:password@mycompany.com:8080
+                       //     [7]: jblas:password
+                       //     [8]: jblas
+                       //     [9]: password
+                       //    [10]: mycompany.com:8080
+                       //    [11]: mycompany.com
+                       //    [12]: 8080
+                       //    [13]: /mail/inbox
+                       //    [14]: /mail/
+                       //    [15]: inbox
+                       //    [16]: ?msg=1234&type=unread
+                       //    [17]: #msg-content
+                       //
+                       urlParseRE: /^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,
+
+                       // Abstraction to address xss (Issue #4787) by removing the authority in
+                       // browsers that auto   decode it. All references to location.href should be
+                       // replaced with a call to this method so that it can be dealt with properly here
+                       getLocation: function( url ) {
+                               var uri = url ? this.parseUrl( url ) : location,
+                                       hash = this.parseUrl( url || location.href ).hash;
+
+                               // mimic the browser with an empty string when the hash is empty
+                               hash = hash === "#" ? "" : hash;
+
+                               // Make sure to parse the url or the location object for the hash because using location.hash
+                               // is autodecoded in firefox, the rest of the url should be from the object (location unless
+                               // we're testing) to avoid the inclusion of the authority
+                               return uri.protocol + "//" + uri.host + uri.pathname + uri.search + hash;
+                       },
+
+                       parseLocation: function() {
+                               return this.parseUrl( this.getLocation() );
+                       },
+
+                       //Parse a URL into a structure that allows easy access to
+                       //all of the URL components by name.
+                       parseUrl: function( url ) {
+                               // If we're passed an object, we'll assume that it is
+                               // a parsed url object and just return it back to the caller.
+                               if ( $.type( url ) === "object" ) {
+                                       return url;
+                               }
+
+                               var matches = path.urlParseRE.exec( url || "" ) || [];
+
+                                       // Create an object that allows the caller to access the sub-matches
+                                       // by name. Note that IE returns an empty string instead of undefined,
+                                       // like all other browsers do, so we normalize everything so its consistent
+                                       // no matter what browser we're running on.
+                                       return {
+                                               href:         matches[  0 ] || "",
+                                               hrefNoHash:   matches[  1 ] || "",
+                                               hrefNoSearch: matches[  2 ] || "",
+                                               domain:       matches[  3 ] || "",
+                                               protocol:     matches[  4 ] || "",
+                                               doubleSlash:  matches[  5 ] || "",
+                                               authority:    matches[  6 ] || "",
+                                               username:     matches[  8 ] || "",
+                                               password:     matches[  9 ] || "",
+                                               host:         matches[ 10 ] || "",
+                                               hostname:     matches[ 11 ] || "",
+                                               port:         matches[ 12 ] || "",
+                                               pathname:     matches[ 13 ] || "",
+                                               directory:    matches[ 14 ] || "",
+                                               filename:     matches[ 15 ] || "",
+                                               search:       matches[ 16 ] || "",
+                                               hash:         matches[ 17 ] || ""
+                                       };
+                       },
+
+                       //Turn relPath into an asbolute path. absPath is
+                       //an optional absolute path which describes what
+                       //relPath is relative to.
+                       makePathAbsolute: function( relPath, absPath ) {
+                               if ( relPath && relPath.charAt( 0 ) === "/" ) {
+                                       return relPath;
+                               }
+
+                               relPath = relPath || "";
+                               absPath = absPath ? absPath.replace( /^\/|(\/[^\/]*|[^\/]+)$/g, "" ) : "";
+
+                               var absStack = absPath ? absPath.split( "/" ) : [],
+                                       relStack = relPath.split( "/" );
+                               for ( var i = 0; i < relStack.length; i++ ) {
+                                       var d = relStack[ i ];
+                                       switch ( d ) {
+                                               case ".":
+                                                       break;
+                                               case "..":
+                                                       if ( absStack.length ) {
+                                                               absStack.pop();
+                                                       }
+                                                       break;
+                                               default:
+                                                       absStack.push( d );
+                                                       break;
+                                       }
+                               }
+                               return "/" + absStack.join( "/" );
+                       },
+
+                       //Returns true if both urls have the same domain.
+                       isSameDomain: function( absUrl1, absUrl2 ) {
+                               return path.parseUrl( absUrl1 ).domain === path.parseUrl( absUrl2 ).domain;
+                       },
+
+                       //Returns true for any relative variant.
+                       isRelativeUrl: function( url ) {
+                               // All relative Url variants have one thing in common, no protocol.
+                               return path.parseUrl( url ).protocol === "";
+                       },
+
+                       //Returns true for an absolute url.
+                       isAbsoluteUrl: function( url ) {
+                               return path.parseUrl( url ).protocol !== "";
+                       },
+
+                       //Turn the specified realtive URL into an absolute one. This function
+                       //can handle all relative variants (protocol, site, document, query, fragment).
+                       makeUrlAbsolute: function( relUrl, absUrl ) {
+                               if ( !path.isRelativeUrl( relUrl ) ) {
+                                       return relUrl;
+                               }
+
+                               if ( absUrl === undefined ) {
+                                       absUrl = documentBase;
+                               }
+
+                               var relObj = path.parseUrl( relUrl ),
+                                       absObj = path.parseUrl( absUrl ),
+                                       protocol = relObj.protocol || absObj.protocol,
+                                       doubleSlash = relObj.protocol ? relObj.doubleSlash : ( relObj.doubleSlash || absObj.doubleSlash ),
+                                       authority = relObj.authority || absObj.authority,
+                                       hasPath = relObj.pathname !== "",
+                                       pathname = path.makePathAbsolute( relObj.pathname || absObj.filename, absObj.pathname ),
+                                       search = relObj.search || ( !hasPath && absObj.search ) || "",
+                                       hash = relObj.hash;
+
+                               return protocol + doubleSlash + authority + pathname + search + hash;
+                       },
+
+                       //Add search (aka query) params to the specified url.
+                       addSearchParams: function( url, params ) {
+                               var u = path.parseUrl( url ),
+                                       p = ( typeof params === "object" ) ? $.param( params ) : params,
+                                       s = u.search || "?";
+                               return u.hrefNoSearch + s + ( s.charAt( s.length - 1 ) !== "?" ? "&" : "" ) + p + ( u.hash || "" );
+                       },
+
+                       convertUrlToDataUrl: function( absUrl ) {
+                               var u = path.parseUrl( absUrl );
+                               if ( path.isEmbeddedPage( u ) ) {
+                                       // For embedded pages, remove the dialog hash key as in getFilePath(),
+                                       // otherwise the Data Url won't match the id of the embedded Page.
+                                       return u.hash.split( dialogHashKey )[0].replace( /^#/, "" );
+                               } else if ( path.isSameDomain( u, documentBase ) ) {
+                                       return u.hrefNoHash.replace( documentBase.domain, "" ).split( dialogHashKey )[0];
+                               }
+
+                               return window.decodeURIComponent(absUrl);
+                       },
+
+                       //get path from current hash, or from a file path
+                       get: function( newPath ) {
+                               if ( newPath === undefined ) {
+                                       newPath = path.parseLocation().hash;
+                               }
+                               return path.stripHash( newPath ).replace( /[^\/]*\.[^\/*]+$/, '' );
+                       },
+
+                       //return the substring of a filepath before the sub-page key, for making a server request
+                       getFilePath: function( path ) {
+                               var splitkey = '&' + $.mobile.subPageUrlKey;
+                               return path && path.split( splitkey )[0].split( dialogHashKey )[0];
+                       },
+
+                       //set location hash to path
+                       set: function( path ) {
+                               location.hash = path;
+                       },
+
+                       //test if a given url (string) is a path
+                       //NOTE might be exceptionally naive
+                       isPath: function( url ) {
+                               return ( /\// ).test( url );
+                       },
+
+                       //return a url path with the window's location protocol/hostname/pathname removed
+                       clean: function( url ) {
+                               return url.replace( documentBase.domain, "" );
+                       },
+
+                       //just return the url without an initial #
+                       stripHash: function( url ) {
+                               return url.replace( /^#/, "" );
+                       },
+
+                       //remove the preceding hash, any query params, and dialog notations
+                       cleanHash: function( hash ) {
+                               return path.stripHash( hash.replace( /\?.*$/, "" ).replace( dialogHashKey, "" ) );
+                       },
+
+                       isHashValid: function( hash ) {
+                               return ( /^#[^#]+$/ ).test( hash );
+                       },
+
+                       //check whether a url is referencing the same domain, or an external domain or different protocol
+                       //could be mailto, etc
+                       isExternal: function( url ) {
+                               var u = path.parseUrl( url );
+                               return u.protocol && u.domain !== documentUrl.domain ? true : false;
+                       },
+
+                       hasProtocol: function( url ) {
+                               return ( /^(:?\w+:)/ ).test( url );
+                       },
+
+                       //check if the specified url refers to the first page in the main application document.
+                       isFirstPageUrl: function( url ) {
+                               // We only deal with absolute paths.
+                               var u = path.parseUrl( path.makeUrlAbsolute( url, documentBase ) ),
+
+                                       // Does the url have the same path as the document?
+                                       samePath = u.hrefNoHash === documentUrl.hrefNoHash || ( documentBaseDiffers && u.hrefNoHash === documentBase.hrefNoHash ),
+
+                                       // Get the first page element.
+                                       fp = $.mobile.firstPage,
+
+                                       // Get the id of the first page element if it has one.
+                                       fpId = fp && fp[0] ? fp[0].id : undefined;
+
+                                       // The url refers to the first page if the path matches the document and
+                                       // it either has no hash value, or the hash is exactly equal to the id of the
+                                       // first page element.
+                                       return samePath && ( !u.hash || u.hash === "#" || ( fpId && u.hash.replace( /^#/, "" ) === fpId ) );
+                       },
+
+                       isEmbeddedPage: function( url ) {
+                               var u = path.parseUrl( url );
+
+                               //if the path is absolute, then we need to compare the url against
+                               //both the documentUrl and the documentBase. The main reason for this
+                               //is that links embedded within external documents will refer to the
+                               //application document, whereas links embedded within the application
+                               //document will be resolved against the document base.
+                               if ( u.protocol !== "" ) {
+                                       return ( u.hash && ( u.hrefNoHash === documentUrl.hrefNoHash || ( documentBaseDiffers && u.hrefNoHash === documentBase.hrefNoHash ) ) );
+                               }
+                               return ( /^#/ ).test( u.href );
+                       },
+
+
+                       // Some embedded browsers, like the web view in Phone Gap, allow cross-domain XHR
+                       // requests if the document doing the request was loaded via the file:// protocol.
+                       // This is usually to allow the application to "phone home" and fetch app specific
+                       // data. We normally let the browser handle external/cross-domain urls, but if the
+                       // allowCrossDomainPages option is true, we will allow cross-domain http/https
+                       // requests to go through our page loading logic.
+                       isPermittedCrossDomainRequest: function( docUrl, reqUrl ) {
+                               return $.mobile.allowCrossDomainPages &&
+                                       docUrl.protocol === "file:" &&
+                                       reqUrl.search( /^https?:/ ) !== -1;
+                       }
+               },
+
+               //will be defined when a link is clicked and given an active class
+               $activeClickedLink = null,
+
+               //urlHistory is purely here to make guesses at whether the back or forward button was clicked
+               //and provide an appropriate transition
+               urlHistory = {
+                       // Array of pages that are visited during a single page load.
+                       // Each has a url and optional transition, title, and pageUrl (which represents the file path, in cases where URL is obscured, such as dialogs)
+                       stack: [],
+
+                       //maintain an index number for the active page in the stack
+                       activeIndex: 0,
+
+                       //get active
+                       getActive: function() {
+                               return urlHistory.stack[ urlHistory.activeIndex ];
+                       },
+
+                       getPrev: function() {
+                               return urlHistory.stack[ urlHistory.activeIndex - 1 ];
+                       },
+
+                       getNext: function() {
+                               return urlHistory.stack[ urlHistory.activeIndex + 1 ];
+                       },
+
+                       // addNew is used whenever a new page is added
+                       addNew: function( url, transition, title, pageUrl, role ) {
+                               //if there's forward history, wipe it
+                               if ( urlHistory.getNext() ) {
+                                       urlHistory.clearForward();
+                               }
+
+                               urlHistory.stack.push( {url : url, transition: transition, title: title, pageUrl: pageUrl, role: role } );
+
+                               urlHistory.activeIndex = urlHistory.stack.length - 1;
+                       },
+
+                       //wipe urls ahead of active index
+                       clearForward: function() {
+                               urlHistory.stack = urlHistory.stack.slice( 0, urlHistory.activeIndex + 1 );
+                       },
+
+                       directHashChange: function( opts ) {
+                               var back , forward, newActiveIndex, prev = this.getActive();
+
+                               // check if url is in history and if it's ahead or behind current page
+                               $.each( urlHistory.stack, function( i, historyEntry ) {
+
+                                       //if the url is in the stack, it's a forward or a back
+                                       if ( decodeURIComponent( opts.currentUrl ) === decodeURIComponent( historyEntry.url ) ) {
+                                               //define back and forward by whether url is older or newer than current page
+                                               back = i < urlHistory.activeIndex;
+                                               forward = !back;
+                                               newActiveIndex = i;
+                                       }
+                               });
+
+                               // save new page index, null check to prevent falsey 0 result
+                               this.activeIndex = newActiveIndex !== undefined ? newActiveIndex : this.activeIndex;
+
+                               if ( back ) {
+                                       ( opts.either || opts.isBack )( true );
+                               } else if ( forward ) {
+                                       ( opts.either || opts.isForward )( false );
+                               }
+                       },
+
+                       //disable hashchange event listener internally to ignore one change
+                       //toggled internally when location.hash is updated to match the url of a successful page load
+                       ignoreNextHashChange: false
+               },
+
+               //define first selector to receive focus when a page is shown
+               focusable = "[tabindex],a,button:visible,select:visible,input",
+
+               //queue to hold simultanious page transitions
+               pageTransitionQueue = [],
+
+               //indicates whether or not page is in process of transitioning
+               isPageTransitioning = false,
+
+               //nonsense hash change key for dialogs, so they create a history entry
+               dialogHashKey = "&ui-state=dialog",
+
+               //existing base tag?
+               $base = $head.children( "base" ),
+
+               //tuck away the original document URL minus any fragment.
+               documentUrl = path.parseLocation(),
+
+               //if the document has an embedded base tag, documentBase is set to its
+               //initial value. If a base tag does not exist, then we default to the documentUrl.
+               documentBase = $base.length ? path.parseUrl( path.makeUrlAbsolute( $base.attr( "href" ), documentUrl.href ) ) : documentUrl,
+
+               //cache the comparison once.
+               documentBaseDiffers = ( documentUrl.hrefNoHash !== documentBase.hrefNoHash ),
+
+               getScreenHeight = $.mobile.getScreenHeight;
+
+               //base element management, defined depending on dynamic base tag support
+               var base = $.support.dynamicBaseTag ? {
+
+                       //define base element, for use in routing asset urls that are referenced in Ajax-requested markup
+                       element: ( $base.length ? $base : $( "<base>", { href: documentBase.hrefNoHash } ).prependTo( $head ) ),
+
+                       //set the generated BASE element's href attribute to a new page's base path
+                       set: function( href ) {
+                               base.element.attr( "href", path.makeUrlAbsolute( href, documentBase ) );
+                       },
+
+                       //set the generated BASE element's href attribute to a new page's base path
+                       reset: function() {
+                               base.element.attr( "href", documentBase.hrefNoHash );
+                       }
+
+               } : undefined;
+
+       /* internal utility functions */
+
+       // NOTE Issue #4950 Android phonegap doesn't navigate back properly
+       //      when a full page refresh has taken place. It appears that hashchange
+       //      and replacestate history alterations work fine but we need to support
+       //      both forms of history traversal in our code that uses backward history
+       //      movement
+       $.mobile.back = function() {
+               var nav = window.navigator;
+
+               // if the setting is on and the navigator object is
+               // available use the phonegap navigation capability
+               if( this.phonegapNavigationEnabled &&
+                       nav &&
+                       nav.app &&
+                       nav.app.backHistory ){
+                       nav.app.backHistory();
+               } else {
+                       window.history.back();
+               }
+       };
+
+       //direct focus to the page title, or otherwise first focusable element
+       $.mobile.focusPage = function ( page ) {
+               var autofocus = page.find( "[autofocus]" ),
+                       pageTitle = page.find( ".ui-title:eq(0)" );
+
+               if ( autofocus.length ) {
+                       autofocus.focus();
+                       return;
+               }
+
+               if ( pageTitle.length ) {
+                       pageTitle.focus();
+               } else{
+                       page.focus();
+               }
+       };
+
+       //remove active classes after page transition or error
+       function removeActiveLinkClass( forceRemoval ) {
+               if ( !!$activeClickedLink && ( !$activeClickedLink.closest( "." + $.mobile.activePageClass ).length || forceRemoval ) ) {
+                       $activeClickedLink.removeClass( $.mobile.activeBtnClass );
+               }
+               $activeClickedLink = null;
+       }
+
+       function releasePageTransitionLock() {
+               isPageTransitioning = false;
+               if ( pageTransitionQueue.length > 0 ) {
+                       $.mobile.changePage.apply( null, pageTransitionQueue.pop() );
+               }
+       }
+
+       // Save the last scroll distance per page, before it is hidden
+       var setLastScrollEnabled = true,
+               setLastScroll, delayedSetLastScroll;
+
+       setLastScroll = function() {
+               // this barrier prevents setting the scroll value based on the browser
+               // scrolling the window based on a hashchange
+               if ( !setLastScrollEnabled ) {
+                       return;
+               }
+
+               var active = $.mobile.urlHistory.getActive();
+
+               if ( active ) {
+                       var lastScroll = $window.scrollTop();
+
+                       // Set active page's lastScroll prop.
+                       // If the location we're scrolling to is less than minScrollBack, let it go.
+                       active.lastScroll = lastScroll < $.mobile.minScrollBack ? $.mobile.defaultHomeScroll : lastScroll;
+               }
+       };
+
+       // bind to scrollstop to gather scroll position. The delay allows for the hashchange
+       // event to fire and disable scroll recording in the case where the browser scrolls
+       // to the hash targets location (sometimes the top of the page). once pagechange fires
+       // getLastScroll is again permitted to operate
+       delayedSetLastScroll = function() {
+               setTimeout( setLastScroll, 100 );
+       };
+
+       // disable an scroll setting when a hashchange has been fired, this only works
+       // because the recording of the scroll position is delayed for 100ms after
+       // the browser might have changed the position because of the hashchange
+       $window.bind( $.support.pushState ? "popstate" : "hashchange", function() {
+               setLastScrollEnabled = false;
+       });
+
+       // handle initial hashchange from chrome :(
+       $window.one( $.support.pushState ? "popstate" : "hashchange", function() {
+               setLastScrollEnabled = true;
+       });
+
+       // wait until the mobile page container has been determined to bind to pagechange
+       $window.one( "pagecontainercreate", function() {
+               // once the page has changed, re-enable the scroll recording
+               $.mobile.pageContainer.bind( "pagechange", function() {
+
+                       setLastScrollEnabled = true;
+
+                       // remove any binding that previously existed on the get scroll
+                       // which may or may not be different than the scroll element determined for
+                       // this page previously
+                       $window.unbind( "scrollstop", delayedSetLastScroll );
+
+                       // determine and bind to the current scoll element which may be the window
+                       // or in the case of touch overflow the element with touch overflow
+                       $window.bind( "scrollstop", delayedSetLastScroll );
+               });
+       });
+
+       // bind to scrollstop for the first page as "pagechange" won't be fired in that case
+       $window.bind( "scrollstop", delayedSetLastScroll );
+
+       // No-op implementation of transition degradation
+       $.mobile._maybeDegradeTransition = $.mobile._maybeDegradeTransition || function( transition ) {
+               return transition;
+       };
+
+       //function for transitioning between two existing pages
+       function transitionPages( toPage, fromPage, transition, reverse ) {
+
+               if ( fromPage ) {
+                       //trigger before show/hide events
+                       fromPage.data( "page" )._trigger( "beforehide", null, { nextPage: toPage } );
+               }
+
+               toPage.data( "page" )._trigger( "beforeshow", null, { prevPage: fromPage || $( "" ) } );
+
+               //clear page loader
+               $.mobile.hidePageLoadingMsg();
+
+               transition = $.mobile._maybeDegradeTransition( transition );
+
+               //find the transition handler for the specified transition. If there
+               //isn't one in our transitionHandlers dictionary, use the default one.
+               //call the handler immediately to kick-off the transition.
+               var th = $.mobile.transitionHandlers[ transition || "default" ] || $.mobile.defaultTransitionHandler,
+                       promise = th( transition, reverse, toPage, fromPage );
+
+               promise.done(function() {
+
+                       //trigger show/hide events
+                       if ( fromPage ) {
+                               fromPage.data( "page" )._trigger( "hide", null, { nextPage: toPage } );
+                       }
+
+                       //trigger pageshow, define prevPage as either fromPage or empty jQuery obj
+                       toPage.data( "page" )._trigger( "show", null, { prevPage: fromPage || $( "" ) } );
+
+                       setTimeout( function () {
+                               $.mobile.removeEventBlocker();
+                       }, 0 );
+               });
+
+               return promise;
+       }
+
+       //shared page enhancements
+       function enhancePage( $page, role ) {
+               // If a role was specified, make sure the data-role attribute
+               // on the page element is in sync.
+               if ( role ) {
+                       $page.attr( "data-" + $.mobile.ns + "role", role );
+               }
+
+               //run page plugin
+               $page.page();
+       }
+
+       /* exposed $.mobile methods */
+
+       //animation complete callback
+       $.fn.animationComplete = function( callback ) {
+               if ( $.support.cssTransitions ) {
+                       return $( this ).one( 'webkitAnimationEnd animationend', callback );
+               }
+               else{
+                       // defer execution for consistency between webkit/non webkit
+                       setTimeout( callback, 0 );
+                       return $( this );
+               }
+       };
+
+       //expose path object on $.mobile
+       $.mobile.path = path;
+
+       //expose base object on $.mobile
+       $.mobile.base = base;
+
+       //history stack
+       $.mobile.urlHistory = urlHistory;
+
+       $.mobile.dialogHashKey = dialogHashKey;
+
+
+
+       //enable cross-domain page support
+       $.mobile.allowCrossDomainPages = false;
+
+       //return the original document url
+       $.mobile.getDocumentUrl = function( asParsedObject ) {
+               return asParsedObject ? $.extend( {}, documentUrl ) : documentUrl.href;
+       };
+
+       //return the original document base url
+       $.mobile.getDocumentBase = function( asParsedObject ) {
+               return asParsedObject ? $.extend( {}, documentBase ) : documentBase.href;
+       };
+
+       $.mobile._bindPageRemove = function() {
+               var page = $( this );
+
+               // when dom caching is not enabled or the page is embedded bind to remove the page on hide
+               if ( !page.data( "page" ).options.domCache &&
+                               page.is( ":jqmData(external-page='true')" ) ) {
+
+                       page.bind( 'pagehide.remove', function() {
+                               var $this = $( this ),
+                                       prEvent = new $.Event( "pageremove" );
+
+                               $this.trigger( prEvent );
+
+                               if ( !prEvent.isDefaultPrevented() ) {
+                                       $this.removeWithDependents();
+                               }
+                       });
+               }
+       };
+
+       // Load a page into the DOM.
+       $.mobile.loadPage = function( url, options ) {
+               // This function uses deferred notifications to let callers
+               // know when the page is done loading, or if an error has occurred.
+               var deferred = $.Deferred(),
+
+                       // The default loadPage options with overrides specified by
+                       // the caller.
+                       settings = $.extend( {}, $.mobile.loadPage.defaults, options ),
+
+                       // The DOM element for the page after it has been loaded.
+                       page = null,
+
+                       // If the reloadPage option is true, and the page is already
+                       // in the DOM, dupCachedPage will be set to the page element
+                       // so that it can be removed after the new version of the
+                       // page is loaded off the network.
+                       dupCachedPage = null,
+
+                       // determine the current base url
+                       findBaseWithDefault = function() {
+                               var closestBase = ( $.mobile.activePage && getClosestBaseUrl( $.mobile.activePage ) );
+                               return closestBase || documentBase.hrefNoHash;
+                       },
+
+                       // The absolute version of the URL passed into the function. This
+                       // version of the URL may contain dialog/subpage params in it.
+                       absUrl = path.makeUrlAbsolute( url, findBaseWithDefault() );
+
+
+               // If the caller provided data, and we're using "get" request,
+               // append the data to the URL.
+               if ( settings.data && settings.type === "get" ) {
+                       absUrl = path.addSearchParams( absUrl, settings.data );
+                       settings.data = undefined;
+               }
+
+               // If the caller is using a "post" request, reloadPage must be true
+               if ( settings.data && settings.type === "post" ) {
+                       settings.reloadPage = true;
+               }
+
+               // The absolute version of the URL minus any dialog/subpage params.
+               // In otherwords the real URL of the page to be loaded.
+               var fileUrl = path.getFilePath( absUrl ),
+
+                       // The version of the Url actually stored in the data-url attribute of
+                       // the page. For embedded pages, it is just the id of the page. For pages
+                       // within the same domain as the document base, it is the site relative
+                       // path. For cross-domain pages (Phone Gap only) the entire absolute Url
+                       // used to load the page.
+                       dataUrl = path.convertUrlToDataUrl( absUrl );
+
+               // Make sure we have a pageContainer to work with.
+               settings.pageContainer = settings.pageContainer || $.mobile.pageContainer;
+
+               // Check to see if the page already exists in the DOM.
+               // NOTE do _not_ use the :jqmData psuedo selector because parenthesis
+               //      are a valid url char and it breaks on the first occurence
+               page = settings.pageContainer.children( "[data-" + $.mobile.ns +"url='" + dataUrl + "']" );
+
+               // If we failed to find the page, check to see if the url is a
+               // reference to an embedded page. If so, it may have been dynamically
+               // injected by a developer, in which case it would be lacking a data-url
+               // attribute and in need of enhancement.
+               if ( page.length === 0 && dataUrl && !path.isPath( dataUrl ) ) {
+                       page = settings.pageContainer.children( "#" + dataUrl )
+                               .attr( "data-" + $.mobile.ns + "url", dataUrl )
+                               .jqmData( "url", dataUrl );
+               }
+
+               // If we failed to find a page in the DOM, check the URL to see if it
+               // refers to the first page in the application. If it isn't a reference
+               // to the first page and refers to non-existent embedded page, error out.
+               if ( page.length === 0 ) {
+                       if ( $.mobile.firstPage && path.isFirstPageUrl( fileUrl ) ) {
+                               // Check to make sure our cached-first-page is actually
+                               // in the DOM. Some user deployed apps are pruning the first
+                               // page from the DOM for various reasons, we check for this
+                               // case here because we don't want a first-page with an id
+                               // falling through to the non-existent embedded page error
+                               // case. If the first-page is not in the DOM, then we let
+                               // things fall through to the ajax loading code below so
+                               // that it gets reloaded.
+                               if ( $.mobile.firstPage.parent().length ) {
+                                       page = $( $.mobile.firstPage );
+                               }
+                       } else if ( path.isEmbeddedPage( fileUrl )  ) {
+                               deferred.reject( absUrl, options );
+                               return deferred.promise();
+                       }
+               }
+
+               // If the page we are interested in is already in the DOM,
+               // and the caller did not indicate that we should force a
+               // reload of the file, we are done. Otherwise, track the
+               // existing page as a duplicated.
+               if ( page.length ) {
+                       if ( !settings.reloadPage ) {
+                               enhancePage( page, settings.role );
+                               deferred.resolve( absUrl, options, page );
+                               return deferred.promise();
+                       }
+                       dupCachedPage = page;
+               }
+
+               var mpc = settings.pageContainer,
+                       pblEvent = new $.Event( "pagebeforeload" ),
+                       triggerData = { url: url, absUrl: absUrl, dataUrl: dataUrl, deferred: deferred, options: settings };
+
+               // Let listeners know we're about to load a page.
+               mpc.trigger( pblEvent, triggerData );
+
+               // If the default behavior is prevented, stop here!
+               if ( pblEvent.isDefaultPrevented() ) {
+                       return deferred.promise();
+               }
+
+               if ( settings.showLoadMsg ) {
+
+                       // This configurable timeout allows cached pages a brief delay to load without showing a message
+                       var loadMsgDelay = setTimeout(function() {
+                                       $.mobile.showPageLoadingMsg();
+                               }, settings.loadMsgDelay ),
+
+                               // Shared logic for clearing timeout and removing message.
+                               hideMsg = function() {
+
+                                       // Stop message show timer
+                                       clearTimeout( loadMsgDelay );
+
+                                       // Hide loading message
+                                       $.mobile.hidePageLoadingMsg();
+                               };
+               }
+
+               // Reset base to the default document base.
+               if ( base ) {
+                       base.reset();
+               }
+
+               if ( !( $.mobile.allowCrossDomainPages || path.isSameDomain( documentUrl, absUrl ) ) ) {
+                       deferred.reject( absUrl, options );
+               } else {
+                       // Load the new page.
+                       $.ajax({
+                               url: fileUrl,
+                               type: settings.type,
+                               data: settings.data,
+                               dataType: "html",
+                               success: function( html, textStatus, xhr ) {
+                                       //pre-parse html to check for a data-url,
+                                       //use it as the new fileUrl, base path, etc
+                                       var all = $( "<div></div>" ),
+
+                                               //page title regexp
+                                               newPageTitle = html.match( /<title[^>]*>([^<]*)/ ) && RegExp.$1,
+
+                                               // TODO handle dialogs again
+                                               pageElemRegex = new RegExp( "(<[^>]+\\bdata-" + $.mobile.ns + "role=[\"']?page[\"']?[^>]*>)" ),
+                                               dataUrlRegex = new RegExp( "\\bdata-" + $.mobile.ns + "url=[\"']?([^\"'>]*)[\"']?" );
+
+
+                                       // data-url must be provided for the base tag so resource requests can be directed to the
+                                       // correct url. loading into a temprorary element makes these requests immediately
+                                       if ( pageElemRegex.test( html ) &&
+                                                       RegExp.$1 &&
+                                                       dataUrlRegex.test( RegExp.$1 ) &&
+                                                       RegExp.$1 ) {
+                                               url = fileUrl = path.getFilePath( $( "<div>" + RegExp.$1 + "</div>" ).text() );
+                                       }
+
+                                       if ( base ) {
+                                               base.set( fileUrl );
+                                       }
+
+                                       //workaround to allow scripts to execute when included in page divs
+                                       all.get( 0 ).innerHTML = html;
+                                       page = all.find( ":jqmData(role='page'), :jqmData(role='dialog')" ).first();
+
+                                       //if page elem couldn't be found, create one and insert the body element's contents
+                                       if ( !page.length ) {
+                                               page = $( "<div data-" + $.mobile.ns + "role='page'>" + html.split( /<\/?body[^>]*>/gmi )[1] + "</div>" );
+                                       }
+
+                                       if ( newPageTitle && !page.jqmData( "title" ) ) {
+                                               if ( ~newPageTitle.indexOf( "&" ) ) {
+                                                       newPageTitle = $( "<div>" + newPageTitle + "</div>" ).text();
+                                               }
+                                               page.jqmData( "title", newPageTitle );
+                                       }
+
+                                       //rewrite src and href attrs to use a base url
+                                       if ( !$.support.dynamicBaseTag ) {
+                                               var newPath = path.get( fileUrl );
+                                               page.find( "[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]" ).each(function() {
+                                                       var thisAttr = $( this ).is( '[href]' ) ? 'href' :
+                                                                       $( this ).is( '[src]' ) ? 'src' : 'action',
+                                                               thisUrl = $( this ).attr( thisAttr );
+
+                                                       // XXX_jblas: We need to fix this so that it removes the document
+                                                       //            base URL, and then prepends with the new page URL.
+                                                       //if full path exists and is same, chop it - helps IE out
+                                                       thisUrl = thisUrl.replace( location.protocol + '//' + location.host + location.pathname, '' );
+
+                                                       if ( !/^(\w+:|#|\/)/.test( thisUrl ) ) {
+                                                               $( this ).attr( thisAttr, newPath + thisUrl );
+                                                       }
+                                               });
+                                       }
+
+                                       //append to page and enhance
+                                       // TODO taging a page with external to make sure that embedded pages aren't removed
+                                       //      by the various page handling code is bad. Having page handling code in many
+                                       //      places is bad. Solutions post 1.0
+                                       page
+                                               .attr( "data-" + $.mobile.ns + "url", path.convertUrlToDataUrl( fileUrl ) )
+                                               .attr( "data-" + $.mobile.ns + "external-page", true )
+                                               .appendTo( settings.pageContainer );
+
+                                       // wait for page creation to leverage options defined on widget
+                                       page.one( 'pagecreate', $.mobile._bindPageRemove );
+
+                                       enhancePage( page, settings.role );
+
+                                       // Enhancing the page may result in new dialogs/sub pages being inserted
+                                       // into the DOM. If the original absUrl refers to a sub-page, that is the
+                                       // real page we are interested in.
+                                       if ( absUrl.indexOf( "&" + $.mobile.subPageUrlKey ) > -1 ) {
+                                               page = settings.pageContainer.children( "[data-" + $.mobile.ns +"url='" + dataUrl + "']" );
+                                       }
+
+                                       //bind pageHide to removePage after it's hidden, if the page options specify to do so
+
+                                       // Remove loading message.
+                                       if ( settings.showLoadMsg ) {
+                                               hideMsg();
+                                       }
+
+                                       // Add the page reference and xhr to our triggerData.
+                                       triggerData.xhr = xhr;
+                                       triggerData.textStatus = textStatus;
+                                       triggerData.page = page;
+
+                                       // Let listeners know the page loaded successfully.
+                                       settings.pageContainer.trigger( "pageload", triggerData );
+
+                                       deferred.resolve( absUrl, options, page, dupCachedPage );
+                               },
+                               error: function( xhr, textStatus, errorThrown ) {
+                                       //set base back to current path
+                                       if ( base ) {
+                                               base.set( path.get() );
+                                       }
+
+                                       // Add error info to our triggerData.
+                                       triggerData.xhr = xhr;
+                                       triggerData.textStatus = textStatus;
+                                       triggerData.errorThrown = errorThrown;
+
+                                       var plfEvent = new $.Event( "pageloadfailed" );
+
+                                       // Let listeners know the page load failed.
+                                       settings.pageContainer.trigger( plfEvent, triggerData );
+
+                                       // If the default behavior is prevented, stop here!
+                                       // Note that it is the responsibility of the listener/handler
+                                       // that called preventDefault(), to resolve/reject the
+                                       // deferred object within the triggerData.
+                                       if ( plfEvent.isDefaultPrevented() ) {
+                                               return;
+                                       }
+
+                                       // Remove loading message.
+                                       if ( settings.showLoadMsg ) {
+
+                                               // Remove loading message.
+                                               hideMsg();
+
+                                               // show error message
+                                               $.mobile.showPageLoadingMsg( $.mobile.pageLoadErrorMessageTheme, $.mobile.pageLoadErrorMessage, true );
+
+                                               // hide after delay
+                                               setTimeout( $.mobile.hidePageLoadingMsg, 1500 );
+                                       }
+
+                                       deferred.reject( absUrl, options );
+                               }
+                       });
+               }
+
+               return deferred.promise();
+       };
+
+       $.mobile.loadPage.defaults = {
+               type: "get",
+               data: undefined,
+               reloadPage: false,
+               role: undefined, // By default we rely on the role defined by the @data-role attribute.
+               showLoadMsg: false,
+               pageContainer: undefined,
+               loadMsgDelay: 50 // This delay allows loads that pull from browser cache to occur without showing the loading message.
+       };
+
+       // Show a specific page in the page container.
+       $.mobile.changePage = function( toPage, options ) {
+               // If we are in the midst of a transition, queue the current request.
+               // We'll call changePage() once we're done with the current transition to
+               // service the request.
+               if ( isPageTransitioning ) {
+                       pageTransitionQueue.unshift( arguments );
+                       return;
+               }
+
+               var settings = $.extend( {}, $.mobile.changePage.defaults, options );
+
+               // Make sure we have a pageContainer to work with.
+               settings.pageContainer = settings.pageContainer || $.mobile.pageContainer;
+
+               // Make sure we have a fromPage.
+               settings.fromPage = settings.fromPage || $.mobile.activePage;
+
+               var mpc = settings.pageContainer,
+                       pbcEvent = new $.Event( "pagebeforechange" ),
+                       triggerData = { toPage: toPage, options: settings };
+
+               // Let listeners know we're about to change the current page.
+               mpc.trigger( pbcEvent, triggerData );
+
+               // If the default behavior is prevented, stop here!
+               if ( pbcEvent.isDefaultPrevented() ) {
+                       return;
+               }
+
+               // We allow "pagebeforechange" observers to modify the toPage in the trigger
+               // data to allow for redirects. Make sure our toPage is updated.
+
+               toPage = triggerData.toPage;
+
+               // Set the isPageTransitioning flag to prevent any requests from
+               // entering this method while we are in the midst of loading a page
+               // or transitioning.
+
+               isPageTransitioning = true;
+
+               // If the caller passed us a url, call loadPage()
+               // to make sure it is loaded into the DOM. We'll listen
+               // to the promise object it returns so we know when
+               // it is done loading or if an error ocurred.
+               if ( typeof toPage === "string" ) {
+                       $.mobile.loadPage( toPage, settings )
+                               .done(function( url, options, newPage, dupCachedPage ) {
+                                       isPageTransitioning = false;
+                                       options.duplicateCachedPage = dupCachedPage;
+                                       $.mobile.changePage( newPage, options );
+                               })
+                               .fail(function( url, options ) {
+                                       isPageTransitioning = false;
+
+                                       //clear out the active button state
+                                       removeActiveLinkClass( true );
+
+                                       //release transition lock so navigation is free again
+                                       releasePageTransitionLock();
+                                       settings.pageContainer.trigger( "pagechangefailed", triggerData );
+                               });
+                       return;
+               }
+
+               // If we are going to the first-page of the application, we need to make
+               // sure settings.dataUrl is set to the application document url. This allows
+               // us to avoid generating a document url with an id hash in the case where the
+               // first-page of the document has an id attribute specified.
+               if ( toPage[ 0 ] === $.mobile.firstPage[ 0 ] && !settings.dataUrl ) {
+                       settings.dataUrl = documentUrl.hrefNoHash;
+               }
+
+               // The caller passed us a real page DOM element. Update our
+               // internal state and then trigger a transition to the page.
+               var fromPage = settings.fromPage,
+                       url = ( settings.dataUrl && path.convertUrlToDataUrl( settings.dataUrl ) ) || toPage.jqmData( "url" ),
+                       // The pageUrl var is usually the same as url, except when url is obscured as a dialog url. pageUrl always contains the file path
+                       pageUrl = url,
+                       fileUrl = path.getFilePath( url ),
+                       active = urlHistory.getActive(),
+                       activeIsInitialPage = urlHistory.activeIndex === 0,
+                       historyDir = 0,
+                       pageTitle = document.title,
+                       isDialog = settings.role === "dialog" || $.mobile.getAttrFixed( toPage [0], "data-" + $.mobile.ns + "role" ) === "dialog";
+
+               // By default, we prevent changePage requests when the fromPage and toPage
+               // are the same element, but folks that generate content manually/dynamically
+               // and reuse pages want to be able to transition to the same page. To allow
+               // this, they will need to change the default value of allowSamePageTransition
+               // to true, *OR*, pass it in as an option when they manually call changePage().
+               // It should be noted that our default transition animations assume that the
+               // formPage and toPage are different elements, so they may behave unexpectedly.
+               // It is up to the developer that turns on the allowSamePageTransitiona option
+               // to either turn off transition animations, or make sure that an appropriate
+               // animation transition is used.
+               if ( fromPage && fromPage[0] === toPage[0] && !settings.allowSamePageTransition ) {
+                       isPageTransitioning = false;
+                       mpc.trigger( "pagechange", triggerData );
+
+                       // Even if there is no page change to be done, we should keep the urlHistory in sync with the hash changes
+                       if ( settings.fromHashChange ) {
+                               urlHistory.directHashChange({
+                                       currentUrl:     url,
+                                       isBack:         function() {},
+                                       isForward:      function() {}
+                               });
+                       }
+
+                       return;
+               }
+
+               // We need to make sure the page we are given has already been enhanced.
+               enhancePage( toPage, settings.role );
+
+               // If the changePage request was sent from a hashChange event, check to see if the
+               // page is already within the urlHistory stack. If so, we'll assume the user hit
+               // the forward/back button and will try to match the transition accordingly.
+               if ( settings.fromHashChange ) {
+                       urlHistory.directHashChange({
+                               currentUrl:     url,
+                               isBack:         function() { historyDir = -1; },
+                               isForward:      function() { historyDir = 1; }
+                       });
+               }
+
+               // Kill the keyboard.
+               // XXX_jblas: We need to stop crawling the entire document to kill focus. Instead,
+               //            we should be tracking focus with a delegate() handler so we already have
+               //            the element in hand at this point.
+               // Wrap this in a try/catch block since IE9 throw "Unspecified error" if document.activeElement
+               // is undefined when we are in an IFrame.
+               try {
+                       if ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== 'body' ) {
+                               $( document.activeElement ).blur();
+                       } else {
+                               $( "input:focus, textarea:focus, select:focus" ).blur();
+                       }
+               } catch( e ) {}
+
+               // Record whether we are at a place in history where a dialog used to be - if so, do not add a new history entry and do not change the hash either
+               var alreadyThere = false;
+
+               // If we're displaying the page as a dialog, we don't want the url
+               // for the dialog content to be used in the hash. Instead, we want
+               // to append the dialogHashKey to the url of the current page.
+               if ( isDialog && active ) {
+                       // on the initial page load active.url is undefined and in that case should
+                       // be an empty string. Moving the undefined -> empty string back into
+                       // urlHistory.addNew seemed imprudent given undefined better represents
+                       // the url state
+
+                       // If we are at a place in history that once belonged to a dialog, reuse
+                       // this state without adding to urlHistory and without modifying the hash.
+                       // However, if a dialog is already displayed at this point, and we're
+                       // about to display another dialog, then we must add another hash and
+                       // history entry on top so that one may navigate back to the original dialog
+                       if ( active.url.indexOf( dialogHashKey ) > -1 && !$.mobile.activePage.is( ".ui-dialog" ) ) {
+                               settings.changeHash = false;
+                               alreadyThere = true;
+                       }
+
+                       // Normally, we tack on a dialog hash key, but if this is the location of a stale dialog,
+                       // we reuse the URL from the entry
+                       url = ( active.url || "" ) + ( alreadyThere ? "" : dialogHashKey );
+
+                       // tack on another dialogHashKey if this is the same as the initial hash
+                       // this makes sure that a history entry is created for this dialog
+                       if ( urlHistory.activeIndex === 0 && url === urlHistory.initialDst ) {
+                               url += dialogHashKey;
+                       }
+               }
+
+               // Set the location hash.
+               if ( settings.changeHash !== false && url ) {
+                       //disable hash listening temporarily
+                       urlHistory.ignoreNextHashChange = true;
+                       //update hash and history
+                       path.set( url );
+               }
+
+               // if title element wasn't found, try the page div data attr too
+               // If this is a deep-link or a reload ( active === undefined ) then just use pageTitle
+               var newPageTitle = ( !active )? pageTitle : toPage.jqmData( "title" ) || toPage.children( ":jqmData(role='header')" ).find( ".ui-title" ).getEncodedText();
+               if ( !!newPageTitle && pageTitle === document.title ) {
+                       pageTitle = newPageTitle;
+               }
+               if ( !toPage.jqmData( "title" ) ) {
+                       toPage.jqmData( "title", pageTitle );
+               }
+
+               // Make sure we have a transition defined.
+               settings.transition = settings.transition ||
+                       ( ( historyDir && !activeIsInitialPage ) ? active.transition : undefined ) ||
+                       ( isDialog ? $.mobile.defaultDialogTransition : $.mobile.defaultPageTransition );
+
+               //add page to history stack if it's not back or forward
+               if ( !historyDir ) {
+                       // Overwrite the current entry if it's a leftover from a dialog
+                       if ( alreadyThere ) {
+                               urlHistory.activeIndex = Math.max( 0, urlHistory.activeIndex - 1 );
+                       }
+                       urlHistory.addNew( url, settings.transition, pageTitle, pageUrl, settings.role );
+               }
+
+               //set page title
+               document.title = urlHistory.getActive().title;
+
+               //set "toPage" as activePage
+               $.mobile.activePage = toPage;
+
+               // If we're navigating back in the URL history, set reverse accordingly.
+               settings.reverse = settings.reverse || historyDir < 0;
+
+               transitionPages( toPage, fromPage, settings.transition, settings.reverse )
+                       .done(function( name, reverse, $to, $from, alreadyFocused ) {
+                               removeActiveLinkClass();
+
+                               //if there's a duplicateCachedPage, remove it from the DOM now that it's hidden
+                               if ( settings.duplicateCachedPage ) {
+                                       settings.duplicateCachedPage.remove();
+                               }
+
+                               // Send focus to the newly shown page. Moved from promise .done binding in transitionPages
+                               // itself to avoid ie bug that reports offsetWidth as > 0 (core check for visibility)
+                               // despite visibility: hidden addresses issue #2965
+                               // https://github.com/jquery/jquery-mobile/issues/2965
+                               if ( !alreadyFocused ) {
+                                       $.mobile.focusPage( toPage );
+                               }
+
+                               releasePageTransitionLock();
+
+                               // Let listeners know we're all done changing the current page.
+                               mpc.trigger( "pagechange", triggerData );
+                       });
+       };
+
+       $.mobile.changePage.defaults = {
+               transition: undefined,
+               reverse: false,
+               changeHash: true,
+               fromHashChange: false,
+               role: undefined, // By default we rely on the role defined by the @data-role attribute.
+               duplicateCachedPage: undefined,
+               pageContainer: undefined,
+               showLoadMsg: true, //loading message shows by default when pages are being fetched during changePage
+               dataUrl: undefined,
+               fromPage: undefined,
+               allowSamePageTransition: false
+       };
+
+/* Event Bindings - hashchange, submit, and click */
+       function findClosestLink( ele )
+       {
+               while ( ele ) {
+                       // Look for the closest element with a nodeName of "a".
+                       // Note that we are checking if we have a valid nodeName
+                       // before attempting to access it. This is because the
+                       // node we get called with could have originated from within
+                       // an embedded SVG document where some symbol instance elements
+                       // don't have nodeName defined on them, or strings are of type
+                       // SVGAnimatedString.
+                       if ( ( typeof ele.nodeName === "string" ) && ele.nodeName.toLowerCase() === "a" ) {
+                               break;
+                       }
+                       ele = ele.parentNode;
+               }
+               return ele;
+       }
+
+       // The base URL for any given element depends on the page it resides in.
+       function getClosestBaseUrl( ele )
+       {
+               // Find the closest page and extract out its url.
+               var url = $( ele ).closest( ".ui-page" ).jqmData( "url" ),
+                       base = documentBase.hrefNoHash;
+
+               if ( !url || !path.isPath( url ) ) {
+                       url = base;
+               }
+
+               return path.makeUrlAbsolute( url, base);
+       }
+
+       //The following event bindings should be bound after mobileinit has been triggered
+       //the following deferred is resolved in the init file
+       $.mobile.navreadyDeferred = $.Deferred();
+       $.mobile.navreadyDeferred.done(function() {
+               //bind to form submit events, handle with Ajax
+               $.mobile.$document.delegate( "form", "submit", function( event ) {
+                       var $this = $( this );
+
+                       if ( !$.mobile.ajaxEnabled ||
+                                       // test that the form is, itself, ajax false
+                                       $this.is( ":jqmData(ajax='false')" ) ||
+                                       // test that $.mobile.ignoreContentEnabled is set and
+                                       // the form or one of it's parents is ajax=false
+                                       !$this.jqmHijackable().length ) {
+                               return;
+                       }
+
+                       var type = $this.attr( "method" ),
+                               target = $this.attr( "target" ),
+                               url = $this.attr( "action" );
+
+                       // If no action is specified, browsers default to using the
+                       // URL of the document containing the form. Since we dynamically
+                       // pull in pages from external documents, the form should submit
+                       // to the URL for the source document of the page containing
+                       // the form.
+                       if ( !url ) {
+                               // Get the @data-url for the page containing the form.
+                               url = getClosestBaseUrl( $this );
+                               if ( url === documentBase.hrefNoHash ) {
+                                       // The url we got back matches the document base,
+                                       // which means the page must be an internal/embedded page,
+                                       // so default to using the actual document url as a browser
+                                       // would.
+                                       url = documentUrl.hrefNoSearch;
+                               }
+                       }
+
+                       url = path.makeUrlAbsolute(  url, getClosestBaseUrl( $this ) );
+
+                       if ( ( path.isExternal( url ) && !path.isPermittedCrossDomainRequest( documentUrl, url ) ) || target ) {
+                               return;
+                       }
+
+                       $.mobile.changePage(
+                               url,
+                               {
+                                       type:           type && type.length && type.toLowerCase() || "get",
+                                       data:           $this.serialize(),
+                                       transition:     $.mobile.getAttrFixed( $this [0], "data-" + $.mobile.ns + "transition" ),
+                                       reverse:        $.mobile.getAttrFixed( $this [0], "data-" + $.mobile.ns + "direction" ) === "reverse",
+                                       reloadPage:     true
+                               }
+                       );
+                       event.preventDefault();
+               });
+
+               //add active state on vclick
+               $.mobile.$document.bind( "vclick", function( event ) {
+                       // if this isn't a left click we don't care. Its important to note
+                       // that when the virtual event is generated it will create the which attr
+                       if ( event.which > 1 || !$.mobile.linkBindingEnabled ) {
+                               return;
+                       }
+
+                       var link = findClosestLink( event.target );
+
+                       // split from the previous return logic to avoid find closest where possible
+                       // TODO teach $.mobile.hijackable to operate on raw dom elements so the link wrapping
+                       // can be avoided
+                       if ( !$( link ).jqmHijackable().length ) {
+                               return;
+                       }
+
+                       if ( link ) {
+                               if ( path.parseUrl( link.getAttribute( "href" ) || "#" ).hash !== "#" ) {
+                                       removeActiveLinkClass( true );
+                                       $activeClickedLink = $( link ).closest( ".ui-btn" ).not( ".ui-disabled" );
+                                       $activeClickedLink.addClass( $.mobile.activeBtnClass );
+                               }
+                       }
+               });
+
+               // click routing - direct to HTTP or Ajax, accordingly
+               $.mobile.$document.bind( "click", function( event ) {
+                       if ( !$.mobile.linkBindingEnabled ) {
+                               return;
+                       }
+
+                       var link = findClosestLink( event.target ), $link = $( link ), httpCleanup;
+
+                       // If there is no link associated with the click or its not a left
+                       // click we want to ignore the click
+                       // TODO teach $.mobile.hijackable to operate on raw dom elements so the link wrapping
+                       // can be avoided
+                       if ( !link || event.which > 1 || !$link.jqmHijackable().length ) {
+                               return;
+                       }
+
+                       //remove active link class if external (then it won't be there if you come back)
+                       httpCleanup = function() {
+                               window.setTimeout(function() { removeActiveLinkClass( true ); }, 200 );
+                       };
+
+                       //if there's a data-rel=back attr, go back in history
+                       if ( $link.is( ":jqmData(rel='back')" ) ) {
+                               $.mobile.back();
+                               return false;
+                       }
+
+                       var baseUrl = getClosestBaseUrl( $link ),
+
+                               //get href, if defined, otherwise default to empty hash
+                               href = path.makeUrlAbsolute( $link.attr( "href" ) || "#", baseUrl );
+
+                       //if ajax is disabled, exit early
+                       if ( !$.mobile.ajaxEnabled && !path.isEmbeddedPage( href ) ) {
+                               httpCleanup();
+                               //use default click handling
+                               return;
+                       }
+
+                       // XXX_jblas: Ideally links to application pages should be specified as
+                       //            an url to the application document with a hash that is either
+                       //            the site relative path or id to the page. But some of the
+                       //            internal code that dynamically generates sub-pages for nested
+                       //            lists and select dialogs, just write a hash in the link they
+                       //            create. This means the actual URL path is based on whatever
+                       //            the current value of the base tag is at the time this code
+                       //            is called. For now we are just assuming that any url with a
+                       //            hash in it is an application page reference.
+                       if ( href.search( "#" ) !== -1 ) {
+                               href = href.replace( /[^#]*#/, "" );
+                               if ( !href ) {
+                                       //link was an empty hash meant purely
+                                       //for interaction, so we ignore it.
+                                       event.preventDefault();
+                                       return;
+                               } else if ( path.isPath( href ) ) {
+                                       //we have apath so make it the href we want to load.
+                                       href = path.makeUrlAbsolute( href, baseUrl );
+                               } else {
+                                       //we have a simple id so use the documentUrl as its base.
+                                       href = path.makeUrlAbsolute( "#" + href, documentUrl.hrefNoHash );
+                               }
+                       }
+
+                               // Should we handle this link, or let the browser deal with it?
+                       var useDefaultUrlHandling = $link.is( "[rel='external']" ) || $link.is( ":jqmData(ajax='false')" ) || $link.is( "[target]" ),
+
+                               // Some embedded browsers, like the web view in Phone Gap, allow cross-domain XHR
+                               // requests if the document doing the request was loaded via the file:// protocol.
+                               // This is usually to allow the application to "phone home" and fetch app specific
+                               // data. We normally let the browser handle external/cross-domain urls, but if the
+                               // allowCrossDomainPages option is true, we will allow cross-domain http/https
+                               // requests to go through our page loading logic.
+
+                               //check for protocol or rel and its not an embedded page
+                               //TODO overlap in logic from isExternal, rel=external check should be
+                               //     moved into more comprehensive isExternalLink
+                               isExternal = useDefaultUrlHandling || ( path.isExternal( href ) && !path.isPermittedCrossDomainRequest( documentUrl, href ) );
+
+                       if ( isExternal ) {
+                               httpCleanup();
+                               //use default click handling
+                               return;
+                       }
+
+                       //use ajax
+                       var transition = $.mobile.getAttrFixed( $link [0], "data-" + $.mobile.ns + "transition" ),
+                               reverse =  $.mobile.getAttrFixed( $link [0], "data-" + $.mobile.ns + "direction" ) === "reverse" ||
+                                                       // deprecated - remove by 1.0
+                                                        $.mobile.getAttrFixed( $link [0], "data-" + $.mobile.ns + "back" ),
+
+                               //this may need to be more specific as we use data-rel more
+                               role = $link.attr( "data-" + $.mobile.ns + "rel" ) || undefined;
+
+                       $.mobile.changePage( href, { transition: transition, reverse: reverse, role: role, link: $link } );
+                       event.preventDefault();
+               });
+
+               //prefetch pages when anchors with data-prefetch are encountered
+               $.mobile.$document.delegate( ".ui-page", "pageshow.prefetch", function() {
+                       var urls = [];
+                       $( this ).find( "a:jqmData(prefetch)" ).each(function() {
+                               var $link = $( this ),
+                                       url = $link.attr( "href" );
+
+                               if ( url && $.inArray( url, urls ) === -1 ) {
+                                       urls.push( url );
+
+                                       $.mobile.loadPage( url, { role: $link.attr( "data-" + $.mobile.ns + "rel" ) } );
+                               }
+                       });
+               });
+
+               $.mobile._handleHashChange = function( hash ) {
+                       //find first page via hash
+                       var to = path.stripHash( hash ),
+                               //transition is false if it's the first page, undefined otherwise (and may be overridden by default)
+                               transition = $.mobile.urlHistory.stack.length === 0 ? "none" : undefined,
+
+                               // "navigate" event fired to allow others to take advantage of the more robust hashchange handling
+                               navEvent = new $.Event( "navigate" ),
+
+                               // default options for the changPage calls made after examining the current state
+                               // of the page and the hash
+                               changePageOptions = {
+                                       transition: transition,
+                                       changeHash: false,
+                                       fromHashChange: true
+                               };
+
+                       if ( 0 === urlHistory.stack.length ) {
+                               urlHistory.initialDst = to;
+                       }
+
+                       // We should probably fire the "navigate" event from those places that make calls to _handleHashChange,
+                       // and have _handleHashChange hook into the "navigate" event instead of triggering it here
+                       $.mobile.pageContainer.trigger( navEvent );
+                       if ( navEvent.isDefaultPrevented() ) {
+                               return;
+                       }
+
+                       //if listening is disabled (either globally or temporarily), or it's a dialog hash
+                       if ( !$.mobile.hashListeningEnabled || urlHistory.ignoreNextHashChange ) {
+                               urlHistory.ignoreNextHashChange = false;
+                               return;
+                       }
+
+                       // special case for dialogs
+                       if ( urlHistory.stack.length > 1 && to.indexOf( dialogHashKey ) > -1 && urlHistory.initialDst !== to ) {
+
+                               // If current active page is not a dialog skip the dialog and continue
+                               // in the same direction
+                               if ( !$.mobile.activePage.is( ".ui-dialog" ) ) {
+                                       //determine if we're heading forward or backward and continue accordingly past
+                                       //the current dialog
+                                       urlHistory.directHashChange({
+                                               currentUrl: to,
+                                               isBack: function() { $.mobile.back(); },
+                                               isForward: function() { window.history.forward(); }
+                                       });
+
+                                       // prevent changePage()
+                                       return;
+                               } else {
+                                       // if the current active page is a dialog and we're navigating
+                                       // to a dialog use the dialog objected saved in the stack
+                                       urlHistory.directHashChange({
+                                               currentUrl: to,
+
+                                               // regardless of the direction of the history change
+                                               // do the following
+                                               either: function( isBack ) {
+                                                       var active = $.mobile.urlHistory.getActive();
+
+                                                       to = active.pageUrl;
+
+                                                       // make sure to set the role, transition and reversal
+                                                       // as most of this is lost by the domCache cleaning
+                                                       $.extend( changePageOptions, {
+                                                               role: active.role,
+                                                               transition: active.transition,
+                                                               reverse: isBack
+                                                       });
+                                               }
+                                       });
+                               }
+                       }
+
+                       //if to is defined, load it
+                       if ( to ) {
+                               // At this point, 'to' can be one of 3 things, a cached page element from
+                               // a history stack entry, an id, or site-relative/absolute URL. If 'to' is
+                               // an id, we need to resolve it against the documentBase, not the location.href,
+                               // since the hashchange could've been the result of a forward/backward navigation
+                               // that crosses from an external page/dialog to an internal page/dialog.
+                               to = ( typeof to === "string" && !path.isPath( to ) ) ? ( path.makeUrlAbsolute( '#' + to, documentBase ) ) : to;
+
+                               // If we're about to go to an initial URL that contains a reference to a non-existent
+                               // internal page, go to the first page instead. We know that the initial hash refers to a
+                               // non-existent page, because the initial hash did not end up in the initial urlHistory entry
+                               if ( to === path.makeUrlAbsolute( '#' + urlHistory.initialDst, documentBase ) &&
+                                       urlHistory.stack.length && urlHistory.stack[0].url !== urlHistory.initialDst.replace( dialogHashKey, "" ) ) {
+                                       to = $.mobile.firstPage;
+                               }
+                               $.mobile.changePage( to, changePageOptions );
+                       }       else {
+                               //there's no hash, go to the first page in the dom
+                               $.mobile.changePage( $.mobile.firstPage, changePageOptions );
+                       }
+               };
+
+               //hashchange event handler
+               $window.bind( "hashchange", function( e, triggered ) {
+                       // Firefox auto-escapes the location.hash as for v13 but
+                       // leaves the href untouched
+                       $.mobile._handleHashChange( path.parseLocation().hash );
+               });
+
+       });//navreadyDeferred done callback
+
+})( jQuery );
+//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
+});
+//>>excludeEnd("jqmBuildExclude");
index dbd13fc..6a570b5 100644 (file)
@@ -36,39 +36,33 @@ ensureNS("jQuery.mobile.tizen");
 
 (function () {
 jQuery.extend(jQuery.mobile.tizen, {
-    disableSelection: function (element) {
-       var self = this;
-       $(element).find('*').each( function() {
-               if( ( $(this).get(0).tagName !== 'INPUT' &&
-                       $(this).attr("type") !== 'text' ) &&
-                       $(this).get(0).tagName !== 'TEXTAREA' ) {
-                       self.enableSelection( this, 'none' );
-               }
-       } );
-       return true;
-    },
-
-    enableSelection: function (element, value) {
-        return $(element).each( function () {
-               switch( value ) {
+       disableSelection: function (element) {
+               this.enableSelection(
+                       $(element).find('*').not( 'input, [type="text"], textarea' ),
+                       'none'
+               );
+               return true;
+       },
+
+       enableSelection: function (element, value) {
+               var val;
+               switch ( value ) {
                        case 'text' :
                        case 'auto' :
                        case 'none' :
                                val = value;
                        break;
-
                        default :
                                val = 'auto';
                        break;
                }
-            $(this).css( {
+               return $(element).css( {
                        'user-select': val,
                        '-moz-user-select': val,
                        '-webkit-user-select': val,
                        '-o-user-select': val,
                        '-ms-transform': val
-                       } );
-        } );
+               } );
     },
 
     disableContextMenu: function(element) {
index 3ea3cee..d09e94d 100644 (file)
@@ -450,23 +450,26 @@ If developers do not give a viewport meta tag, Tizen Web UI Framework automatica
                                viewportWidth = "screen-width";
                        }
 
+                       // screen-width support
                        if ( "screen-width" == viewportWidth ) {
-                               viewportWidth = document.documentElement.clientWidth;
+                               if ( window.self == window.top ) {
+                                       // Top frame: for target. Use window.outerWidth.
+                                       viewportWidth = window.outerWidth;
+                               } else {
+                                       // iframe: for web simulator. Use clientWidth.
+                                       viewportWidth = document.documentElement.clientWidth;
+                               }
                        }
 
+                       // set viewport meta tag
                        viewportWidth = this.setViewport( viewportWidth );      // If custom viewport setting exists, get viewport width
 
-                       if ( isNaN( viewportWidth ) ) { // device-width
-                               // By default, when the viewport is set to device-width, default font-size is not changed.
-                               // However, if current document width is less than defaultViewportWidth(determined by theme),
-                               //   default font-size is scaled to scale widgets smaller.
-                               if( document.documentElement.clientWidth <  this.frameworkData.defaultViewportWidth ) {
-                                       ratio = parseFloat( document.documentElement.clientWidth / this.frameworkData.defaultViewportWidth );
-                               }
+                       if ( viewportWidth == "device-width" ) {
+                               // Do nothing!
                        } else {        // fixed width!
                                ratio = parseFloat( viewportWidth / this.frameworkData.defaultViewportWidth );
+                               this.scaleBaseFontSize( themeDefaultFontSize, ratio );
                        }
-                       this.scaleBaseFontSize( themeDefaultFontSize, ratio );
                },
        };
 
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/jquery.mobile.tizen.pinch.js b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/js/src/jquery.mobile.tizen.pinch.js
new file mode 100644 (file)
index 0000000..0213c7b
--- /dev/null
@@ -0,0 +1,173 @@
+
+/* ***************************************************************************
+ * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ *
+ *     Author: Minkyu Kang <mk7.kang@samsung.com>
+ */
+
+/*
+ * Pinch Event
+ *
+ * Events
+ *     pinchstart: triggered when start the touched two points
+ *     pinch: triggered when move the touch point after pinchstart event occured
+ *     pinchend: triggered when touchend event after pinchstart event occured
+ *
+ * Parameters
+ *     point: touched points
+ *     ratio: origin point-to-current point ratio for moving distance
+ *
+ *     $("#pinch").bind("pinch", function (e, p) {
+ *             console.log("point[0].x: " + p.point[0].x);
+ *             console.log("point[0].y: " + p.point[0].y);
+ *             console.log("point[1].x: " + p.point[1].x);
+ *             console.log("point[1].y: " + p.point[1].y);
+ *             console.log("ratio: " + p.ratio);
+ *     });
+ *
+ * Options
+ *     $.mobile.pinch.enabled: true or false
+ *     $.mobile.pinch.min: minimum value of ratio
+ *     $.mobile.pinch.max: maximum value of ratio
+ *     $.mobile.pinch.factor: scale factor of ratio
+ *     $.mobile.pinch.threshold: move threshold of ratio
+ *     $.mobile.pinch.interval: interval for pinch event
+ */
+
+( function( $, window, undefined ) {
+
+pinch_event = {
+       setup: function () {
+               var thisObject = this,
+                       $this = $( thisObject );
+
+               if ( !$.mobile.support.touch ) {
+                       return;
+               }
+
+               function getDistance( point ) {
+                       var x = point[0].x - point[1].x,
+                               y = point[0].y - point[0].y;
+
+                       return Math.sqrt( ( x * x ) + ( y * y ) );
+               }
+
+               function getParameter( point, ratio ) {
+                       return { point: point, ratio: ratio };
+               }
+
+               $this.bind( "touchstart", function ( event ) {
+                       var data = event.originalEvent.touches,
+                               origin,
+                               last_ratio = 1,
+                               processing = false;
+
+                       if ( !$.mobile.pinch.enabled ) {
+                               return;
+                       }
+
+                       if ( data.length != 2 ) {
+                               return;
+                       }
+
+                       origin = [
+                                       { x: data[0].pageX, y: data[0].pageY },
+                                       { x: data[1].pageX, y: data[1].pageY }
+                       ];
+
+                       $( event.target ).trigger( "pinchstart", getParameter( origin, undefined ) );
+
+                       function pinchHandler( event ) {
+                               var data = event.originalEvent.touches,
+                                       current,
+                                       ratio,
+                                       delta,
+                                       factor = $( window ).width() / $.mobile.pinch.factor;
+
+                               if ( processing ) {
+                                       return;
+                               }
+
+                               if ( !origin ) {
+                                       return;
+                               }
+
+                               current = [
+                                               { x: data[0].pageX, y: data[0].pageY },
+                                               { x: data[1].pageX, y: data[1].pageY }
+                               ];
+
+                               delta = getDistance( current ) - getDistance( origin );
+
+                               ratio = 1 + delta / factor;
+
+                               if ( ratio < $.mobile.pinch.min ) {
+                                       ratio = $.mobile.pinch.min;
+                               } else if ( ratio > $.mobile.pinch.max ) {
+                                       ratio = $.mobile.pinch.max;
+                               }
+
+                               if ( Math.abs( ratio - last_ratio ) < $.mobile.pinch.threshold ) {
+                                       return;
+                               }
+
+                               $( event.target ).trigger( "pinch", getParameter( current, ratio ) );
+
+                               last_ratio = ratio;
+
+                               if ( $.mobile.pinch.interval ) {
+                                       processing = true;
+
+                                       setTimeout( function () {
+                                               processing = false;
+                                       }, $.mobile.pinch.interval );
+                               }
+                       }
+
+                       $this.bind( "touchmove", pinchHandler )
+                               .one( "touchend", function ( event ) {
+                                       $this.unbind( "touchmove", pinchHandler );
+                                       $( event.target ).trigger( "pinchend",
+                                                               getParameter( undefined, last_ratio ) );
+
+                                       origin = undefined;
+                                       current = undefined;
+                                       last_ratio = 1;
+                                       processing = false;
+                               });
+               });
+       }
+};
+
+$.event.special["pinch"] = pinch_event;
+
+$.mobile.pinch = {
+       enabled: true,
+       min: 0.1,
+       max: 3,
+       factor: 4,
+       threshold: 0.01,
+       interval: 50
+};
+
+})( jQuery, this );
+
index eaa90d2..71d3990 100644 (file)
-\r
-/* ***************************************************************************\r
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.\r
- *\r
- * Permission is hereby granted, free of charge, to any person obtaining a\r
- * copy of this software and associated documentation files (the "Software"),\r
- * to deal in the Software without restriction, including without limitation\r
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
- * and/or sell copies of the Software, and to permit persons to whom the\r
- * Software is furnished to do so, subject to the following conditions:\r
- *\r
- * The above copyright notice and this permission notice shall be included in\r
- * all copies or substantial portions of the Software.\r
- *\r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\r
- * DEALINGS IN THE SOFTWARE.\r
- * ***************************************************************************\r
- *\r
- * Authors: Hyunsook Park <hyunsook.park@samsung.com>\r
- *                     Wonseop Kim <wonseop.kim@samsung.com>\r
-*/\r
-\r
-( function ( $, window, document, undefined ) {\r
-       var _canvas = document.createElement( 'canvas' ),\r
-               _context = _canvas.getContext( '2d' );\r
-\r
-       function fileSystemErrorMessage( e ) {\r
-               var FileError = window.FileError,\r
-                       msg = '';\r
-               switch ( e.code ) {\r
-               case FileError.QUOTA_EXCEEDED_ERR:\r
-                       msg = 'QUOTA_EXCEEDED_ERR';\r
-                       break;\r
-               case FileError.NOT_FOUND_ERR:\r
-                       msg = 'NOT_FOUND_ERR';\r
-                       break;\r
-               case FileError.SECURITY_ERR:\r
-                       msg = 'SECURITY_ERR';\r
-                       break;\r
-               case FileError.INVALID_MODIFICATION_ERR:\r
-                       msg = 'INVALID_MODIFICATION_ERR';\r
-                       break;\r
-               case FileError.INVALID_STATE_ERR:\r
-                       msg = 'INVALID_STATE_ERR';\r
-                       break;\r
-               default:\r
-                       msg = 'Unknown Error';\r
-                       break;\r
-               }\r
-               return msg;\r
-       }\r
-\r
-       function getInternalURLFromURL( url ) {\r
-               var internalURL = url.replace( /\//gi, "_" );\r
-               return internalURL;\r
-       }\r
-\r
-       function resize( imagewidth, imageheight, thumbwidth, thumbheight, fit ) {\r
-               var w = 0, h = 0, x = 0, y = 0,\r
-                       widthratio = imagewidth / thumbwidth,\r
-                       heightratio = imageheight / thumbheight,\r
-                       maxratio = Math.max( widthratio, heightratio );\r
-\r
-               if ( fit ) {\r
-                       w = thumbwidth;\r
-                       h = thumbheight;\r
-               } else {\r
-                       if ( maxratio > 1 ) {\r
-                               w = imagewidth / maxratio;\r
-                               h = imageheight / maxratio;\r
-                       } else {\r
-                               w = imagewidth;\r
-                               h = imageheight;\r
-                       }\r
-                       x = ( thumbwidth - w ) / 2;\r
-                       y = ( thumbheight - h ) / 2;\r
-               }\r
-\r
-               return { w: w, h: h, x: x, y: y };\r
-       }\r
-\r
-       function getThumbnail( img, thumbwidth, thumbheight, fit ) {\r
-               var dimensions, url;\r
-               _canvas.width = thumbwidth;\r
-               _canvas.height = thumbheight;\r
-               dimensions = resize( img.width, img.height, thumbwidth, thumbheight, fit );\r
-               _context.fillStyle = "#000000";\r
-               _context.fillRect ( 0, 0, thumbwidth, thumbheight );\r
-               _context.drawImage( img, dimensions.x, dimensions.y, dimensions.w, dimensions.h );\r
-               url = _canvas.toDataURL();\r
-               return url;\r
-       }\r
-\r
-       $.imageloader = {\r
-               _grantedBytes: 1024 * 1024,\r
-               getThumbnail: function ( url, _callback ) {\r
-                       var internalURL, canvasDataURI;\r
-                       function errorHandler( e ) {\r
-                               var msg = fileSystemErrorMessage( e );\r
-                               if ( _callback ) {\r
-                                       _callback( ( msg === "NOT_FOUND_ERR" ) ? msg : null );\r
-                               }\r
-                       }\r
-\r
-                       internalURL = getInternalURLFromURL( url );\r
-                       try {\r
-                               canvasDataURI = localStorage.getItem( internalURL );\r
-                               if ( _callback ) {\r
-                                       _callback( ( canvasDataURI === null ) ? "NOT_FOUND_ERR" : canvasDataURI );\r
-                               }\r
-                       } catch ( e ) {\r
-                               if ( _callback ) {\r
-                                       _callback( ( e.type === "non_object_property_load" ) ? "NOT_FOUND_ERR" : null );\r
-                               }\r
-                       }\r
-               },\r
-\r
-               setThumbnail: function ( url, _callback, thumbWidth, thumbHeight, fit ) {\r
-                       var image, internalURL, canvasDataURI;\r
-                       function errorHandler( e ) {\r
-                               var msg = fileSystemErrorMessage( e );\r
-                               if ( _callback ) {\r
-                                       _callback( ( msg === "NOT_FOUND_ERR" ) ? msg : null );\r
-                               }\r
-                       }\r
-\r
-                       thumbWidth = thumbWidth || 128;\r
-                       thumbHeight = thumbHeight || 128;\r
-                       fit = fit || true;\r
-                       image = new Image();\r
-                       image.onload = function () {\r
-                               internalURL = getInternalURLFromURL( url );\r
-                               canvasDataURI = getThumbnail( this, thumbWidth, thumbHeight, fit );\r
-                               try {\r
-                                       localStorage.setItem( internalURL, canvasDataURI );\r
-                                       if ( _callback ) {\r
-                                               _callback( canvasDataURI );\r
-                                       }\r
-                               } catch ( e ) {\r
-                                       if ( _callback ) {\r
-                                               _callback( ( e.type === "non_object_property_load" ) ? "NOT_FOUND_ERR" : null );\r
-                                       }\r
-                               }\r
-                       };\r
-                       image.src = url;\r
-               },\r
-\r
-               removeThumbnail: function ( url ) {\r
-                       var internalURL;\r
-                       function errorHandler( e ) {\r
-                               fileSystemErrorMessage( e );\r
-                       }\r
-\r
-                       internalURL = getInternalURLFromURL( url );\r
-                       try {\r
-                               localStorage.removeItem( internalURL );\r
-                       } catch ( e ) {\r
-                               throw e;\r
-                       }\r
-               }\r
-       };\r
-\r
-} ( jQuery, window, document ) );\r
-\r
+
+/* ***************************************************************************
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ *
+ * Authors: Hyunsook Park <hyunsook.park@samsung.com>
+ *                     Wonseop Kim <wonseop.kim@samsung.com>
+*/
+
+( function ( $, window, document, undefined ) {
+       var _canvas = document.createElement( 'canvas' ),
+               _context = _canvas.getContext( '2d' );
+
+       function fileSystemErrorMessage( e ) {
+               var FileError = window.FileError,
+                       msg = '';
+               switch ( e.code ) {
+               case FileError.QUOTA_EXCEEDED_ERR:
+                       msg = 'QUOTA_EXCEEDED_ERR';
+                       break;
+               case FileError.NOT_FOUND_ERR:
+                       msg = 'NOT_FOUND_ERR';
+                       break;
+               case FileError.SECURITY_ERR:
+                       msg = 'SECURITY_ERR';
+                       break;
+               case FileError.INVALID_MODIFICATION_ERR:
+                       msg = 'INVALID_MODIFICATION_ERR';
+                       break;
+               case FileError.INVALID_STATE_ERR:
+                       msg = 'INVALID_STATE_ERR';
+                       break;
+               default:
+                       msg = 'Unknown Error';
+                       break;
+               }
+               return msg;
+       }
+
+       function getInternalURLFromURL( url ) {
+               var internalURL = url.replace( /\//gi, "_" );
+               return internalURL;
+       }
+
+       function resize( imagewidth, imageheight, thumbwidth, thumbheight, fit ) {
+               var w = 0, h = 0, x = 0, y = 0,
+                       widthratio = imagewidth / thumbwidth,
+                       heightratio = imageheight / thumbheight,
+                       maxratio = Math.max( widthratio, heightratio );
+
+               if ( fit ) {
+                       w = thumbwidth;
+                       h = thumbheight;
+               } else {
+                       if ( maxratio > 1 ) {
+                               w = imagewidth / maxratio;
+                               h = imageheight / maxratio;
+                       } else {
+                               w = imagewidth;
+                               h = imageheight;
+                       }
+                       x = ( thumbwidth - w ) / 2;
+                       y = ( thumbheight - h ) / 2;
+               }
+
+               return { w: w, h: h, x: x, y: y };
+       }
+
+       function getThumbnail( img, thumbwidth, thumbheight, fit ) {
+               var dimensions, url;
+               _canvas.width = thumbwidth;
+               _canvas.height = thumbheight;
+               dimensions = resize( img.width, img.height, thumbwidth, thumbheight, fit );
+               _context.fillStyle = "#000000";
+               _context.fillRect ( 0, 0, thumbwidth, thumbheight );
+               _context.drawImage( img, dimensions.x, dimensions.y, dimensions.w, dimensions.h );
+               url = _canvas.toDataURL();
+               return url;
+       }
+
+       $.imageloader = {
+               _grantedBytes: 1024 * 1024,
+               getThumbnail: function ( url, _callback ) {
+                       var internalURL, canvasDataURI;
+                       function errorHandler( e ) {
+                               var msg = fileSystemErrorMessage( e );
+                               if ( _callback ) {
+                                       _callback( ( msg === "NOT_FOUND_ERR" ) ? msg : null );
+                               }
+                       }
+
+                       internalURL = getInternalURLFromURL( url );
+                       try {
+                               canvasDataURI = localStorage.getItem( internalURL );
+                               if ( _callback ) {
+                                       _callback( ( canvasDataURI === null ) ? "NOT_FOUND_ERR" : canvasDataURI );
+                               }
+                       } catch ( e ) {
+                               if ( _callback ) {
+                                       _callback( ( e.type === "non_object_property_load" ) ? "NOT_FOUND_ERR" : null );
+                               }
+                       }
+               },
+
+               setThumbnail: function ( url, _callback, thumbWidth, thumbHeight, fit ) {
+                       var image, internalURL, canvasDataURI;
+                       function errorHandler( e ) {
+                               var msg = fileSystemErrorMessage( e );
+                               if ( _callback ) {
+                                       _callback( ( msg === "NOT_FOUND_ERR" ) ? msg : null );
+                               }
+                       }
+
+                       thumbWidth = thumbWidth || 128;
+                       thumbHeight = thumbHeight || 128;
+                       fit = fit || true;
+                       image = new Image();
+                       image.onload = function () {
+                               internalURL = getInternalURLFromURL( url );
+                               canvasDataURI = getThumbnail( this, thumbWidth, thumbHeight, fit );
+                               try {
+                                       localStorage.setItem( internalURL, canvasDataURI );
+                                       if ( _callback ) {
+                                               _callback( canvasDataURI );
+                                       }
+                               } catch ( e ) {
+                                       if ( _callback ) {
+                                               _callback( ( e.type === "non_object_property_load" ) ? "NOT_FOUND_ERR" : null );
+                                       }
+                               }
+                       };
+                       image.src = url;
+               },
+
+               removeThumbnail: function ( url ) {
+                       var internalURL;
+                       function errorHandler( e ) {
+                               fileSystemErrorMessage( e );
+                       }
+
+                       internalURL = getInternalURLFromURL( url );
+                       try {
+                               localStorage.removeItem( internalURL );
+                       } catch ( e ) {
+                               throw e;
+                       }
+               }
+       };
+
+} ( jQuery, window, document ) );
+
index 7921a68..fdfbfa8 100644 (file)
-\r
-/* ***************************************************************************\r
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.\r
- *\r
- * Permission is hereby granted, free of charge, to any person obtaining a\r
- * copy of this software and associated documentation files (the "Software"),\r
- * to deal in the Software without restriction, including without limitation\r
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
- * and/or sell copies of the Software, and to permit persons to whom the\r
- * Software is furnished to do so, subject to the following conditions:\r
- *\r
- * The above copyright notice and this permission notice shall be included in\r
- * all copies or substantial portions of the Software.\r
- *\r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\r
- * DEALINGS IN THE SOFTWARE.\r
- * ***************************************************************************\r
- *\r
- * Authors: Hyunsook Park <hyunsook.park@samsung.com>\r
- *                     Wonseop Kim <wonseop.kim@samsung.com>\r
-*/\r
-\r
-( function ( $, window, undefined ) {\r
-       var HALF_PI = Math.PI / 2,\r
-               DEFAULT_STEP = 0.001,\r
-               MotionPath = {},\r
-               vec3 = window.vec3,\r
-               arcLength2d = function ( p0, p1 ) {\r
-                       var d = [ p1[0] - p0[0], p1[1] - p0[1] ],\r
-                               value = Math.sqrt( d[0] * d[0] + d[1] * d[1] );\r
-                       return value;\r
-               },\r
-               arcLength3d = function ( p0, p1 ) {\r
-                       var d = [ p1[0] - p0[0], p1[1] - p0[1], p1[2] - p0[2] ],\r
-                               value = Math.sqrt( d[0] * d[0] + d[1] * d[1] + d[2] * d[2] );\r
-                       return value;\r
-               };\r
-\r
-       MotionPath.base = function () {};\r
-       MotionPath.base.prototype = {\r
-               points: [],\r
-               step: DEFAULT_STEP,\r
-               length: 0,\r
-               levels: [],\r
-               init: function ( data ) {},\r
-               calculateLevel: function ( maxLevel ) {},\r
-               calculateTotalLength: function () {},\r
-               getPosition: function ( percent ) {},\r
-               getPercent: function ( start, interval ) {},\r
-               getAngle: function ( percent ) {}\r
-       };\r
-\r
-       MotionPath.bezier2d = function () {};\r
-       MotionPath.bezier2d.prototype = $.extend( true, {}, MotionPath.base.prototype, {\r
-               init: function ( data ) {\r
-                       this.points = data.points;\r
-                       this.step = data.step || DEFAULT_STEP;\r
-                       this.length = this.calculateTotalLength();\r
-                       this.levels = this.calculateLevel( data.maxLevel ) || [];\r
-               },\r
-\r
-               calculateLevel: function ( maxLevel ) {\r
-                       var totalLength = this.length,\r
-                               interval = totalLength / maxLevel,\r
-                               levels = [],\r
-                               i;\r
-\r
-                       if ( !maxLevel ) {\r
-                               return null;\r
-                       }\r
-\r
-                       for ( i = 0; i < maxLevel; i += 1 ) {\r
-                               levels[maxLevel - i] = this.getPercent( 0, interval * i );\r
-                       }\r
-\r
-                       return levels;\r
-               },\r
-\r
-               calculateTotalLength: function () {\r
-                       var step = this.step,\r
-                               current = this.getPosition( 0 ),\r
-                               last = current,\r
-                               length = 0,\r
-                               percent;\r
-                       for ( percent = step; percent <= 1; percent += step ) {\r
-                               current = this.getPosition( percent );\r
-                               length += arcLength2d( last, current );\r
-                               last = current;\r
-                       }\r
-                       return length;\r
-               },\r
-\r
-               getPosition: function ( percent ) {\r
-                       var points = this.points,\r
-                               getValue = function ( p1, c1, c2, p2, t ) {\r
-                                       return Math.pow(1 - t, 3) * p1 +\r
-                                               3 * t * Math.pow( 1 - t, 2 ) * c1 +\r
-                                               3 * Math.pow( t, 2 ) * ( 1 - t ) * c2 +\r
-                                               Math.pow( t, 3 ) * p2;\r
-                               },\r
-                               result = [\r
-                                       getValue( points[0][0], points[1][0], points[2][0], points[3][0], percent ),\r
-                                       getValue( points[0][1], points[1][1], points[2][1], points[3][1], percent )\r
-                               ];\r
-                       return result;\r
-               },\r
-\r
-               getPercent: function ( start, interval ) {\r
-                       var step = this.step,\r
-                               current = this.getPosition( start = start || 0 ),\r
-                               last = current,\r
-                               targetLength = start + interval,\r
-                               length = 0,\r
-                               percent;\r
-\r
-                       for ( percent = start + step; percent <= 1; percent += step ) {\r
-                               current = this.getPosition( percent );\r
-                               length += arcLength2d( last, current );\r
-                               if ( length >= targetLength ) {\r
-                                       return percent;\r
-                               }\r
-                               last = current;\r
-                       }\r
-                       return 1;\r
-               },\r
-\r
-               getAngle: function ( percent ) {\r
-                       var points = this.points,\r
-                               getTangent = function ( p1, c1, c2, p2, t ) {\r
-                                       return 3 * t * t * ( -p1 + 3 * c1 - 3 * c2 + p2 ) + 6 * t * ( p1 - 2 * c1 + c2 ) + 3 * ( -p1 + c1 );\r
-                               },\r
-                               tx = getTangent( points[0][0], points[1][0], points[2][0], points[3][0], percent ),\r
-                               ty = getTangent( points[0][1], points[1][1], points[2][1], points[3][1], percent );\r
-                       return Math.atan2( tx, ty ) - HALF_PI;\r
-               }\r
-\r
-       } );\r
-\r
-       // clamped cubic B-spline curve\r
-       // http://web.mit.edu/hyperbook/Patrikalakis-Maekawa-Cho/node17.html\r
-       // http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/bspline-curve-coef.html\r
-       MotionPath.bspline = function () {};\r
-       MotionPath.bspline.prototype = $.extend( true, {}, MotionPath.base.prototype, {\r
-               _degree: 3,\r
-               _numberOfControls : 0,\r
-               _knotVectors: [],\r
-               _numberOfKnots: 0,\r
-\r
-               init: function ( data ) {\r
-                       this.points = data.points;\r
-                       this.step = data.step || DEFAULT_STEP;\r
-                       this._numberOfPoints = this.points.length - 1;\r
-                       this._numberOfKnots = this._numberOfPoints + this._degree + 1;\r
-\r
-                       var deltaKnot = 1 / ( this._numberOfKnots - ( 2 * this._degree ) ),\r
-                               v = deltaKnot,\r
-                               i = 0;\r
-\r
-                       while ( i <= this._numberOfKnots ) {\r
-                               if ( i <= this._degree ) {\r
-                                       this._knotVectors.push( 0 );\r
-                               } else if ( i < this._numberOfKnots - this._degree + 1 ) {\r
-                                       this._knotVectors.push( v );\r
-                                       v += deltaKnot;\r
-                               } else {\r
-                                       this._knotVectors.push( 1 );\r
-                               }\r
-                               i += 1;\r
-                       }\r
-\r
-                       this.length = this.calculateTotalLength();\r
-                       this.levels = this.calculateLevel( data.maxLevel ) || [];\r
-               },\r
-\r
-               _Np: function ( percent, i, degree ) {\r
-                       var knots = this._knotVectors,\r
-                               A = 0,\r
-                               B = 0,\r
-                               denominator = 0,\r
-                               N0 = function ( percent, i ) {\r
-                                       return ( ( knots[i] <= percent && percent < knots[i + 1] ) ? 1 : 0 );\r
-                               };\r
-\r
-                       if ( degree === 1 ) {\r
-                               A = N0( percent, i );\r
-                               B = N0( percent, i + 1 );\r
-                       } else {\r
-                               A = this._Np( percent, i, degree - 1 );\r
-                               B = this._Np( percent, i + 1, degree - 1 );\r
-                       }\r
-\r
-                       denominator = knots[i + degree] - knots[i];\r
-                       A *= ( denominator !== 0 ) ? ( ( percent - knots[i] ) / denominator ) : 0;\r
-                       denominator = knots[i + degree + 1] - knots[i + 1];\r
-                       B *= ( denominator !== 0 ) ? ( ( knots[i + degree + 1] - percent ) / denominator ) : 0;\r
-\r
-                       return A + B;\r
-               },\r
-\r
-               calculateLevel: function ( maxLevel ) {\r
-                       var totalLength = this.length,\r
-                               interval = totalLength / maxLevel,\r
-                               levels = [],\r
-                               i;\r
-\r
-                       if ( !maxLevel ) {\r
-                               return null;\r
-                       }\r
-\r
-                       for ( i = 0; i < maxLevel; i += 1 ) {\r
-                               levels[maxLevel - i] = this.getPercent( 0, interval * i );\r
-                       }\r
-                       return levels;\r
-               },\r
-\r
-               calculateTotalLength: function () {\r
-                       var step = this.step,\r
-                               current = this.getPosition( 0 ),\r
-                               last = current,\r
-                               length = 0,\r
-                               percent;\r
-                       for ( percent = step; percent <= 1; percent += step ) {\r
-                               current = this.getPosition( percent );\r
-                               length += arcLength3d( last, current );\r
-                               last = current;\r
-                       }\r
-                       return length;\r
-               },\r
-\r
-               getPosition: function ( percent ) {\r
-                       var result = [], i, j, sum;\r
-                       percent = percent.toFixed( 4 );\r
-                       for ( j = 0; j < 3; j += 1 ) {\r
-                               sum = 0;\r
-                               for ( i = 0; i <= this._numberOfPoints; i += 1 ) {\r
-                                       sum += this.points[i][j] * this._Np( percent, i, this._degree );\r
-                               }\r
-                               result[j] = sum;\r
-                       }\r
-\r
-                       return result;\r
-               },\r
-\r
-               getPercent: function ( start, interval ) {\r
-                       var step = this.step,\r
-                               current = this.getPosition( start = start || 0 ),\r
-                               last = current,\r
-                               targetLength = start + interval,\r
-                               length = 0,\r
-                               percent;\r
-\r
-                       for ( percent = start + step; percent <= 1; percent += step ) {\r
-                               current = this.getPosition( percent );\r
-                               length += arcLength3d( last, current );\r
-                               if ( length >= targetLength ) {\r
-                                       return percent;\r
-                               }\r
-                               last = current;\r
-                       }\r
-                       return 1;\r
-               },\r
-\r
-               getAngle: function ( percent ) {\r
-                       var prev = this.getPosition( percent ),\r
-                               next = this.getPosition( percent + 0.001 ),\r
-                               dir = vec3.normalize( vec3.direction( prev, next ) ),\r
-                               cosValue = vec3.dot( dir, [1, 0, 0] );\r
-\r
-                       return Math.acos( cosValue ) + Math.PI;\r
-               }\r
-       } );\r
-\r
-       $.motionpath = function ( type, data ) {\r
-               var object = new MotionPath[type]();\r
-               object.init( data );\r
-               return object;\r
-       };\r
-} ( jQuery, window ) );\r
-\r
+
+/* ***************************************************************************
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ *
+ * Authors: Hyunsook Park <hyunsook.park@samsung.com>
+ *                     Wonseop Kim <wonseop.kim@samsung.com>
+*/
+
+( function ( $, window, undefined ) {
+       var HALF_PI = Math.PI / 2,
+               DEFAULT_STEP = 0.001,
+               MotionPath = {},
+               vec3 = window.vec3,
+               arcLength3d = function ( p0, p1 ) {
+                       var d = [ p1[0] - p0[0], p1[1] - p0[1], p1[2] - p0[2] ],
+                               value = Math.sqrt( d[0] * d[0] + d[1] * d[1] + d[2] * d[2] );
+                       return value;
+               };
+
+       MotionPath.base = function () {};
+       MotionPath.base.prototype = {
+               points: [],
+               step: DEFAULT_STEP,
+               length: 0,
+               levels: [],
+               init: function ( data ) {},
+               calculateLevel: function ( maxLevel ) {},
+               calculateTotalLength: function () {},
+               getPosition: function ( percent ) {},
+               getPercent: function ( start, interval ) {},
+               getAngle: function ( percent ) {}
+       };
+
+       MotionPath.bezier2d = function () {};
+       MotionPath.bezier2d.prototype = $.extend( true, {}, MotionPath.base.prototype, {
+               init: function ( data ) {
+                       this.points = data.points;
+                       this.step = data.step || DEFAULT_STEP;
+                       this.length = this.calculateTotalLength();
+                       this.levels = this.calculateLevel( data.maxLevel ) || [];
+               },
+
+               calculateLevel: function ( maxLevel ) {
+                       var totalLength = this.length,
+                               interval = totalLength / maxLevel,
+                               levels = [],
+                               i;
+
+                       if ( !maxLevel ) {
+                               return null;
+                       }
+
+                       for ( i = 0; i < maxLevel; i += 1 ) {
+                               levels[maxLevel - i] = this.getPercent( 0, interval * i );
+                       }
+
+                       return levels;
+               },
+
+               calculateTotalLength: function () {
+                       var step = this.step,
+                               current = this.getPosition( 0 ),
+                               last = current,
+                               length = 0,
+                               percent;
+                       for ( percent = step; percent <= 1; percent += step ) {
+                               current = this.getPosition( percent );
+                               length += arcLength3d( last, current );
+                               last = current;
+                       }
+                       return length;
+               },
+
+               getPosition: function ( percent ) {
+                       var points = this.points,
+                               getValue = function ( p1, c1, c2, p2, t ) {
+                                       return Math.pow(1 - t, 3) * p1 +
+                                               3 * t * Math.pow( 1 - t, 2 ) * c1 +
+                                               3 * Math.pow( t, 2 ) * ( 1 - t ) * c2 +
+                                               Math.pow( t, 3 ) * p2;
+                               },
+                               result = [
+                                       getValue( points[0][0], points[1][0], points[2][0], points[3][0], percent ),
+                                       getValue( points[0][2], points[1][2], points[2][2], points[3][2], percent )
+                               ];
+                       return [ result[0], 0, result[1] ];
+               },
+
+               getPercent: function ( start, interval ) {
+                       var step = this.step,
+                               current = this.getPosition( start = start || 0 ),
+                               last = current,
+                               targetLength = start + interval,
+                               length = 0,
+                               percent;
+
+                       for ( percent = start + step; percent <= 1; percent += step ) {
+                               current = this.getPosition( percent );
+                               length += arcLength3d( last, current );
+                               if ( length >= targetLength ) {
+                                       return percent;
+                               }
+                               last = current;
+                       }
+                       return 1;
+               },
+
+               getAngle: function ( percent ) {
+                       var points = this.points,
+                               getTangent = function ( p1, c1, c2, p2, t ) {
+                                       return 3 * t * t * ( -p1 + 3 * c1 - 3 * c2 + p2 ) + 6 * t * ( p1 - 2 * c1 + c2 ) + 3 * ( -p1 + c1 );
+                               },
+                               tx = getTangent( points[0][0], points[1][0], points[2][0], points[3][0], percent ),
+                               ty = getTangent( points[0][2], points[1][2], points[2][2], points[3][2], percent );
+                       return Math.atan2( tx, ty ) - HALF_PI;
+               }
+
+       } );
+
+       // clamped cubic B-spline curve
+       // http://web.mit.edu/hyperbook/Patrikalakis-Maekawa-Cho/node17.html
+       // http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/bspline-curve-coef.html
+       MotionPath.bspline = function () {};
+       MotionPath.bspline.prototype = $.extend( true, {}, MotionPath.base.prototype, {
+               _degree: 3,
+               _numberOfControls : 0,
+               _knotVectors: [],
+               _numberOfKnots: 0,
+
+               init: function ( data ) {
+                       this.points = data.points;
+                       this.step = data.step || DEFAULT_STEP;
+                       this._numberOfPoints = this.points.length - 1;
+                       this._numberOfKnots = this._numberOfPoints + this._degree + 1;
+
+                       var deltaKnot = 1 / ( this._numberOfKnots - ( 2 * this._degree ) ),
+                               v = deltaKnot,
+                               i = 0;
+
+                       while ( i <= this._numberOfKnots ) {
+                               if ( i <= this._degree ) {
+                                       this._knotVectors.push( 0 );
+                               } else if ( i < this._numberOfKnots - this._degree + 1 ) {
+                                       this._knotVectors.push( v );
+                                       v += deltaKnot;
+                               } else {
+                                       this._knotVectors.push( 1 );
+                               }
+                               i += 1;
+                       }
+
+                       this.length = this.calculateTotalLength();
+                       this.levels = this.calculateLevel( data.maxLevel ) || [];
+               },
+
+               _Np: function ( percent, i, degree ) {
+                       var knots = this._knotVectors,
+                               A = 0,
+                               B = 0,
+                               denominator = 0,
+                               N0 = function ( percent, i ) {
+                                       return ( ( knots[i] <= percent && percent < knots[i + 1] ) ? 1 : 0 );
+                               };
+
+                       if ( degree === 1 ) {
+                               A = N0( percent, i );
+                               B = N0( percent, i + 1 );
+                       } else {
+                               A = this._Np( percent, i, degree - 1 );
+                               B = this._Np( percent, i + 1, degree - 1 );
+                       }
+
+                       denominator = knots[i + degree] - knots[i];
+                       A *= ( denominator !== 0 ) ? ( ( percent - knots[i] ) / denominator ) : 0;
+                       denominator = knots[i + degree + 1] - knots[i + 1];
+                       B *= ( denominator !== 0 ) ? ( ( knots[i + degree + 1] - percent ) / denominator ) : 0;
+
+                       return A + B;
+               },
+
+               calculateLevel: function ( maxLevel ) {
+                       var totalLength = this.length,
+                               interval = totalLength / maxLevel,
+                               levels = [],
+                               i;
+
+                       if ( !maxLevel ) {
+                               return null;
+                       }
+
+                       for ( i = 0; i < maxLevel; i += 1 ) {
+                               levels[maxLevel - i] = this.getPercent( 0, interval * i );
+                       }
+                       return levels;
+               },
+
+               calculateTotalLength: function () {
+                       var step = this.step,
+                               current = this.getPosition( 0 ),
+                               last = current,
+                               length = 0,
+                               percent;
+                       for ( percent = step; percent <= 1; percent += step ) {
+                               current = this.getPosition( percent );
+                               length += arcLength3d( last, current );
+                               last = current;
+                       }
+                       return length;
+               },
+
+               getPosition: function ( percent ) {
+                       var result = [], i, j, sum;
+                       percent = percent.toFixed( 4 );
+                       for ( j = 0; j < 3; j += 1 ) {
+                               sum = 0;
+                               for ( i = 0; i <= this._numberOfPoints; i += 1 ) {
+                                       sum += this.points[i][j] * this._Np( percent, i, this._degree );
+                               }
+                               result[j] = sum;
+                       }
+
+                       return result;
+               },
+
+               getPercent: function ( start, interval ) {
+                       var step = this.step,
+                               current = this.getPosition( start = start || 0 ),
+                               last = current,
+                               targetLength = start + interval,
+                               length = 0,
+                               percent;
+
+                       for ( percent = start + step; percent <= 1; percent += step ) {
+                               current = this.getPosition( percent );
+                               length += arcLength3d( last, current );
+                               if ( length >= targetLength ) {
+                                       return percent;
+                               }
+                               last = current;
+                       }
+                       return 1;
+               },
+
+               getAngle: function ( percent ) {
+                       var prev = this.getPosition( percent ),
+                               next = this.getPosition( percent + 0.001 ),
+                               dir = vec3.normalize( vec3.direction( prev, next ) ),
+                               cosValue = vec3.dot( dir, [1, 0, 0] );
+
+                       return Math.acos( cosValue ) + Math.PI;
+               }
+       } );
+
+       $.motionpath = function ( type, data ) {
+               var object = new MotionPath[type]();
+               object.init( data );
+               return object;
+       };
+} ( jQuery, window ) );
+
index 9944f55..a518155 100644 (file)
-\r
-/* ***************************************************************************\r
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.\r
- *\r
- * Permission is hereby granted, free of charge, to any person obtaining a\r
- * copy of this software and associated documentation files (the "Software"),\r
- * to deal in the Software without restriction, including without limitation\r
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
- * and/or sell copies of the Software, and to permit persons to whom the\r
- * Software is furnished to do so, subject to the following conditions:\r
- *\r
- * The above copyright notice and this permission notice shall be included in\r
- * all copies or substantial portions of the Software.\r
- *\r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\r
- * DEALINGS IN THE SOFTWARE.\r
- * ***************************************************************************\r
- *\r
- * Authors: Hyunsook Park <hyunsook.park@samsung.com>\r
- *                     Wonseop Kim <wonseop.kim@samsung.com>\r
-*/\r
-\r
-( function ( $, undefined ) {\r
-       $.webgl = {};\r
-\r
-       $.webgl.shader = {\r
-               _vertexShader: null,\r
-               _fragmentShader: null,\r
-\r
-               deleteShaders: function ( gl ) {\r
-                       gl.deleteShader( this._vertexShader );\r
-                       gl.deleteShader( this._fragmentShader );\r
-               },\r
-\r
-               addShaderProgram : function ( gl, vs, fs, isFile ) {\r
-                       var shaderProgram,\r
-                               vertexShaderSource = {},\r
-                               fragmentShaderSource = {};\r
-\r
-                       if ( isFile ) {\r
-                               vertexShaderSource = this.loadShaderFile( vs );\r
-                               fragmentShaderSource = this.loadShaderFile( fs );\r
-                       } else {\r
-                               vertexShaderSource.source = vs;\r
-                               fragmentShaderSource.source = fs;\r
-                       }\r
-\r
-                       this._vertexShader = this.getShader( gl, gl.VERTEX_SHADER, vertexShaderSource );\r
-                       this._fragmentShader = this.getShader( gl, gl.FRAGMENT_SHADER, fragmentShaderSource );\r
-\r
-                       shaderProgram = gl.createProgram();\r
-                       gl.attachShader( shaderProgram, this._vertexShader);\r
-                       gl.attachShader( shaderProgram, this._fragmentShader);\r
-                       gl.linkProgram( shaderProgram );\r
-\r
-                       if ( !gl.getProgramParameter( shaderProgram, gl.LINK_STATUS ) ) {\r
-                               window.alert( "Could not initialize Shaders!" );\r
-                       }\r
-                       return shaderProgram;\r
-               },\r
-\r
-               loadShaderFile : function ( path ) {\r
-                       var cache = null;\r
-                       $.ajax({\r
-                               async : false,\r
-                               url : path,\r
-                               success : function ( result ) {\r
-                                       cache = {\r
-                                               source: result\r
-                                       };\r
-                               }\r
-                       });\r
-                       return cache;\r
-               },\r
-\r
-               getShader: function ( gl, type, script ) {\r
-                       var shader;\r
-\r
-                       if ( !gl || !type || !script ) {\r
-                               return null;\r
-                       }\r
-\r
-                       shader = gl.createShader( type );\r
-\r
-                       gl.shaderSource( shader, script.source );\r
-                       gl.compileShader( shader );\r
-\r
-                       if ( !gl.getShaderParameter( shader, gl.COMPILE_STATUS ) ) {\r
-                               window.alert( gl.getShaderInfoLog( shader ) );\r
-                               gl.deleteShader( shader );\r
-                               return null;\r
-                       }\r
-                       return shader;\r
-               }\r
-       };\r
-\r
-       $.webgl.buffer = {\r
-               attribBufferData: function ( gl, attribArray ) {\r
-                       var attribBuffer = gl.createBuffer();\r
-\r
-                       gl.bindBuffer( gl.ARRAY_BUFFER, attribBuffer );\r
-                       gl.bufferData( gl.ARRAY_BUFFER, attribArray, gl.STATIC_DRAW );\r
-                       gl.bindBuffer( gl.ARRAY_BUFFER, null );\r
-\r
-                       return attribBuffer;\r
-               }\r
-       };\r
-\r
-} ( jQuery ) );\r
-\r
+
+/* ***************************************************************************
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ *
+ * Authors: Hyunsook Park <hyunsook.park@samsung.com>
+ *                     Wonseop Kim <wonseop.kim@samsung.com>
+*/
+
+( function ( $, undefined ) {
+       $.webgl = {};
+
+       $.webgl.shader = {
+               _vertexShader: null,
+               _fragmentShader: null,
+
+               deleteShaders: function ( gl ) {
+                       gl.deleteShader( this._vertexShader );
+                       gl.deleteShader( this._fragmentShader );
+               },
+
+               addShaderProgram : function ( gl, vs, fs, isFile ) {
+                       var shaderProgram,
+                               vertexShaderSource = {},
+                               fragmentShaderSource = {};
+
+                       if ( isFile ) {
+                               vertexShaderSource = this.loadShaderFile( vs );
+                               fragmentShaderSource = this.loadShaderFile( fs );
+                       } else {
+                               vertexShaderSource.source = vs;
+                               fragmentShaderSource.source = fs;
+                       }
+
+                       this._vertexShader = this.getShader( gl, gl.VERTEX_SHADER, vertexShaderSource );
+                       this._fragmentShader = this.getShader( gl, gl.FRAGMENT_SHADER, fragmentShaderSource );
+
+                       shaderProgram = gl.createProgram();
+                       gl.attachShader( shaderProgram, this._vertexShader);
+                       gl.attachShader( shaderProgram, this._fragmentShader);
+                       gl.linkProgram( shaderProgram );
+
+                       if ( !gl.getProgramParameter( shaderProgram, gl.LINK_STATUS ) ) {
+                               window.alert( "Could not initialize Shaders!" );
+                       }
+                       return shaderProgram;
+               },
+
+               loadShaderFile : function ( path ) {
+                       var cache = null;
+                       $.ajax({
+                               async : false,
+                               url : path,
+                               success : function ( result ) {
+                                       cache = {
+                                               source: result
+                                       };
+                               }
+                       });
+                       return cache;
+               },
+
+               getShader: function ( gl, type, script ) {
+                       var shader;
+
+                       if ( !gl || !type || !script ) {
+                               return null;
+                       }
+
+                       shader = gl.createShader( type );
+
+                       gl.shaderSource( shader, script.source );
+                       gl.compileShader( shader );
+
+                       if ( !gl.getShaderParameter( shader, gl.COMPILE_STATUS ) ) {
+                               window.alert( gl.getShaderInfoLog( shader ) );
+                               gl.deleteShader( shader );
+                               return null;
+                       }
+                       return shader;
+               }
+       };
+
+       $.webgl.buffer = {
+               attribBufferData: function ( gl, attribArray ) {
+                       var attribBuffer = gl.createBuffer();
+
+                       gl.bindBuffer( gl.ARRAY_BUFFER, attribBuffer );
+                       gl.bufferData( gl.ARRAY_BUFFER, attribArray, gl.STATIC_DRAW );
+                       gl.bindBuffer( gl.ARRAY_BUFFER, null );
+
+                       return attribBuffer;
+               }
+       };
+
+} ( jQuery ) );
+
index 60d10c6..4abe769 100644 (file)
@@ -105,6 +105,10 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
 
                this.setButtonText();
 
+               // TIZEN fix: The TIZEN buttonMarkup patch adds 'ui-btn-icon-only' class to the ui-btn-inner.
+               // It makes the text not to be shown, so the class must be removed. (Like JQM)
+               button.children('.ui-btn-inner').removeClass('ui-btn-icon-only');
+
                // Opera does not properly support opacity on select elements
                // In Mini, it hides the element, but not its text
                // On the desktop,it seems to do the opposite
index 1101fc1..108a60b 100644 (file)
@@ -65,7 +65,7 @@
  *             : Change Type and Format options. use datetimepicker( "option", "format" ) instead
  *
  * Events:
- *     date-changed: Raised when date/time was changed.
+ *     date-changed: Raised when date/time was changed. Date-changed event will be deprecated
  *
  * Examples:
  *     <ul data-role="listview">
@@ -98,8 +98,8 @@
  * How to get a return value:
  * ==========================
  * Bind to the 'date-changed' event, e.g.:
- *    $("#myDatetimepicker").bind("date-changed", function(e, date) {
- *        alert("New date: " + date.toString());
+ *    $("#myDatetimepicker").bind("change", function() {
+ *                     // your code
  *    });
  */
 
                                $( $li[current] ).addClass("current");
                                $div.jqmData( "list", $li );
                                $div.circularview();
+                               if( !obj._reflow ) {
+                                       obj._reflow = function() {
+                                               $div.circularview( "reflow" );
+                                               $div.circularview( 'centerTo', '.current', 0 );
+                                       }
+                                       $(window).bind( "resize" , obj._reflow );
+                               }
                                // cause ctxpopup forced to subtract 10
                                if ( $( window ).width() / 2 < target.offset().left ) {
                                        newLeft = -10;
index 68c3800..ae841f4 100644 (file)
                align_type: null,
                direction: 1,
                container: null,
+               orientationEventFire: false,
 
                _resize: function ( index ) {
                        var img = this.images[index],
 
                        obj.css( "display", "block" );
                        obj.append( this.images[index] );
-
                        loading();
                },
 
                        this.container.unbind( 'vmouseup' );
                        this.container.unbind( 'vmouseout' );
                },
+               _setTranslateposition : function ( $ele, value ) {
+                       var translate,
+                               cssArray = null;
+
+                       if ( $.support.cssTransform3d ) {
+                               translate = "translate3d(" + value + ", 0px, 0px)";
+                       } else {
+                               translate = "translate(" + value + ", 0px)";
+                       }
+                       cssArray = {"-moz-transform": translate,
+                                       "-webkit-transform": translate,
+                                       "-ms-transform": translate,
+                                       "-o-transform": translate,
+                                       "transform": translate};
+
+                       $ele.css(cssArray);
+                       return $ele;
+               },
                _moveLeft : function ( $ele , value , duration) {
                        var translate,
                                transition = "",
                        } else {
                                translate = "translate(" + value + ", 0px)";
                        }
-                       if( !duration ||  duration !== undefined ) {
+                       if( duration !== undefined ) {
                                transition =  "-webkit-transform " + (duration / 1000)+ "s ease";
                        }
                        cssArray = {"-moz-transform": translate,
                        this._attach( this.index + 1, this.next_img );
 
                        if ( this.prev_img.length ) {
-                               this._moveLeft( this.prev_img, -this.window_width + 'px');
+                               this._setTranslateposition( this.prev_img, -this.window_width + 'px');
                        }
 
                        this._moveLeft( this.cur_img, '0px');
                        if ( this.next_img.length ) {
-                               this._moveLeft( this.next_img, this.window_width + 'px' );
+                               this._setTranslateposition( this.next_img, this.window_width + 'px' );
                        }
                },
 
 
                        this.align_type = $( this.element ).jqmData( 'vertical-align' );
 
-                       $( window ).bind( 'resize', function () {
-                               self.refresh();
+                       $.extend( this, {
+                               _globalHandlers: [
+                                       {
+                                               src: $( window ),
+                                               handler: {
+                                                       orientationchange: $.proxy( this, "_orientationHandler" ),
+                                                       resize: $.proxy( this, "_resizeHandler" )
+                                               }
+                                       }
+                               ]
+                       });
+
+                       $.each( this._globalHandlers, function( idx, value ) {
+                               value.src.bind( value.handler );
                        });
                },
 
 
                        this._detach_all();
                },
-
+               _resizeHandler: function() {
+                       var self = this;
+                       if( self.orientationEventFire ) {
+                               self.refresh();
+                               self.orientationEventFire = false;
+                       }
+               },
+               _orientationHandler: function() {
+                       var self = this;
+                       self.refresh();
+                       self.orientationEventFire = true;
+               },
                refresh: function ( start_index ) {
                        this._update();
 
                                        this.cur_img = this.prev_img;
                                        this.prev_img = this.prev_img.prev();
                                        if ( this.prev_img.length ) {
-                                               this._moveLeft( this.prev_img, -this.window_width);
+                                               this._moveLeft( this.prev_img, -this.window_width + 'px' );
                                                this._attach( index - 2, this.prev_img );
                                        }
                                        this.index--;
                                        this.cur_img = this.next_img;
                                        this.next_img = this.next_img.next();
                                        if ( this.next_img.length ) {
-                                               this._moveLeft( this.next_img, this.window_width);
+                                               this._moveLeft( this.next_img, this.window_width + 'px' );
                                                this._attach( index + 2, this.next_img );
                                        }
                                }
                                temp_img = this.prev_img;
                                this.prev_img = this.prev_img.prev();
                                if ( this.prev_img.length ) {
-                                       this._moveLeft( this.prev_img, -this.window_width);
+                                       this._moveLeft( this.prev_img, -this.window_width + 'px' );
                                        this._attach( index - 1, this.prev_img );
                                }
                                this.index--;
                                temp_img = this.next_img;
                                this.next_img = this.next_img.next();
                                if ( this.next_img.length ) {
-                                       this._moveLeft( this.next_img, this.window_width);
+                                       this._moveLeft( this.next_img, this.window_width + 'px' );
                                        this._attach( index + 1, this.next_img );
                                }
 
                        }
 
                        this.refresh( index );
+               },
+
+               destory: function() {
+                       $( window ).unbind( 'resize', this._resizeHandler );
+                       $( window ).unbind( 'orientationchange' , this._orientationHandler );
                }
+
        }); /* End of widget */
 
        // auto self-init widgets
index 5b68ac2..b3b9869 100644 (file)
-\r
-\r
-/* ***************************************************************************\r
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.\r
- *\r
- * Permission is hereby granted, free of charge, to any person obtaining a\r
- * copy of this software and associated documentation files (the "Software"),\r
- * to deal in the Software without restriction, including without limitation\r
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
- * and/or sell copies of the Software, and to permit persons to whom the\r
- * Software is furnished to do so, subject to the following conditions:\r
- *\r
- * The above copyright notice and this permission notice shall be included in\r
- * all copies or substantial portions of the Software.\r
- *\r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\r
- * DEALINGS IN THE SOFTWARE.\r
- * ***************************************************************************\r
- *\r
- * Authors: Hyunsook Park <hyunsook.park@samsung.com>\r
- *                     Wonseop Kim <wonseop.kim@samsung.com>\r
- */\r
-\r
-/**\r
- *     'Gallery3D' is a 3D photo gallery widget.\r
- *     Images are arranged with a S-shaped curve on a 3-dimensional coordinate system.\r
- *     A user can rotate images by swiping the widget area.\r
- *     To improve performance, the size of image(s) displayed on the screen should be a square(under\r
- *     128X128 pixel) as possible. But if a user can't resize the images, this widget supports an image\r
- *     resizing feature and he/she can use it with "data-thumbnail-cache" option. ("data-thumbnail-cache"\r
- *     option resizes the gallery images under 128x128 pixels and stores the images on a local storage.\r
- *     So when a gallery3D widget is re-launched, the widget reuse the storage and a user can improve\r
- *     launching time. A browser or web runtime engine should support "Web Storage" feature to use that\r
- *     option.)\r
- *\r
- *     HTML Attributes:\r
- *\r
- *             data-thumbnail-cache : Determines whether to cache and resize images.\r
- *\r
- *     APIs:\r
- *\r
- *             next ( void )\r
- *                     : This method moves each image forward one by one.\r
- *             prev ( void )\r
- *                     : This method moves each image backward one by one.\r
- *             select ( [number] )\r
- *                     : When the "select" method is called with an argument, the method selects the image of given index.\r
- *                     If the method is called with no argument, it will return the Javascript object having "src"\r
- *                     attribute having the selected image’s URL.\r
- *             add ( object or string [, number] )\r
- *                     This method adds an image to Gallery3D widget.\r
- *                     If the second argument isn't inputted, the image is added at the 0th position.\r
- *             remove ( [number] )\r
- *                     : This method deletes an image from Gallery3d widget.\r
- *                     The argument defines the index of the image to be deleted.\r
- *                     If an argument isn't inputted, it removes current image.\r
- *             clearThumbnailCache ( void )\r
- *                     : This method clears the cache data of all images when thumbnailCache option is set as 'true'.\r
- *             refresh ( void )\r
- *                     : This method updates and redraws current widget.\r
- *             empty ( void )\r
- *                     : This method removes all of images from Gallery3D widget.\r
- *             length ( void )\r
- *                     : This method gets the number of images.\r
- *\r
- *     Events:\r
- *\r
- *             select : Triggered when an image is selected.\r
- *\r
- *     Examples:\r
- *\r
- *             <script>\r
- *                     $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
- *                             $( "#gallery3d" ).gallery3d( "add", "01.jpg" );\r
- *                     });\r
- *             </script>\r
- *             <div id="gallery3d" data-role="gallery3d"></div>\r
- */\r
-\r
-/**\r
-       @class Gallery3D\r
-       The gallery3d widget is a 3D photo gallery widget.\r
-       Images are arranged with a S-shaped curve on a 3-dimensional coordinate system.\r
-       A user can rotate images by swiping the widget area.\r
-       <br/><br/>To add an gallery3d widget to the application, use the following code:\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", "01.jpg" );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @property {Boolean} data-thumbnail-cache\r
-       Determines whether to cache and resize images.\r
-       To improve performance, the size of image(s) displayed on the screen should be a square (under 128X128 pixels).\r
-       "data-thumbnail-cache" option resizes the gallery images under 128x128 pixels and stores the images on a local storage.\r
-       So when a gallery3D widget is re-launched, the widget reuses the storage and the launching time can be improved.\r
-       A browser or web runtime engine must support "Web Storage" feature to use this option.\r
-*/\r
-/**\r
-       @event select\r
-       Triggered when an image is selected.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-                       }).on( "select", function ( event, data, index ) {\r
-                               // Handle the select event\r
-                               var urlOfImage = data.src, indexOfImage = index;\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method next\r
-       This method moves each image forward one by one.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } )\r
-                                       .gallery3d( "next" );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method prev\r
-       This method moves each image backward one by one.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } )\r
-                                       .gallery3d( "prev" );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method select\r
-       When the "select" method is called with an argument, the method selects the image of given index.\r
-       If the method is called with no argument, it will return the Javascript object having "src" attribute having the selected image’s URL.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-                               var selectedImage = $("#gallery3d"). gallery3d( "select" );\r
-                               // selectedImage = { src: "3.jpg" };\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method add\r
-       This method adds an image to Gallery3D widget.\r
-       The first argument is a Javascript object having a "src" attribute or a string of image's path.\r
-       The second argument is an index of images.\r
-       If second argument isn't inputted, the image is added at the 0th position.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", "2.jpg", 1 );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method remove\r
-       This method deletes an image from Gallery3d widget.\r
-       The argument defines the index of the image to be deleted.\r
-       If an argument isn't inputted, it removes current image.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-\r
-                               $( "#gallery3d" ).gallery3d( "remove" );\r
-                               $( "#gallery3d" ).gallery3d( "remove", 1 );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method clearThumbnailCache\r
-       This method clears the cache data of all images when thumbnailCache option is set as 'true'\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-\r
-                               $( "#gallery3d" ).gallery3d( "clearThumbnailCache" );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d" data-thumbnail-cache="true"></div>\r
-*/\r
-/**\r
-       @method refresh\r
-       This method updates and redraws current widget.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-\r
-                               $( "#gallery3d" ).gallery3d( "refresh" );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method empty\r
-       This method removes all of images from Gallery3D widget.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-\r
-                               $( "#gallery3d" ).gallery3d( "empty" );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method length\r
-       This method gets the number of images.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-\r
-                               var imagesLength = $( "#gallery3d" ).gallery3d( "length" );\r
-                               // imagesLength = 3;\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-\r
-( function ( $, document, window, undefined ) {\r
-       window.requestAnimationFrame = ( function () {\r
-               return function ( callback ) {\r
-                       var id = window.setTimeout( callback, 1000 / 60 );\r
-                       return id;\r
-               };\r
-       } () );\r
-\r
-       window.cancelAnimationFrame = ( function () {\r
-               return function ( id ) {\r
-                       window.clearTimeout( id );\r
-               };\r
-       } () );\r
-\r
-       var vec3 = window.vec3,\r
-               mat3 = window.mat3,\r
-               mat4 = window.mat4,\r
-               GlArray32 = ( typeof window.Float32Array !== "undefined" ? window.Float32Array : ( typeof window.WebGLFloatArray !== "undefined" ? window.WebGLFloatArray : Array ) ),\r
-               GlArray16 = ( typeof window.Uint16Array !== "undefined" ? window.Uint16Array : Array ),\r
-               getContext3D = function ( canvas ) {\r
-                       var gl, i,\r
-                               contextNames = [ "experimental-webgl", "webkit-3d", "webgl", "moz-webgl" ];\r
-\r
-                       for ( i = 0; i < contextNames.length; i += 1 ) {\r
-                               try {\r
-                                       gl = canvas.getContext( contextNames[i] );\r
-                                       if ( gl ) {\r
-                                               break;\r
-                                       }\r
-                               } catch ( e ) {\r
-                                       window.alert( "Unfortunately, there's a WebGL compatibility problem. </br> You may want to check your system settings." );\r
-                                       return;\r
-                               }\r
-                       }\r
-                       return gl;\r
-               },\r
-               VERTEX_SHADER = [\r
-                       "attribute vec3 aVertexPosition;",\r
-                       "attribute vec2 aTextureCoord;",\r
-                       "attribute vec3 aVertexNormal;",\r
-                       "uniform mat4 uMoveMatrix;",\r
-                       "uniform mat4 uPerspectiveMatrix;",\r
-                       "uniform mat3 nNormalMatrix;",\r
-                       "uniform vec3 uAmbientColor;",\r
-                       "uniform vec3 uLightDirection;",\r
-                       "uniform vec3 uDirectionColor;",\r
-                       "uniform vec3 uLightDirection_first;",\r
-                       "uniform vec3 uLightDirection_second;",\r
-                       "varying vec2 vTextureCoord;",\r
-                       "varying vec3 vLightWeight;",\r
-                       "varying vec4 vFogWeight;",\r
-\r
-                       "void main(void) {",\r
-                       "       vec4 v_Position = uMoveMatrix * vec4(aVertexPosition, 1.0);",\r
-                       "       gl_Position = uPerspectiveMatrix * v_Position;",\r
-                       "       vTextureCoord = aTextureCoord;",\r
-                       "       float fog = 1.0 - ((gl_Position.z + 1.5) / 60.0);",\r
-                       "       vFogWeight = clamp( vec4( fog, fog, fog, 1.0), 0.0, 1.0);",\r
-                       "       vec3 transNormalVector = nNormalMatrix * aVertexNormal;",\r
-\r
-                       "       float vLightWeightFirst = 0.0;",\r
-                       "       float vLightWeightSecond = max( dot(transNormalVector, uLightDirection_second), 0.0 );",\r
-\r
-                       "       vLightWeight = uAmbientColor + uDirectionColor * vLightWeightSecond;",\r
-                       "}"\r
-               ].join( "\n" ),\r
-               FRAGMENT_SHADER = [\r
-                       "precision mediump float;",\r
-                       "varying vec2 vTextureCoord;",\r
-                       "varying vec3 vLightWeight;",\r
-                       "uniform sampler2D uSampler;",\r
-                       "varying vec4 vFogWeight;",\r
-\r
-                       "void main(void) {",\r
-                       "       vec4 TextureColor = (texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t))) * vFogWeight;",\r
-                       "       gl_FragColor = vec4(TextureColor.rgb * vLightWeight, TextureColor.a);",\r
-                       "}"\r
-               ].join( "\n" );\r
-\r
-       function Node() {\r
-               this.vertices = [\r
-                       -1.0, -1.0, 0.0,\r
-                       1.0, -1.0, 0.0,\r
-                       1.0,  1.0, 0.0,\r
-                       -1.0,  1.0, 0.0\r
-               ];\r
-               this.textureCoords = [\r
-                       1.0, 0.0,\r
-                       0.0, 0.0,\r
-                       0.0, 1.0,\r
-                       1.0, 1.0\r
-               ];\r
-               this.normalVectors = [\r
-                       0.0, 0.0, 1.0,\r
-                       0.0, 0.0, 1.0,\r
-                       0.0, 0.0, 1.0,\r
-                       0.0, 0.0, 1.0\r
-               ];\r
-               this.texture = null;\r
-               this.textureBuffer = null;\r
-               this.textureBufferItemSize = 0;\r
-               this.mashOrder = [];\r
-               this.mvMatrix = null;\r
-               this.level = -1;\r
-               this.targetLevel = 0;\r
-               this.drawable = false;\r
-               this.image = null;\r
-               this.imageID = 0;\r
-       }\r
-\r
-       $.widget( "tizen.gallery3d", $.mobile.widget, {\r
-               options: {\r
-                       thumbnailCache: false\r
-               },\r
-\r
-               _MAX_ITEM_COUNT: 28,\r
-               _ANIMATION_END: 999,\r
-               _DURATION_DEFAULT: 300,\r
-               _DURATION_FIRST: 1600,\r
-               _VIEWPORT_WIDTH: 1024,\r
-               _VIEWPORT_HEIGHT: 456,\r
-               _DIRECTION_LEFT: -1,\r
-               _DIRECTION_RIGHT: +1,\r
-\r
-               _gl: null,\r
-               _shaderProgram : null,\r
-               _positionBuffer : null,\r
-               _textureCoordBuffer : null,\r
-               _normalVectorBuffer : null,\r
-               _nodes: null,\r
-               _pMatrix : null,\r
-               _animationID: 0,\r
-               _dragInterval : 0,\r
-               _startTime : 0,\r
-               _sumTime : 0,\r
-               _lightsPositionStack : [\r
-                       [0.0, 0.0, -1.0],       // back\r
-                       [-0.2, 0.0, 0.7]        // front\r
-               ],\r
-               _path: null,\r
-               _swipeThresholdOfBasetimeGap: ( $.support.touch ? 30 : 70 ),\r
-               _swipeThresholdOfSensitivity: ( $.support.touch ? 2.0 : 10.0 ),\r
-               _canvas: null,\r
-               _imageList: [],\r
-               _maxDrawLength: 0,\r
-               _firstImageNumber: 0,\r
-               _lastImageNumber: 0,\r
-\r
-               _create: function () {\r
-                       var self = this,\r
-                               view = self.element,\r
-                               option = self.options;\r
-\r
-                       self._canvas = $( "<canvas class='ui-gallery3d-canvas'></canvas>" );\r
-\r
-                       view.addClass( "ui-gallery3d" ).append( self._canvas );\r
-                       self._addBehavier();\r
-\r
-                       self._dragInterval = 1000 / 30; // 30fps\r
-\r
-                       $.each( self.options, function ( key, value ) {\r
-                               self.options[ key ] = undefined;\r
-                               self._setOption( key, value );\r
-                       });\r
-\r
-               },\r
-\r
-               _setOption: function ( key, value ) {\r
-                       switch ( key ) {\r
-                       case "thumbnailCache" :\r
-                               if ( typeof value === "string" ) {\r
-                                       value = ( value === "true" ) ? true : false;\r
-                               } else {\r
-                                       value = !!value;\r
-                               }\r
-                               this._reset();\r
-                               break;\r
-                       }\r
-\r
-                       $.mobile.widget.prototype._setOption.call( this, key, value );\r
-               },\r
-\r
-               _init: function ( canvas ) {\r
-                       var self = this,\r
-                               pathPoints = [\r
-                                       [40, 0, -48],\r
-                                       [-12, 0, -40],  // contorl Point of Point1\r
-                                       [24, 0, -9],            // contorl Point of Point2\r
-                                       [-5, 0, -5]\r
-                               ],\r
-                               i;\r
-\r
-                       canvas = canvas || self._canvas;\r
-\r
-                       if ( !canvas ) {\r
-                               return;\r
-                       }\r
-\r
-                       self._gl = self._gl || self._initGL( canvas[0] );\r
-                       if ( !self._gl ) {\r
-                               return;\r
-                       }\r
-\r
-                       if ( !self._imageList ) {\r
-                               return;\r
-                       }\r
-\r
-                       self._shaderProgram = self._shaderProgram || self._initShader( self._gl );\r
-                       if ( !self._shaderProgram ) {\r
-                               return;\r
-                       }\r
-\r
-                       if ( self._imageList.length > self._MAX_ITEM_COUNT ) {\r
-                               self._firstImageNumber = self._imageList.length - 1;\r
-                               self._lastImageNumber = self._MAX_ITEM_COUNT - 1;\r
-                       }\r
-\r
-                       self._nodes = self._initBuffers( self._gl, self._shaderProgram );\r
-                       self._initTextures( self._gl, self._nodes );\r
-                       self._path = $.motionpath( "bspline", {\r
-                               points: pathPoints,\r
-                               maxLevel: self._MAX_ITEM_COUNT\r
-                       } );\r
-                       for ( i = 0; i < self._nodes.length; i += 1 ) {\r
-                               self._path.levels[i] = self._path.levels[i + 1] || 0;\r
-                               self._nodes[i].level = i;\r
-                       }\r
-               },\r
-\r
-               _final: function ( canvas ) {\r
-                       var self = this,\r
-                               gl = self._gl;\r
-\r
-                       if ( !gl ) {\r
-                               return;\r
-                       }\r
-\r
-                       canvas = canvas || self._canvas;\r
-\r
-                       $( self._nodes ).each( function ( i ) {\r
-                               var node = self._nodes[i];\r
-                               gl.deleteTexture( node.texture );\r
-                               node.texture = null;\r
-                       });\r
-                       self._nodes = null;\r
-\r
-                       gl.deleteBuffer( self._positionBuffer );\r
-                       self._positionBuffer = null;\r
-                       gl.deleteBuffer( self._textureCoordBuffer );\r
-                       self._textureCoordBuffer = null;\r
-                       gl.deleteBuffer( self._normalVectorBuffer );\r
-                       self._normalVectorBuffer = null;\r
-\r
-                       $.webgl.shader.deleteShaders( gl );\r
-                       gl.deleteProgram( self._shaderProgram );\r
-                       self._shaderProgram = null;\r
-\r
-                       self._gl = gl = null;\r
-               },\r
-\r
-               _addBehavier : function () {\r
-                       var self = this,\r
-                               view = self.element,\r
-                               canvas = self._canvas,\r
-                               touchStartEvt = ( $.support.touch ? "touchstart" : "mousedown" ),\r
-                               touchMoveEvt = ( $.support.touch ? "touchmove" : "mousemove" ) + ".gallery3d",\r
-                               touchEndEvt = ( $.support.touch ? "touchend" : "mouseup" ) + ".gallery3d",\r
-                               touchLeaveEvt = ( $.support.touch ? "touchleave" : "mouseout" ) + ".gallery3d";\r
-\r
-                       $( document ).unbind( ".gallery3d" ).bind( "pagechange.gallery3d", function ( e ) {\r
-                               $( e.target ).find( ".ui-gallery3d" ).gallery3d( "refresh" );\r
-                       }).bind( "pageremove.gallery3d", function ( e ) {\r
-                               $( e.target ).find( ".ui-gallery3d" ).trigger( "_destory" );\r
-                       });\r
-\r
-                       $( window ).unbind( ".gallery3d" ).bind( "resize.gallery3d orientationchange.gallery3d", function ( e ) {\r
-                               $( ".ui-page-active" ).find( ".ui-gallery3d" ).gallery3d( "refresh" );\r
-                       }).bind( "unload.gallery3d", function ( e ) {\r
-                               $( e.target ).find( ".ui-gallery3d" ).trigger( "_destory" );\r
-                       });\r
-\r
-                       view.bind( "_destory", function ( e ) {\r
-                               self._final();\r
-                       });\r
-\r
-                       canvas.bind( "webglcontextlost", function ( e ) {\r
-                               e.preventDefault();\r
-                       }).bind( "webglcontextrestored", function ( e ) {\r
-                               self._init();\r
-                       }).bind( touchStartEvt, function ( e ) {\r
-                               var i = 0,\r
-                                       startX = 0,\r
-                                       deltaMaxSteps = 20,\r
-                                       deltas = [ deltaMaxSteps ],\r
-                                       deltaTimes = [ deltaMaxSteps ],\r
-                                       deltaIndex = 0,\r
-                                       dragValue = 0,\r
-                                       dragDirection = false,\r
-                                       prevTime = 0;\r
-\r
-                               e.preventDefault();\r
-                               e.stopPropagation();\r
-\r
-                               if ( self._imageList.length <= 1 ) {\r
-                                       return;\r
-                               }\r
-\r
-                               self._stop();\r
-\r
-                               startX =  $.support.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;\r
-                               prevTime = $.now();\r
-\r
-                               for ( i = 0; i < deltaMaxSteps; i += 1 ) {\r
-                                       deltas[i] = startX;\r
-                                       deltaTimes[i] = $.now();\r
-                               }\r
-\r
-                               deltaIndex += 1;\r
-\r
-                               view.bind( touchMoveEvt, function ( e ) {\r
-                                       var x, dx, interval;\r
-\r
-                                       e.preventDefault();\r
-                                       e.stopPropagation();\r
-\r
-                                       x =  $.support.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;\r
-                                       dx = startX - x;\r
-\r
-                                       deltas[deltaIndex] = x;\r
-                                       deltaTimes[deltaIndex] = $.now();\r
-                                       interval = deltaTimes[deltaIndex] - prevTime;\r
-\r
-                                       deltaIndex = ( deltaIndex + 1 ) % deltaMaxSteps;\r
-\r
-                                       // Validation of drag\r
-                                       if ( Math.abs( dx ) >= 10 && interval >= self._dragInterval ) {\r
-                                               if ( dragDirection !== ( ( dx < 0 ) ? self._DIRECTION_RIGHT : self._DIRECTION_LEFT ) ) {\r
-                                                       dragValue = 0;\r
-                                                       dragDirection = ( dx < 0 ) ? self._DIRECTION_RIGHT : self._DIRECTION_LEFT;\r
-                                               }\r
-\r
-                                               dragValue += Math.abs( dx ) / 100;\r
-                                               if ( dragValue >= 1 ) {\r
-                                                       self._setPosition( self._ANIMATION_END, dragDirection );\r
-                                                       dragValue = 0;\r
-                                               } else {\r
-                                                       self._setPosition( dragValue, dragDirection );\r
-                                               }\r
-                                               self._drawScene();\r
-                                               startX = x;\r
-                                               prevTime = $.now();\r
-                                       }\r
-                               }).bind( touchEndEvt, function ( e ) {\r
-                                       var baseTime = 0,\r
-                                               recent = -1,\r
-                                               index = 0,\r
-                                               previous = 0,\r
-                                               baseTimeRatio = 0,\r
-                                               fx = 0,\r
-                                               lastX = 0,\r
-                                               velocityX = 0,\r
-                                               dx = 0,\r
-                                               isSwipe = true,\r
-                                               direction;\r
-\r
-                                       e.preventDefault();\r
-                                       e.stopPropagation();\r
-\r
-                                       // Validation of swipe\r
-                                       baseTime = $.now() - self._swipeThresholdOfBasetimeGap;\r
-                                       lastX = $.support.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;\r
-                                       dx = startX - lastX;\r
-                                       startX = 0;\r
-                                       for ( i = 0; i < deltaMaxSteps; i += 1 ) {\r
-                                               index = ( deltaIndex + i ) % deltaMaxSteps;\r
-                                               if ( deltaTimes[index] > baseTime ) {\r
-                                                       recent = index;\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                                       if ( recent < 0 ) {\r
-                                               isSwipe = false;\r
-                                       }\r
-\r
-                                       if ( isSwipe ) {\r
-                                               previous = recent;\r
-                                               for ( i = 0; i < deltaMaxSteps; i += 1 ) {\r
-                                                       previous = ( previous - 1 + deltaMaxSteps ) % deltaMaxSteps;\r
-                                                       if ( deltaTimes[previous] < deltaTimes[recent] ) {\r
-                                                               break;\r
-                                                       }\r
-                                               }\r
-                                               // too slow or too fast\r
-                                               if ( i === deltaMaxSteps || baseTime < deltaTimes[previous] ) {\r
-                                                       isSwipe = false;\r
-                                               }\r
-                                       }\r
-\r
-                                       if ( isSwipe ) {\r
-                                               baseTimeRatio = ( baseTime - deltaTimes[previous] ) / ( deltaTimes[recent] - deltaTimes[previous] );\r
-                                               fx = ( 1.0 - baseTimeRatio ) * deltas[previous] + baseTimeRatio * deltas[recent];\r
-                                               if ( Math.abs( fx - lastX ) < self._swipeThresholdOfSensitivity ) {\r
-                                                       fx = lastX;\r
-                                               }\r
-                                               velocityX = parseInt( ( lastX - fx ) / ( $.now() - baseTime ), 10 );\r
-                                       }\r
-\r
-                                       if ( isSwipe && velocityX ) {\r
-                                               direction = ( velocityX < 0 ) ? self._DIRECTION_LEFT : self._DIRECTION_RIGHT;\r
-                                               self._run( direction, Math.abs( velocityX ), dragValue );\r
-                                       } else if ( dragDirection !== 0 && dragValue ) {\r
-                                               self._animate( null, self._DURATION_DEFAULT * ( 1 - dragValue ), dragDirection, 0, dragValue );\r
-                                       }\r
-\r
-                                       view.unbind( ".gallery3d" );\r
-                               }).bind( touchLeaveEvt, function ( e ) {\r
-                                       view.trigger( touchEndEvt );\r
-                               });\r
-                       });\r
-               },\r
-\r
-               // ----------------------------------------------------------\r
-               // Data parsing\r
-               // ----------------------------------------------------------\r
-               _loadData: function ( jsonUrl, key ) {\r
-                       var self = this;\r
-\r
-                       $.ajax({\r
-                               async : false,\r
-                               url : jsonUrl,\r
-                               dataType: "json",\r
-                               success : function ( data ) {\r
-                                       self._imageList = $.extend( [], data[ key ] );\r
-                               }\r
-                       });\r
-               },\r
-\r
-               // ----------------------------------------------------------\r
-               // WebGL\r
-               // ----------------------------------------------------------\r
-               _initGL: function ( canvas ) {\r
-                       var self = this,\r
-                               gl;\r
-\r
-                       gl = getContext3D( canvas );\r
-                       if ( !gl ) {\r
-                               window.alert( "There's no WebGL context available!!!" );\r
-                               return null;\r
-                       }\r
-\r
-                       gl.enable( gl.BLEND );\r
-                       gl.blendFunc( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA );\r
-\r
-                       gl.enable( gl.DEPTH_TEST );\r
-                       gl.depthFunc( gl.LEQUAL );\r
-\r
-                       canvas.width = self._VIEWPORT_WIDTH;\r
-                       canvas.height = self._VIEWPORT_HEIGHT;\r
-                       gl.viewportWidth = canvas.width;\r
-                       gl.viewportHeight = canvas.height;\r
-                       gl.viewport( 0, 0, gl.viewportWidth, gl.viewportHeight );\r
-                       self._pMatrix = mat4.create();\r
-                       mat4.perspective( 40, gl.viewportWidth / gl.viewportHeight, 0.1, 10000.0, self._pMatrix );\r
-\r
-                       gl.clearColor( 0.0, 0.0, 0.0, 1.0 );\r
-                       gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT );\r
-\r
-                       return gl;\r
-               },\r
-\r
-               _initShader : function ( gl ) {\r
-                       var self = this,\r
-                               shaderProgram;\r
-\r
-                       shaderProgram = $.webgl.shader.addShaderProgram( self._gl, VERTEX_SHADER, FRAGMENT_SHADER );\r
-                       gl.useProgram( shaderProgram );\r
-\r
-                       shaderProgram.vertexPositionAttr = gl.getAttribLocation( shaderProgram, "aVertexPosition" );\r
-                       gl.enableVertexAttribArray( shaderProgram.vertexPositionAttr );\r
-\r
-                       shaderProgram.textureCoordAttr = gl.getAttribLocation( shaderProgram, "aTextureCoord" );\r
-                       gl.enableVertexAttribArray( shaderProgram.textureCoordAttr );\r
-\r
-                       // Set light normal vectors for lighting~\r
-                       shaderProgram.vertexNormalAttr = gl.getAttribLocation( shaderProgram, "aVertexNormal" );\r
-                       gl.enableVertexAttribArray( shaderProgram.vertexNormalAttr );\r
-\r
-                       shaderProgram.perspectiveMU = gl.getUniformLocation( shaderProgram, "uPerspectiveMatrix");\r
-                       shaderProgram.transformMU = gl.getUniformLocation( shaderProgram, "uMoveMatrix");\r
-                       shaderProgram.sampleUniform = gl.getUniformLocation( shaderProgram, "uSampler");\r
-\r
-                       // Set light variables~\r
-                       shaderProgram.normalMU = gl.getUniformLocation( shaderProgram, "nNormalMatrix");\r
-                       shaderProgram.ambientColorU = gl.getUniformLocation( shaderProgram, "uAmbientColor");\r
-                       shaderProgram.lightDirU_first = gl.getUniformLocation( shaderProgram, "uLightDirection_first");\r
-                       shaderProgram.lightDirU_second = gl.getUniformLocation( shaderProgram, "uLightDirection_second");\r
-                       shaderProgram.directionColorU = gl.getUniformLocation( shaderProgram, "uDirectionColor");\r
-\r
-                       return shaderProgram;\r
-               },\r
-\r
-               _initBuffers: function ( gl, shaderProgram ) {\r
-                       var self = this,\r
-                               i = 0,\r
-                               mashBase = 0,\r
-                               vertices = [],\r
-                               textureCoords = [],\r
-                               normalVectors = [],\r
-                               nodes = [],\r
-                               maxDrawLength = self._MAX_ITEM_COUNT;\r
-\r
-                       for ( i = 0; i < self._imageList.length + 1; i += 1 ) {\r
-                               nodes[i] = new Node();\r
-                               $.merge( vertices, nodes[i].vertices );\r
-                               $.merge( textureCoords, nodes[i].textureCoords );\r
-                               $.merge( normalVectors, nodes[i].normalVectors );\r
-\r
-                               nodes[i].textureBuffer = gl.createBuffer();\r
-                               gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, nodes[i].textureBuffer );\r
-                               mashBase = i * 4;\r
-                               nodes[i].meshOrder = [\r
-                                       mashBase, mashBase + 1, mashBase + 2,\r
-                                       mashBase + 2, mashBase + 3, mashBase\r
-                               ];\r
-                               gl.bufferData( gl.ELEMENT_ARRAY_BUFFER, new GlArray16( nodes[i].meshOrder ), gl.STATIC_DRAW );\r
-                               gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, null ); // release buffer memory\r
-                               nodes[i].textureBufferItemSize = 6;\r
-                       }\r
-\r
-                       self._positionBuffer = $.webgl.buffer.attribBufferData( gl, new GlArray32( vertices ) );\r
-                       self._positionBuffer.itemSize = 3;\r
-\r
-                       self._textureCoordBuffer = $.webgl.buffer.attribBufferData( gl, new GlArray32( textureCoords ) );\r
-                       self._textureCoordBuffer.itemSize = 2;\r
-\r
-                       self._normalVectorBuffer = $.webgl.buffer.attribBufferData( gl, new GlArray32( normalVectors ) ); // Vertex's normal vector for Direction light\r
-                       self._normalVectorBuffer.itemSize = 3;\r
-\r
-                       // Ambient light\r
-                       gl.uniform3f( shaderProgram.ambientColorU, 0.1, 0.1, 0.1 );\r
-                       // Direcntion light\r
-                       gl.uniform3f( shaderProgram.directionColorU, 1.0, 1.0, 1.0 );\r
-\r
-                       return nodes;\r
-               },\r
-\r
-               // ----------------------------------------------------------\r
-               // Texture\r
-               // ----------------------------------------------------------\r
-               _initTextures: function ( gl, nodes ) {\r
-                       var self = this;\r
-\r
-                       $( nodes ).each( function ( i ) {\r
-                               var node = nodes[i],\r
-                                       url;\r
-\r
-                               if ( !self._imageList[i] ) {\r
-                                       return false;\r
-                               }\r
-\r
-                               url = self._imageList[i].src;\r
-                               node.texture = gl.createTexture();\r
-                               self._loadImage( url, i, i, gl, nodes );\r
-                       });\r
-               },\r
-\r
-               _loadImage: function ( url, i, imageID, gl, nodes ) {\r
-                       var self = this,\r
-                               isMipmap = false,\r
-                               image,\r
-                               node;\r
-\r
-                       gl = gl || self._gl;\r
-                       nodes = nodes || self._nodes;\r
-                       isMipmap = isMipmap || false;\r
-                       node = nodes[i];\r
-                       node.image = node.image || new Image();\r
-\r
-                       $( node.image ).one( "load", function ( e ) {\r
-                               self._bindTexture( gl, node, this, isMipmap );\r
-                               node.imageID = imageID;\r
-\r
-                               if ( !self._animationID ) {\r
-                                       self._setPosition( 0, 0 );\r
-                               }\r
-                       });\r
-\r
-                       if ( self.options.thumbnailCache ) {\r
-                               $.imageloader.getThumbnail( url, function ( result ) {\r
-                                       if ( result === "NOT_FOUND_ERR" ) {\r
-                                               $.imageloader.setThumbnail( url, function ( result ) {\r
-                                                       if ( result && result.length > 30 ) {\r
-                                                               node.image.src = result;\r
-                                                               isMipmap = true;\r
-                                                       } else {\r
-                                                               node.image.src = url;\r
-                                                       }\r
-                                               });\r
-                                       } else if ( result && result.length > 30 ) {\r
-                                               node.image.src = result;\r
-                                               isMipmap = true;\r
-                                       } else {\r
-                                               node.image.src = url;\r
-                                       }\r
-                               });\r
-                       } else {\r
-                               node.image.src = url;\r
-                       }\r
-               },\r
-\r
-               _bindTexture: function ( gl, node, image, isMipmap ) {\r
-                       if ( !node || !node.texture ) {\r
-                               return;\r
-                       }\r
-\r
-                       gl.pixelStorei( gl.UNPACK_FLIP_Y_WEBGL, true );\r
-\r
-                       gl.bindTexture( gl.TEXTURE_2D, node.texture );\r
-                       gl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image );\r
-\r
-                       if ( isMipmap ) {\r
-                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR );\r
-                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST );\r
-                               gl.generateMipmap( gl.TEXTURE_2D );\r
-                       } else {\r
-                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR );\r
-                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR );\r
-                       }\r
-\r
-                       gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\r
-                       gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\r
-\r
-                       node.texture.loaded = true;\r
-\r
-                       // release texture memory\r
-                       gl.bindTexture( gl.TEXTURE_2D, null );\r
-               },\r
-\r
-               // ----------------------------------------------------------\r
-               // rendering\r
-               // ----------------------------------------------------------\r
-               _setPosition: function ( progress, direction ) {\r
-                       var self = this,\r
-                               nodes = self._nodes,\r
-                               imageList = self._imageList,\r
-                               imageListLength = imageList.length,\r
-                               itemCount = self._MAX_ITEM_COUNT,\r
-                               displayLength = ( imageListLength > itemCount ) ? itemCount : imageListLength,\r
-                               nextLevelLenth = 0,\r
-                               i = 0,\r
-                               t = 0,\r
-                               position = 0,\r
-                               angle = 0,\r
-                               current = 0,\r
-                               next = 0,\r
-                               nextLevel = 0,\r
-                               path = self._path,\r
-                               nextImageID = 0;\r
-\r
-                       nextLevelLenth = ( direction >= 0 ) ? displayLength + 1 : displayLength;\r
-\r
-                       if ( !nodes[i].level ) {\r
-                               nodes[i].level = displayLength;\r
-                       }\r
-\r
-                       for ( i = 0; i < displayLength; i += 1 ) {\r
-                               if ( !nodes[i].mvMatrix ) {\r
-                                       nodes[i].mvMatrix = mat4.create();\r
-                               }\r
-\r
-                               if ( direction > 0 && nodes[i].level >= displayLength ) {\r
-                                       nodes[i].level = 0;\r
-                               }\r
-\r
-                               current = path.levels[nodes[i].level];\r
-                               nextLevel = ( nodes[i].level + nextLevelLenth + direction ) % nextLevelLenth;\r
-                               next = path.levels[nextLevel];\r
-\r
-                               if ( imageListLength > itemCount ) {\r
-                                       if ( direction > 0 && nextLevel === 1\r
-                                                       && self._firstImageNumber !== nodes[i].imageID ) {\r
-                                               self._loadImage( imageList[self._firstImageNumber].src, i, self._firstImageNumber );\r
-                                       } else if ( direction < 0 && nextLevel === nextLevelLenth - 1\r
-                                                       && self._lastImageNumber !== nodes[i].imageID ) {\r
-                                               self._loadImage( imageList[self._lastImageNumber].src, i, self._lastImageNumber );\r
-                                       }\r
-                               }\r
-\r
-                               mat4.identity( nodes[i].mvMatrix );\r
-                               mat4.translate( nodes[i].mvMatrix, [-2.0, -2.0, 1.0] );\r
-                               mat4.rotate( nodes[i].mvMatrix, self._degreeToRadian( 19 ), [1, 0, 0] );\r
-\r
-                               t = ( current + ( next - current ) * ( ( progress > 1 ) ? 1 : progress ) );\r
-\r
-                               if ( progress >= self._ANIMATION_END ) {\r
-                                       nodes[i].level = nextLevel || displayLength;\r
-                                       t = path.levels[nodes[i].level];\r
-                               }\r
-\r
-                               if ( ( progress < self._ANIMATION_END )\r
-                                               && ( direction <= 0 && nodes[i].level < 1 ) ) {\r
-                                       nodes[i].drawable = false;\r
-                               } else {\r
-                                       nodes[i].drawable = true;\r
-                               }\r
-\r
-                               if ( progress === self._ANIMATION_END && nodes[i].level === 1 ) {\r
-                                       self.element.trigger( "select", imageList[ nodes[i].imageID ], nodes[i].imageID );\r
-                               }\r
-\r
-                               position = path.getPosition( t );\r
-                               angle = path.getAngle( t );\r
-\r
-                               mat4.translate( nodes[i].mvMatrix, position );\r
-                               mat4.rotate( nodes[i].mvMatrix, angle, [0, 1, 0] );\r
-                       }\r
-\r
-                       if ( imageListLength > itemCount && progress >= self._ANIMATION_END ) {\r
-                               self._firstImageNumber = ( self._firstImageNumber - direction ) % imageListLength;\r
-                               if ( self._firstImageNumber < 0 ) {\r
-                                       self._firstImageNumber = imageListLength - 1;\r
-                               }\r
-\r
-                               self._lastImageNumber = ( self._lastImageNumber - direction ) % imageListLength;\r
-                               if ( self._lastImageNumber < 0 ) {\r
-                                       self._lastImageNumber = imageListLength - 1;\r
-                               }\r
-                       }\r
-                       self._drawScene();\r
-               },\r
-\r
-               _drawScene: function () {\r
-                       if ( !this._gl || !this._shaderProgram ) {\r
-                               return;\r
-                       }\r
-\r
-                       var self = this,\r
-                               gl = self._gl,\r
-                               shaderProgram = self._shaderProgram,\r
-                               nodes = self._nodes,\r
-                               nodesLength = nodes.length,\r
-                               i;\r
-\r
-                       gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT );\r
-\r
-                       gl.bindBuffer( gl.ARRAY_BUFFER, self._positionBuffer );\r
-                       gl.vertexAttribPointer( shaderProgram.vertexPositionAttr, self._positionBuffer.itemSize, gl.FLOAT, false, 0, 0 );\r
-\r
-                       gl.bindBuffer( gl.ARRAY_BUFFER, self._textureCoordBuffer );\r
-                       gl.vertexAttribPointer( shaderProgram.textureCoordAttr, self._textureCoordBuffer.itemSize, gl.FLOAT, false, 0, 0 );\r
-\r
-                       gl.bindBuffer( gl.ARRAY_BUFFER, self._normalVectorBuffer );\r
-                       gl.vertexAttribPointer( shaderProgram.vertexNormalAttr, self._normalVectorBuffer.itemSize, gl.FLOAT, false, 0, 0 );\r
-\r
-                       for ( i = 0; i < nodesLength; i += 1 ) {\r
-                               if ( nodes[i].drawable ) {\r
-                                       self._drawElement( self._pMatrix, nodes[i] );\r
-                               }\r
-                       }\r
-               },\r
-\r
-               _drawElement: function ( perspectiveMatrix, targetNode ) {\r
-                       var self = this,\r
-                               gl = self._gl,\r
-                               shaderProgram = self._shaderProgram,\r
-                               moveMatrix = targetNode.mvMatrix,\r
-                               texture = targetNode.texture,\r
-                               meshIndexBuffer = targetNode.textureBuffer,\r
-                               meshIndexBufferItemSize = targetNode.textureBufferItemSize,\r
-                               lightPositions = self._lightsPositionStack,\r
-                               LightDir,\r
-                               normalMatrix;\r
-\r
-                       if ( !moveMatrix ) {\r
-                               return;\r
-                       }\r
-\r
-                       gl.activeTexture( gl.TEXTURE0 );\r
-                       if ( texture && texture.loaded ) {\r
-                               gl.bindTexture( gl.TEXTURE_2D, texture );\r
-                       }\r
-                       gl.uniform1i( shaderProgram.sampleUniform, 0 );\r
-\r
-                       LightDir = vec3.create();\r
-                       vec3.normalize( lightPositions[0], LightDir );\r
-                       vec3.scale( LightDir, -8 );\r
-                       gl.uniform3fv( shaderProgram.lightDirU_first, LightDir );\r
-\r
-                       vec3.normalize( lightPositions[1], LightDir );\r
-                       vec3.scale( LightDir, -1 );\r
-                       gl.uniform3fv( shaderProgram.lightDirU_second, LightDir );\r
-                       gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, meshIndexBuffer );\r
-\r
-                       gl.uniformMatrix4fv( shaderProgram.perspectiveMU, false, perspectiveMatrix );\r
-                       gl.uniformMatrix4fv( shaderProgram.transformMU, false, moveMatrix );\r
-\r
-                       normalMatrix = mat3.create();\r
-                       mat4.toInverseMat3( moveMatrix, normalMatrix );\r
-                       mat3.transpose( normalMatrix );\r
-                       gl.uniformMatrix3fv( shaderProgram.normalMU, false, normalMatrix );\r
-\r
-                       gl.drawElements( gl.TRIANGLES, meshIndexBufferItemSize, gl.UNSIGNED_SHORT, 0 );\r
-\r
-                       // release buffer memory\r
-                       gl.bindBuffer( gl.ARRAY_BUFFER, null );\r
-                       gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, null );\r
-\r
-                       // release texture memory\r
-                       gl.bindTexture( gl.TEXTURE_2D, null );\r
-               },\r
-\r
-               // ----------------------------------------------------------\r
-               // Animation\r
-               // ----------------------------------------------------------\r
-               _animate: function ( easingType, duration, direction, repeatCount, startValue, _removeCount ) {\r
-                       var self = this,\r
-                               timeNow = $.now(),\r
-                               progress,\r
-                               removeCount = 0;\r
-\r
-                       easingType = easingType || "linear";\r
-                       startValue = startValue || 0;\r
-                       _removeCount = _removeCount || 0;\r
-\r
-                       if ( self._sumTime >= duration ) {\r
-                               self._setPosition( self._ANIMATION_END, direction );\r
-                               self._stop();\r
-                               return;\r
-                       }\r
-\r
-                       if ( self._startTime === 0 ) {\r
-                               self._startTime = timeNow;\r
-                       } else {\r
-                               self._sumTime = timeNow - self._startTime;\r
-                               progress = $.easing[ easingType ]( self._sumTime / duration, self._sumTime, startValue, repeatCount + 1, duration );\r
-                               removeCount = parseInt( Math.abs( progress ), 10 );\r
-\r
-                               if ( _removeCount !== removeCount ) {\r
-                                       self._setPosition( self._ANIMATION_END, direction );\r
-                                       _removeCount = removeCount;\r
-\r
-                                       if ( ( repeatCount - _removeCount ) >= 0 ) {\r
-                                               self._animate( easingType, duration, direction, repeatCount, startValue, _removeCount );\r
-                                       } else {\r
-                                               self._stop();\r
-                                       }\r
-                                       return;\r
-                               }\r
-\r
-                               self._setPosition( progress - _removeCount, direction );\r
-                       }\r
-\r
-                       self._animationID = window.requestAnimationFrame( function () {\r
-                               self._animate( easingType, duration, direction, repeatCount, startValue, _removeCount );\r
-                       });\r
-               },\r
-\r
-               _run: function ( direction, repeatCount, startValue ) {\r
-                       var self = this,\r
-                               repeat = repeatCount || 0,\r
-                               duration = self._DURATION_DEFAULT * ( repeat + 1 );\r
-\r
-                       if ( self._imageList.length <= 1 ) {\r
-                               return;\r
-                       }\r
-\r
-                       startValue = startValue || 0;\r
-                       duration = ( duration >= 0 ) ? duration : 0;\r
-\r
-                       if ( self._animationID ) {\r
-                               self._setPosition( self._ANIMATION_END, direction );\r
-                               self._stop();\r
-                       }\r
-\r
-                       self._animate( "easeOutExpo", duration, direction, repeat, startValue );\r
-               },\r
-\r
-               _reset: function () {\r
-                       if ( !this._canvas || !this._gl ) {\r
-                               return;\r
-                       }\r
-\r
-                       this._final();\r
-                       this._init();\r
-                       this.refresh();\r
-               },\r
-\r
-               _stop: function () {\r
-                       if ( this._animationID ) {\r
-                               window.cancelAnimationFrame( this._animationID );\r
-                       }\r
-                       this._animationID = 0;\r
-\r
-                       this._startTime = 0;\r
-                       this._sumTime = 0;\r
-               },\r
-\r
-               _degreeToRadian: function ( degree ) {\r
-                       return degree * Math.PI / 180;\r
-               },\r
-\r
-               next: function () {\r
-                       this._run( this._DIRECTION_LEFT , 0 );\r
-               },\r
-\r
-               prev: function () {\r
-                       this._run( this._DIRECTION_RIGHT, 0 );\r
-               },\r
-\r
-               refresh: function () {\r
-                       var view = this.element,\r
-                               canvas = view.find( "canvas.ui-gallery3d-canvas" );\r
-\r
-                       if ( canvas.width() !== view.width() ) {\r
-                               canvas.width( view.width() );\r
-                       }\r
-\r
-                       if ( !this._animationID ) {\r
-                               this._setPosition( 0, 0 );\r
-                       }\r
-               },\r
-\r
-               select: function ( index ) {\r
-                       var nodes = this._nodes,\r
-                               repeat,\r
-                               i,\r
-                               imageID,\r
-                               object = null,\r
-                               target = 0,\r
-                               direction = 0;\r
-\r
-                       if ( index && this._animationID ) {\r
-                               this._stop();\r
-                       }\r
-\r
-                       for ( i in nodes ) {\r
-                               if ( nodes[i].level === 1 ) {\r
-                                       object = this._imageList[ nodes[i].imageID ];\r
-                                       imageID = nodes[i].imageID;\r
-                                       break;\r
-                               }\r
-                       }\r
-\r
-                       if ( !index ) {\r
-                               return object;\r
-                       }\r
-\r
-                       if ( index < 0 && index >= this._imageList.length ) {\r
-                               return;\r
-                       }\r
-\r
-                       target = index - imageID;\r
-                       direction = ( target > 0 ) ? this._DIRECTION_LEFT\r
-                               : ( ( target < 0 ) ? this._DIRECTION_RIGHT : 0 );\r
-                       if ( direction ) {\r
-                               this._run( direction, Math.abs( target ) - 1  );\r
-                       }\r
-               },\r
-\r
-               add: function ( item, index ) {\r
-                       if ( !item ) {\r
-                               return;\r
-                       }\r
-\r
-                       if ( typeof item === "string" ) {\r
-                               item = { "src" : item };\r
-                       }\r
-\r
-                       index = index || 0;\r
-                       if ( typeof index !== "number" && index < 0\r
-                                       && index >= this._imageList.length ) {\r
-                               return;\r
-                       }\r
-\r
-                       this._imageList.splice( index, 0, item );\r
-                       if ( this._gl ) {\r
-                               this._reset();\r
-                       }\r
-               },\r
-\r
-               remove: function ( index ) {\r
-                       index = index || 0;\r
-                       if ( typeof index !== "number" && index < 0\r
-                                       && index >= this._imageList.length ) {\r
-                               return;\r
-                       }\r
-\r
-                       this._imageList.splice( index, 1 );\r
-                       if ( this._gl ) {\r
-                               this._reset();\r
-                       }\r
-               },\r
-\r
-               clearThumbnailCache: function () {\r
-                       if ( !this._nodes || ( this._nodes.length <= 0 ) ) {\r
-                               return;\r
-                       }\r
-\r
-                       var i, url;\r
-                       for ( i = 0; i < this._imageList.length; i += 1 ) {\r
-                               url = this._imageList[i].src;\r
-                               $.imageloader.removeThumbnail( url );\r
-                       }\r
-               },\r
-\r
-               empty: function () {\r
-                       this._imageList = [];\r
-                       this._reset();\r
-               },\r
-\r
-               length: function () {\r
-                       return this._imageList.length;\r
-               }\r
-       });\r
-\r
-       $( document ).bind( "pagecreate create", function ( e ) {\r
-               $( ":jqmData(role='gallery3d')" ).gallery3d();\r
-       });\r
-\r
-} ( jQuery, document, window ) );\r
-\r
+
+
+/* ***************************************************************************
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ *
+ * Authors: Hyunsook Park <hyunsook.park@samsung.com>
+ *                     Wonseop Kim <wonseop.kim@samsung.com>
+ */
+
+/**
+ *     The gallery3d widget displays images along a curved path on a 3-dimensional coordinate system.
+ *     To improve performance, the size of image(s) displayed on the screen should be a square(under
+ *     128X128 pixel) as possible. But if a user can't resize the images, this widget supports an image
+ *     resizing feature and he/she can use it with "data-thumbnail-cache" option. ("data-thumbnail-cache"
+ *     option resizes the gallery images under 128x128 pixels and stores the images on a local storage.
+ *     So when a gallery3D widget is re-launched, the widget reuse the storage and a user can improve
+ *     launching time. A browser or web runtime engine should support "Web Storage" feature to use that
+ *     option.)
+ *
+ *     HTML Attributes:
+ *
+ *             data-thumbnail-cache : Determines whether to cache and resize images.
+ *
+ *     APIs:
+ *
+ *             next ( void )
+ *                     : This method moves each image forward one by one.
+ *             prev ( void )
+ *                     : This method moves each image backward one by one.
+ *             select ( [number] )
+ *                     : When the "select" method is called with an argument, the method selects the image of given index.
+ *                     If the method is called with no argument, it will return the Javascript object having "src"
+ *                     attribute having the selected image’s URL.
+ *             add ( object or string [, number] )
+ *                     This method adds an image to Gallery3D widget.
+ *                     If the second argument isn't inputted, the image is added at the 0th position.
+ *             remove ( [number] )
+ *                     : This method deletes an image from Gallery3d widget.
+ *                     The argument defines the index of the image to be deleted.
+ *                     If an argument isn't inputted, it removes current image.
+ *             clearThumbnailCache ( void )
+ *                     : This method clears the cache data of all images when thumbnailCache option is set as 'true'.
+ *             refresh ( void )
+ *                     : This method updates and redraws current widget.
+ *             empty ( void )
+ *                     : This method removes all of images from Gallery3D widget.
+ *             length ( void )
+ *                     : This method gets the number of images.
+ *
+ *     Events:
+ *
+ *             select : Triggered when an image is selected.
+ *
+ *     Examples:
+ *
+ *             <script>
+ *                     $( "#gallery3d" ).on( "gallery3dcreate", function () {
+ *                             $( "#gallery3d" ).gallery3d( "add", "01.jpg" );
+ *                     });
+ *             </script>
+ *             <div id="gallery3d" data-role="gallery3d"></div>
+ */
+
+/**
+       @class Gallery3D
+       The gallery3d widget displays images along a curved path on a 3-dimensional coordinate system.
+       <br/><br/>To add an gallery3d widget to the application, use the following code:
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", "01.jpg" );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @property {Boolean} data-thumbnail-cache
+       Determines whether to cache and resize images.
+       To improve performance, the size of image(s) displayed on the screen should be a square (under 128X128 pixels).
+       "data-thumbnail-cache" option resizes the gallery images under 128x128 pixels and stores the images on a local storage.
+       So when a gallery3D widget is re-launched, the widget reuses the storage and the launching time can be improved.
+       A browser or web runtime engine must support "Web Storage" feature to use this option.
+*/
+/**
+       @event select
+       Triggered when an image is selected.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+                       }).on( "select", function ( event, data, index ) {
+                               // Handle the select event
+                               var urlOfImage = data.src, indexOfImage = index;
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method next
+       This method moves each image forward one by one.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } )
+                                       .gallery3d( "next" );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method prev
+       This method moves each image backward one by one.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } )
+                                       .gallery3d( "prev" );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method select
+       When the "select" method is called with an argument, the method selects the image of given index.
+       If the method is called with no argument, it will return the Javascript object having "src" attribute having the selected image’s URL.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+                               var selectedImage = $("#gallery3d"). gallery3d( "select" );
+                               // selectedImage = { src: "3.jpg" };
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method add
+       This method adds an image to Gallery3D widget.
+       The first argument is a Javascript object having a "src" attribute or a string of image's path.
+       The second argument is an index of images.
+       If second argument isn't inputted, the image is added at the 0th position.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", "2.jpg", 1 );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method remove
+       This method deletes an image from Gallery3d widget.
+       The argument defines the index of the image to be deleted.
+       If an argument isn't inputted, it removes current image.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+
+                               $( "#gallery3d" ).gallery3d( "remove" );
+                               $( "#gallery3d" ).gallery3d( "remove", 1 );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method clearThumbnailCache
+       This method clears the cache data of all images when thumbnailCache option is set as 'true'
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+
+                               $( "#gallery3d" ).gallery3d( "clearThumbnailCache" );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d" data-thumbnail-cache="true"></div>
+*/
+/**
+       @method refresh
+       This method updates and redraws current widget.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+
+                               $( "#gallery3d" ).gallery3d( "refresh" );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method empty
+       This method removes all of images from Gallery3D widget.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+
+                               $( "#gallery3d" ).gallery3d( "empty" );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method length
+       This method gets the number of images.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+
+                               var imagesLength = $( "#gallery3d" ).gallery3d( "length" );
+                               // imagesLength = 3;
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+
+( function ( $, document, window, undefined ) {
+       window.requestAnimationFrame = ( function () {
+               return function ( callback ) {
+                       var id = window.setTimeout( callback, 1000 / 60 );
+                       return id;
+               };
+       } () );
+
+       window.cancelAnimationFrame = ( function () {
+               return function ( id ) {
+                       window.clearTimeout( id );
+               };
+       } () );
+
+       var vec3 = window.vec3,
+               mat3 = window.mat3,
+               mat4 = window.mat4,
+               GlArray32 = ( typeof window.Float32Array !== "undefined" ? window.Float32Array : ( typeof window.WebGLFloatArray !== "undefined" ? window.WebGLFloatArray : Array ) ),
+               GlArray16 = ( typeof window.Uint16Array !== "undefined" ? window.Uint16Array : Array ),
+               getContext3D = function ( canvas ) {
+                       var gl, i,
+                               contextNames = [ "experimental-webgl", "webkit-3d", "webgl", "moz-webgl" ];
+
+                       for ( i = 0; i < contextNames.length; i += 1 ) {
+                               try {
+                                       gl = canvas.getContext( contextNames[i] );
+                                       if ( gl ) {
+                                               break;
+                                       }
+                               } catch ( e ) {
+                                       window.alert( "Unfortunately, there's a WebGL compatibility problem. </br> You may want to check your system settings." );
+                                       return;
+                               }
+                       }
+                       return gl;
+               },
+               VERTEX_SHADER = [
+                       "attribute vec3 aVertexPosition;",
+                       "attribute vec2 aTextureCoord;",
+                       "attribute vec3 aVertexNormal;",
+                       "uniform mat4 uMoveMatrix;",
+                       "uniform mat4 uPerspectiveMatrix;",
+                       "uniform mat3 nNormalMatrix;",
+                       "uniform vec3 uAmbientColor;",
+                       "uniform vec3 uLightDirection;",
+                       "uniform vec3 uDirectionColor;",
+                       "uniform vec3 uLightDirection_first;",
+                       "uniform vec3 uLightDirection_second;",
+                       "varying vec2 vTextureCoord;",
+                       "varying vec3 vLightWeight;",
+                       "varying vec4 vFogWeight;",
+
+                       "void main(void) {",
+                       "       vec4 v_Position = uMoveMatrix * vec4(aVertexPosition, 1.0);",
+                       "       gl_Position = uPerspectiveMatrix * v_Position;",
+                       "       vTextureCoord = aTextureCoord;",
+                       "       float fog = 1.0 - ((gl_Position.z + 1.5) / 60.0);",
+                       "       vFogWeight = clamp( vec4( fog, fog, fog, 1.0), 0.6, 1.0);",
+                       "       vec3 transNormalVector = nNormalMatrix * aVertexNormal;",
+
+                       "       float vLightWeightFirst = 0.0;",
+                       "       float vLightWeightSecond = max( dot(transNormalVector, uLightDirection_second), 0.0 );",
+
+                       "       vLightWeight = uAmbientColor + uDirectionColor * vLightWeightSecond;",
+                       "}"
+               ].join( "\n" ),
+               FRAGMENT_SHADER = [
+                       "precision mediump float;",
+                       "varying vec2 vTextureCoord;",
+                       "varying vec3 vLightWeight;",
+                       "uniform sampler2D uSampler;",
+                       "varying vec4 vFogWeight;",
+
+                       "void main(void) {",
+                       "       vec4 TextureColor;",
+                       "       if ( vTextureCoord.s <= 0.01 || vTextureCoord.s >= 0.99 || vTextureCoord.t <= 0.01 || vTextureCoord.t >= 0.99 ) {",
+                       "               TextureColor = vec4(1.0, 1.0, 1.0, 0.5);",
+                       "       } else {",
+                       "               TextureColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));",
+                       "       }",
+                       "       TextureColor *= vFogWeight;",
+                       "       gl_FragColor = vec4(TextureColor.rgb * vLightWeight, TextureColor.a);",
+                       "}"
+               ].join( "\n" );
+
+       function Node() {
+               this.vertices = [
+                       -1.0, -1.0, 0.0,
+                       1.0, -1.0, 0.0,
+                       1.0,  1.0, 0.0,
+                       -1.0,  1.0, 0.0
+               ];
+               this.textureCoords = [
+                       1.0, 0.0,
+                       0.0, 0.0,
+                       0.0, 1.0,
+                       1.0, 1.0
+               ];
+               this.normalVectors = [
+                       0.0, 0.0, 1.0,
+                       0.0, 0.0, 1.0,
+                       0.0, 0.0, 1.0,
+                       0.0, 0.0, 1.0
+               ];
+               this.texture = null;
+               this.textureBuffer = null;
+               this.textureBufferItemSize = 0;
+               this.mashOrder = [];
+               this.mvMatrix = null;
+               this.level = -1;
+               this.targetLevel = 0;
+               this.drawable = false;
+               this.image = null;
+               this.imageID = 0;
+       }
+
+       $.widget( "tizen.gallery3d", $.mobile.widget, {
+               options: {
+                       thumbnailCache: false
+               },
+
+               _MAX_ITEM_COUNT: 28,
+               _ANIMATION_END: 999,
+               _DURATION_DEFAULT: 300,
+               _DURATION_FIRST: 1600,
+               _VIEWPORT_WIDTH: 1024,
+               _VIEWPORT_HEIGHT: 456,
+               _DIRECTION_LEFT: -1,
+               _DIRECTION_RIGHT: +1,
+
+               _gl: null,
+               _shaderProgram : null,
+               _positionBuffer : null,
+               _textureCoordBuffer : null,
+               _normalVectorBuffer : null,
+               _nodes: null,
+               _pMatrix : null,
+               _animationID: 0,
+               _dragInterval : 0,
+               _startTime : 0,
+               _sumTime : 0,
+               _lightsPositionStack : [
+                       [0.0, 0.0, -1.0],       // back
+                       [-0.2, 0.0, 0.7]        // front
+               ],
+               _path: null,
+               _swipeThresholdOfBasetimeGap: ( $.support.touch ? 30 : 70 ),
+               _swipeThresholdOfSensitivity: ( $.support.touch ? 2.0 : 10.0 ),
+               _canvas: null,
+               _imageList: [],
+               _maxDrawLength: 0,
+               _firstImageNumber: 0,
+               _lastImageNumber: 0,
+
+               _create: function () {
+                       var self = this,
+                               view = self.element,
+                               option = self.options;
+
+                       self._canvas = $( "<canvas class='ui-gallery3d-canvas'></canvas>" );
+
+                       view.addClass( "ui-gallery3d" ).append( self._canvas );
+                       self._addBehavier();
+
+                       self._dragInterval = 1000 / 30; // 30fps
+
+                       $.each( self.options, function ( key, value ) {
+                               self.options[ key ] = undefined;
+                               self._setOption( key, value );
+                       });
+
+               },
+
+               _setOption: function ( key, value ) {
+                       switch ( key ) {
+                       case "thumbnailCache" :
+                               if ( typeof value === "string" ) {
+                                       value = ( value === "true" ) ? true : false;
+                               } else {
+                                       value = !!value;
+                               }
+                               this._reset();
+                               break;
+                       }
+
+                       $.mobile.widget.prototype._setOption.call( this, key, value );
+               },
+
+               _init: function ( canvas ) {
+                       var self = this,
+                               pathPoints = [
+                                       [40, 0, -48],
+                                       [-12, 0, -40],  // contorl Point of Point1
+                                       [24, 0, -9],            // contorl Point of Point2
+                                       [-5, 0, -5]
+                               ],
+                               i;
+
+                       canvas = canvas || self._canvas;
+
+                       if ( !canvas ) {
+                               return;
+                       }
+
+                       self._gl = self._gl || self._initGL( canvas[0] );
+                       if ( !self._gl ) {
+                               return;
+                       }
+
+                       if ( !self._imageList ) {
+                               return;
+                       }
+
+                       self._shaderProgram = self._shaderProgram || self._initShader( self._gl );
+                       if ( !self._shaderProgram ) {
+                               return;
+                       }
+
+                       if ( self._imageList.length > self._MAX_ITEM_COUNT ) {
+                               self._firstImageNumber = self._imageList.length - 1;
+                               self._lastImageNumber = self._MAX_ITEM_COUNT - 1;
+                       }
+
+                       self._nodes = self._initBuffers( self._gl, self._shaderProgram );
+
+                       self._initTextures( self._gl, self._nodes );
+
+                       self._path = $.motionpath( "bezier2d", {
+                               points: pathPoints,
+                               maxLevel: self._MAX_ITEM_COUNT
+                       } );
+                       for ( i = 0; i < self._nodes.length; i += 1 ) {
+                               self._path.levels[i] = self._path.levels[i + 1] || 0;
+                               self._nodes[i].level = i;
+                       }
+               },
+
+               _final: function ( canvas ) {
+                       var self = this,
+                               gl = self._gl;
+
+                       if ( !gl ) {
+                               return;
+                       }
+
+                       canvas = canvas || self._canvas;
+
+                       $( self._nodes ).each( function ( i ) {
+                               var node = self._nodes[i];
+                               gl.deleteTexture( node.texture );
+                               node.texture = null;
+                       });
+                       self._nodes = null;
+
+                       gl.deleteBuffer( self._positionBuffer );
+                       self._positionBuffer = null;
+                       gl.deleteBuffer( self._textureCoordBuffer );
+                       self._textureCoordBuffer = null;
+                       gl.deleteBuffer( self._normalVectorBuffer );
+                       self._normalVectorBuffer = null;
+
+                       $.webgl.shader.deleteShaders( gl );
+                       gl.deleteProgram( self._shaderProgram );
+                       self._shaderProgram = null;
+
+                       self._gl = gl = null;
+               },
+
+               _addBehavier : function () {
+                       var self = this,
+                               view = self.element,
+                               canvas = self._canvas,
+                               touchStartEvt = ( $.support.touch ? "touchstart" : "mousedown" ),
+                               touchMoveEvt = ( $.support.touch ? "touchmove" : "mousemove" ) + ".gallery3d",
+                               touchEndEvt = ( $.support.touch ? "touchend" : "mouseup" ) + ".gallery3d",
+                               touchLeaveEvt = ( $.support.touch ? "touchleave" : "mouseout" ) + ".gallery3d";
+
+                       $( document ).unbind( ".gallery3d" ).bind( "pagechange.gallery3d", function ( e ) {
+                               $( e.target ).find( ".ui-gallery3d" ).gallery3d( "refresh" );
+                       }).bind( "pageremove.gallery3d", function ( e ) {
+                               $( e.target ).find( ".ui-gallery3d" ).trigger( "_destory" );
+                       });
+
+                       $( window ).unbind( ".gallery3d" ).bind( "resize.gallery3d orientationchange.gallery3d", function ( e ) {
+                               $( ".ui-page-active" ).find( ".ui-gallery3d" ).gallery3d( "refresh" );
+                       }).bind( "unload.gallery3d", function ( e ) {
+                               $( e.target ).find( ".ui-gallery3d" ).trigger( "_destory" );
+                       });
+
+                       view.bind( "_destory", function ( e ) {
+                               self._final();
+                       });
+
+                       canvas.bind( "webglcontextlost", function ( e ) {
+                               e.preventDefault();
+                       }).bind( "webglcontextrestored", function ( e ) {
+                               self._init();
+                       }).bind( touchStartEvt, function ( e ) {
+                               var i = 0,
+                                       startX = 0,
+                                       deltaMaxSteps = 20,
+                                       deltas = [ deltaMaxSteps ],
+                                       deltaTimes = [ deltaMaxSteps ],
+                                       deltaIndex = 0,
+                                       dragValue = 0,
+                                       dragDirection = false,
+                                       prevTime = 0;
+
+                               e.preventDefault();
+                               e.stopPropagation();
+
+                               if ( self._imageList.length <= 1 ) {
+                                       return;
+                               }
+
+                               self._stop();
+
+                               startX =  $.support.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;
+                               prevTime = $.now();
+
+                               for ( i = 0; i < deltaMaxSteps; i += 1 ) {
+                                       deltas[i] = startX;
+                                       deltaTimes[i] = $.now();
+                               }
+
+                               deltaIndex += 1;
+
+                               view.bind( touchMoveEvt, function ( e ) {
+                                       var x, dx, interval;
+
+                                       e.preventDefault();
+                                       e.stopPropagation();
+
+                                       x =  $.support.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;
+                                       dx = startX - x;
+
+                                       deltas[deltaIndex] = x;
+                                       deltaTimes[deltaIndex] = $.now();
+                                       interval = deltaTimes[deltaIndex] - prevTime;
+
+                                       deltaIndex = ( deltaIndex + 1 ) % deltaMaxSteps;
+
+                                       // Validation of drag
+                                       if ( Math.abs( dx ) >= 10 && interval >= self._dragInterval ) {
+                                               if ( dragDirection !== ( ( dx < 0 ) ? self._DIRECTION_RIGHT : self._DIRECTION_LEFT ) ) {
+                                                       dragValue = 0;
+                                                       dragDirection = ( dx < 0 ) ? self._DIRECTION_RIGHT : self._DIRECTION_LEFT;
+                                               }
+
+                                               dragValue += Math.abs( dx ) / 100;
+                                               if ( dragValue >= 1 ) {
+                                                       self._setPosition( self._ANIMATION_END, dragDirection );
+                                                       dragValue = 0;
+                                               } else {
+                                                       self._setPosition( dragValue, dragDirection );
+                                               }
+                                               self._drawScene();
+                                               startX = x;
+                                               prevTime = $.now();
+                                       }
+                               }).bind( touchEndEvt, function ( e ) {
+                                       var baseTime = 0,
+                                               recent = -1,
+                                               index = 0,
+                                               previous = 0,
+                                               baseTimeRatio = 0,
+                                               fx = 0,
+                                               lastX = 0,
+                                               velocityX = 0,
+                                               dx = 0,
+                                               isSwipe = true,
+                                               direction;
+
+                                       e.preventDefault();
+                                       e.stopPropagation();
+
+                                       // Validation of swipe
+                                       baseTime = $.now() - self._swipeThresholdOfBasetimeGap;
+                                       lastX = $.support.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;
+                                       dx = startX - lastX;
+                                       startX = 0;
+                                       for ( i = 0; i < deltaMaxSteps; i += 1 ) {
+                                               index = ( deltaIndex + i ) % deltaMaxSteps;
+                                               if ( deltaTimes[index] > baseTime ) {
+                                                       recent = index;
+                                                       break;
+                                               }
+                                       }
+                                       if ( recent < 0 ) {
+                                               isSwipe = false;
+                                       }
+
+                                       if ( isSwipe ) {
+                                               previous = recent;
+                                               for ( i = 0; i < deltaMaxSteps; i += 1 ) {
+                                                       previous = ( previous - 1 + deltaMaxSteps ) % deltaMaxSteps;
+                                                       if ( deltaTimes[previous] < deltaTimes[recent] ) {
+                                                               break;
+                                                       }
+                                               }
+                                               // too slow or too fast
+                                               if ( i === deltaMaxSteps || baseTime < deltaTimes[previous] ) {
+                                                       isSwipe = false;
+                                               }
+                                       }
+
+                                       if ( isSwipe ) {
+                                               baseTimeRatio = ( baseTime - deltaTimes[previous] ) / ( deltaTimes[recent] - deltaTimes[previous] );
+                                               fx = ( 1.0 - baseTimeRatio ) * deltas[previous] + baseTimeRatio * deltas[recent];
+                                               if ( Math.abs( fx - lastX ) < self._swipeThresholdOfSensitivity ) {
+                                                       fx = lastX;
+                                               }
+                                               velocityX = parseInt( ( lastX - fx ) / ( $.now() - baseTime ), 10 );
+                                       }
+
+                                       if ( isSwipe && velocityX ) {
+                                               direction = ( velocityX < 0 ) ? self._DIRECTION_LEFT : self._DIRECTION_RIGHT;
+                                               self._run( direction, Math.abs( velocityX ), dragValue );
+                                       } else if ( dragDirection !== 0 && dragValue ) {
+                                               self._animate( null, self._DURATION_DEFAULT * ( 1 - dragValue ), dragDirection, 0, dragValue );
+                                       }
+
+                                       view.unbind( ".gallery3d" );
+                               }).bind( touchLeaveEvt, function ( e ) {
+                                       view.trigger( touchEndEvt );
+                               });
+                       });
+               },
+
+               // ----------------------------------------------------------
+               // WebGL
+               // ----------------------------------------------------------
+               _initGL: function ( canvas ) {
+                       var self = this,
+                               gl;
+
+                       gl = getContext3D( canvas );
+                       if ( !gl ) {
+                               window.alert( "There's no WebGL context available!!!" );
+                               return null;
+                       }
+
+                       gl.enable( gl.BLEND );
+                       gl.blendFunc( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA );
+
+                       gl.enable( gl.DEPTH_TEST );
+                       gl.depthFunc( gl.LEQUAL );
+
+                       canvas.width = self._VIEWPORT_WIDTH;
+                       canvas.height = self._VIEWPORT_HEIGHT;
+                       gl.viewportWidth = canvas.width;
+                       gl.viewportHeight = canvas.height;
+                       gl.viewport( 0, 0, gl.viewportWidth, gl.viewportHeight );
+                       self._pMatrix = mat4.create();
+                       mat4.perspective( 40, gl.viewportWidth / gl.viewportHeight, 0.1, 10000.0, self._pMatrix );
+
+                       gl.clearColor( 0.15, 0.15, 0.15, 1.0 );
+                       gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT );
+
+                       return gl;
+               },
+
+               _initShader : function ( gl ) {
+                       var self = this,
+                               shaderProgram;
+
+                       shaderProgram = $.webgl.shader.addShaderProgram( self._gl, VERTEX_SHADER, FRAGMENT_SHADER );
+                       gl.useProgram( shaderProgram );
+
+                       shaderProgram.vertexPositionAttr = gl.getAttribLocation( shaderProgram, "aVertexPosition" );
+                       gl.enableVertexAttribArray( shaderProgram.vertexPositionAttr );
+
+                       shaderProgram.textureCoordAttr = gl.getAttribLocation( shaderProgram, "aTextureCoord" );
+                       gl.enableVertexAttribArray( shaderProgram.textureCoordAttr );
+
+                       // Set light normal vectors for lighting~
+                       shaderProgram.vertexNormalAttr = gl.getAttribLocation( shaderProgram, "aVertexNormal" );
+                       gl.enableVertexAttribArray( shaderProgram.vertexNormalAttr );
+
+                       shaderProgram.perspectiveMU = gl.getUniformLocation( shaderProgram, "uPerspectiveMatrix");
+                       shaderProgram.transformMU = gl.getUniformLocation( shaderProgram, "uMoveMatrix");
+                       shaderProgram.sampleUniform = gl.getUniformLocation( shaderProgram, "uSampler");
+
+                       // Set light variables~
+                       shaderProgram.normalMU = gl.getUniformLocation( shaderProgram, "nNormalMatrix");
+                       shaderProgram.ambientColorU = gl.getUniformLocation( shaderProgram, "uAmbientColor");
+                       shaderProgram.lightDirU_first = gl.getUniformLocation( shaderProgram, "uLightDirection_first");
+                       shaderProgram.lightDirU_second = gl.getUniformLocation( shaderProgram, "uLightDirection_second");
+                       shaderProgram.directionColorU = gl.getUniformLocation( shaderProgram, "uDirectionColor");
+
+                       return shaderProgram;
+               },
+
+               _initBuffers: function ( gl, shaderProgram ) {
+                       var self = this,
+                               i = 0,
+                               mashBase = 0,
+                               vertices = [],
+                               textureCoords = [],
+                               normalVectors = [],
+                               nodes = [],
+                               maxDrawLength = self._MAX_ITEM_COUNT;
+
+                       for ( i = 0; i < self._imageList.length + 1; i += 1 ) {
+                               nodes[i] = new Node();
+                               $.merge( vertices, nodes[i].vertices );
+                               $.merge( textureCoords, nodes[i].textureCoords );
+                               $.merge( normalVectors, nodes[i].normalVectors );
+
+                               nodes[i].textureBuffer = gl.createBuffer();
+                               gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, nodes[i].textureBuffer );
+                               mashBase = i * 4;
+                               nodes[i].meshOrder = [
+                                       mashBase, mashBase + 1, mashBase + 2,
+                                       mashBase + 2, mashBase + 3, mashBase
+                               ];
+                               gl.bufferData( gl.ELEMENT_ARRAY_BUFFER, new GlArray16( nodes[i].meshOrder ), gl.STATIC_DRAW );
+                               gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, null ); // release buffer memory
+                               nodes[i].textureBufferItemSize = 6;
+                       }
+
+                       self._positionBuffer = $.webgl.buffer.attribBufferData( gl, new GlArray32( vertices ) );
+                       self._positionBuffer.itemSize = 3;
+
+                       self._textureCoordBuffer = $.webgl.buffer.attribBufferData( gl, new GlArray32( textureCoords ) );
+                       self._textureCoordBuffer.itemSize = 2;
+
+                       self._normalVectorBuffer = $.webgl.buffer.attribBufferData( gl, new GlArray32( normalVectors ) ); // Vertex's normal vector for Direction light
+                       self._normalVectorBuffer.itemSize = 3;
+
+                       // Ambient light
+                       gl.uniform3f( shaderProgram.ambientColorU, 0.1, 0.1, 0.1 );
+                       // Direcntion light
+                       gl.uniform3f( shaderProgram.directionColorU, 1.0, 1.0, 1.0 );
+
+                       return nodes;
+               },
+
+               // ----------------------------------------------------------
+               // Texture
+               // ----------------------------------------------------------
+               _initTextures: function ( gl, nodes ) {
+                       var self = this;
+
+                       $( nodes ).each( function ( i ) {
+                               var node = nodes[i],
+                                       url;
+
+                               if ( !self._imageList[i] ) {
+                                       return false;
+                               }
+
+                               url = self._imageList[i].src;
+                               node.texture = gl.createTexture();
+                               self._loadImage( url, i, i, gl, nodes );
+                       });
+               },
+
+               _loadImage: function ( url, i, imageID, gl, nodes ) {
+                       var self = this,
+                               isMipmap = false,
+                               image,
+                               node;
+
+                       gl = gl || self._gl;
+                       nodes = nodes || self._nodes;
+                       isMipmap = isMipmap || false;
+                       node = nodes[i];
+                       node.image = node.image || new Image();
+
+                       $( node.image ).one( "load", function ( e ) {
+                               self._bindTexture( gl, node, this, isMipmap );
+                               node.imageID = imageID;
+
+                               if ( !self._animationID ) {
+                                       self._setPosition( 0, 0 );
+                               }
+                       });
+
+                       if ( self.options.thumbnailCache ) {
+                               $.imageloader.getThumbnail( url, function ( result ) {
+                                       if ( result === "NOT_FOUND_ERR" ) {
+                                               $.imageloader.setThumbnail( url, function ( result ) {
+                                                       if ( result && result.length > 30 ) {
+                                                               node.image.src = result;
+                                                               isMipmap = true;
+                                                       } else {
+                                                               node.image.src = url;
+                                                       }
+                                               });
+                                       } else if ( result && result.length > 30 ) {
+                                               node.image.src = result;
+                                               isMipmap = true;
+                                       } else {
+                                               node.image.src = url;
+                                       }
+                               });
+                       } else {
+                               node.image.src = url;
+                       }
+               },
+
+               _bindTexture: function ( gl, node, image, isMipmap ) {
+                       if ( !node || !node.texture ) {
+                               return;
+                       }
+
+                       gl.pixelStorei( gl.UNPACK_FLIP_Y_WEBGL, true );
+
+                       gl.bindTexture( gl.TEXTURE_2D, node.texture );
+                       gl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image );
+
+                       if ( isMipmap ) {
+                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR );
+                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST );
+                               gl.generateMipmap( gl.TEXTURE_2D );
+                       } else {
+                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR );
+                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR );
+                       }
+
+                       gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );
+                       gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );
+
+                       node.texture.loaded = true;
+
+                       // release texture memory
+                       gl.bindTexture( gl.TEXTURE_2D, null );
+               },
+
+               // ----------------------------------------------------------
+               // rendering
+               // ----------------------------------------------------------
+               _setPosition: function ( progress, direction ) {
+                       var self = this,
+                               nodes = self._nodes,
+                               imageList = self._imageList,
+                               imageListLength = imageList.length,
+                               itemCount = self._MAX_ITEM_COUNT,
+                               displayLength = ( imageListLength > itemCount ) ? itemCount : imageListLength,
+                               nextLevelLenth = 0,
+                               i = 0,
+                               t = 0,
+                               position = 0,
+                               angle = 0,
+                               current = 0,
+                               next = 0,
+                               nextLevel = 0,
+                               path = self._path,
+                               nextImageID = 0;
+
+                       nextLevelLenth = ( direction >= 0 ) ? displayLength + 1 : displayLength;
+
+                       if ( !nodes[i].level ) {
+                               nodes[i].level = displayLength;
+                       }
+
+                       for ( i = 0; i < displayLength; i += 1 ) {
+                               if ( !nodes[i].mvMatrix ) {
+                                       nodes[i].mvMatrix = mat4.create();
+                               }
+
+                               if ( direction > 0 && nodes[i].level >= displayLength ) {
+                                       nodes[i].level = 0;
+                               }
+
+                               current = path.levels[nodes[i].level];
+                               nextLevel = ( nodes[i].level + nextLevelLenth + direction ) % nextLevelLenth;
+                               next = path.levels[nextLevel];
+
+                               if ( imageListLength > itemCount ) {
+                                       if ( direction > 0 && nextLevel === 1
+                                                       && self._firstImageNumber !== nodes[i].imageID ) {
+                                               self._loadImage( imageList[self._firstImageNumber].src, i, self._firstImageNumber );
+                                       } else if ( direction < 0 && nextLevel === nextLevelLenth - 1
+                                                       && self._lastImageNumber !== nodes[i].imageID ) {
+                                               self._loadImage( imageList[self._lastImageNumber].src, i, self._lastImageNumber );
+                                       }
+                               }
+
+                               mat4.identity( nodes[i].mvMatrix );
+                               mat4.translate( nodes[i].mvMatrix, [-2.0, -2.0, 1.0] );
+                               mat4.rotate( nodes[i].mvMatrix, self._degreeToRadian( 19 ), [1, 0, 0] );
+
+                               t = ( current + ( next - current ) * ( ( progress > 1 ) ? 1 : progress ) );
+
+                               if ( progress >= self._ANIMATION_END ) {
+                                       nodes[i].level = nextLevel || displayLength;
+                                       t = path.levels[nodes[i].level];
+                               }
+
+                               if ( ( progress < self._ANIMATION_END )
+                                               && ( direction <= 0 && nodes[i].level < 1 ) ) {
+                                       nodes[i].drawable = false;
+                               } else {
+                                       nodes[i].drawable = true;
+                               }
+
+                               if ( progress === self._ANIMATION_END && nodes[i].level === 1 ) {
+                                       self.element.trigger( "select", imageList[ nodes[i].imageID ], nodes[i].imageID );
+                               }
+
+                               position = path.getPosition( t );
+                               angle = path.getAngle( t );
+
+                               mat4.translate( nodes[i].mvMatrix, position );
+                               mat4.rotate( nodes[i].mvMatrix, angle, [0, 1, 0] );
+                       }
+
+                       if ( imageListLength > itemCount && progress >= self._ANIMATION_END ) {
+                               self._firstImageNumber = ( self._firstImageNumber - direction ) % imageListLength;
+                               if ( self._firstImageNumber < 0 ) {
+                                       self._firstImageNumber = imageListLength - 1;
+                               }
+
+                               self._lastImageNumber = ( self._lastImageNumber - direction ) % imageListLength;
+                               if ( self._lastImageNumber < 0 ) {
+                                       self._lastImageNumber = imageListLength - 1;
+                               }
+                       }
+                       self._drawScene();
+               },
+
+               _drawScene: function () {
+                       if ( !this._gl || !this._shaderProgram ) {
+                               return;
+                       }
+
+                       var self = this,
+                               gl = self._gl,
+                               shaderProgram = self._shaderProgram,
+                               nodes = self._nodes,
+                               nodesLength = nodes.length,
+                               i;
+
+                       gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT );
+
+                       gl.bindBuffer( gl.ARRAY_BUFFER, self._positionBuffer );
+                       gl.vertexAttribPointer( shaderProgram.vertexPositionAttr, self._positionBuffer.itemSize, gl.FLOAT, false, 0, 0 );
+
+                       gl.bindBuffer( gl.ARRAY_BUFFER, self._textureCoordBuffer );
+                       gl.vertexAttribPointer( shaderProgram.textureCoordAttr, self._textureCoordBuffer.itemSize, gl.FLOAT, false, 0, 0 );
+
+                       gl.bindBuffer( gl.ARRAY_BUFFER, self._normalVectorBuffer );
+                       gl.vertexAttribPointer( shaderProgram.vertexNormalAttr, self._normalVectorBuffer.itemSize, gl.FLOAT, false, 0, 0 );
+
+                       for ( i = 0; i < nodesLength; i += 1 ) {
+                               if ( nodes[i].drawable ) {
+                                       self._drawElement( self._pMatrix, nodes[i] );
+                               }
+                       }
+               },
+
+               _drawElement: function ( perspectiveMatrix, targetNode ) {
+                       var self = this,
+                               gl = self._gl,
+                               shaderProgram = self._shaderProgram,
+                               moveMatrix = targetNode.mvMatrix,
+                               texture = targetNode.texture,
+                               meshIndexBuffer = targetNode.textureBuffer,
+                               meshIndexBufferItemSize = targetNode.textureBufferItemSize,
+                               lightPositions = self._lightsPositionStack,
+                               LightDir,
+                               normalMatrix;
+
+                       if ( !moveMatrix ) {
+                               return;
+                       }
+
+                       gl.activeTexture( gl.TEXTURE0 );
+                       if ( texture && texture.loaded ) {
+                               gl.bindTexture( gl.TEXTURE_2D, texture );
+                       }
+                       gl.uniform1i( shaderProgram.sampleUniform, 0 );
+
+                       LightDir = vec3.create();
+                       vec3.normalize( lightPositions[0], LightDir );
+                       vec3.scale( LightDir, -8 );
+                       gl.uniform3fv( shaderProgram.lightDirU_first, LightDir );
+
+                       vec3.normalize( lightPositions[1], LightDir );
+                       vec3.scale( LightDir, -1 );
+                       gl.uniform3fv( shaderProgram.lightDirU_second, LightDir );
+                       gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, meshIndexBuffer );
+
+                       gl.uniformMatrix4fv( shaderProgram.perspectiveMU, false, perspectiveMatrix );
+                       gl.uniformMatrix4fv( shaderProgram.transformMU, false, moveMatrix );
+
+                       normalMatrix = mat3.create();
+                       mat4.toInverseMat3( moveMatrix, normalMatrix );
+                       mat3.transpose( normalMatrix );
+                       gl.uniformMatrix3fv( shaderProgram.normalMU, false, normalMatrix );
+
+                       gl.drawElements( gl.TRIANGLES, meshIndexBufferItemSize, gl.UNSIGNED_SHORT, 0 );
+
+                       // release buffer memory
+                       gl.bindBuffer( gl.ARRAY_BUFFER, null );
+                       gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, null );
+
+                       // release texture memory
+                       gl.bindTexture( gl.TEXTURE_2D, null );
+               },
+
+               // ----------------------------------------------------------
+               // Animation
+               // ----------------------------------------------------------
+               _animate: function ( easingType, duration, direction, repeatCount, startValue, _removeCount ) {
+                       var self = this,
+                               timeNow = $.now(),
+                               progress,
+                               removeCount = 0;
+
+                       easingType = easingType || "linear";
+                       startValue = startValue || 0;
+                       _removeCount = _removeCount || 0;
+
+                       if ( self._sumTime >= duration ) {
+                               self._setPosition( self._ANIMATION_END, direction );
+                               self._stop();
+                               return;
+                       }
+
+                       if ( self._startTime === 0 ) {
+                               self._startTime = timeNow;
+                       } else {
+                               self._sumTime = timeNow - self._startTime;
+                               progress = $.easing[ easingType ]( self._sumTime / duration, self._sumTime, startValue, repeatCount + 1, duration );
+                               removeCount = parseInt( Math.abs( progress ), 10 );
+
+                               if ( _removeCount !== removeCount ) {
+                                       self._setPosition( self._ANIMATION_END, direction );
+                                       _removeCount = removeCount;
+
+                                       if ( ( repeatCount - _removeCount ) >= 0 ) {
+                                               self._animate( easingType, duration, direction, repeatCount, startValue, _removeCount );
+                                       } else {
+                                               self._stop();
+                                       }
+                                       return;
+                               }
+
+                               self._setPosition( progress - _removeCount, direction );
+                       }
+
+                       self._animationID = window.requestAnimationFrame( function () {
+                               self._animate( easingType, duration, direction, repeatCount, startValue, _removeCount );
+                       });
+               },
+
+               _run: function ( direction, repeatCount, startValue ) {
+                       var self = this,
+                               repeat = repeatCount || 0,
+                               duration = self._DURATION_DEFAULT * ( repeat + 1 );
+
+                       if ( self._imageList.length <= 1 ) {
+                               return;
+                       }
+
+                       startValue = startValue || 0;
+                       duration = ( duration >= 0 ) ? duration : 0;
+
+                       if ( self._animationID ) {
+                               self._setPosition( self._ANIMATION_END, direction );
+                               self._stop();
+                       }
+
+                       self._animate( "easeOutExpo", duration, direction, repeat, startValue );
+               },
+
+               _reset: function () {
+                       if ( !this._canvas || !this._gl ) {
+                               return;
+                       }
+
+                       this._final();
+                       this._init();
+                       this.refresh();
+               },
+
+               _stop: function () {
+                       if ( this._animationID ) {
+                               window.cancelAnimationFrame( this._animationID );
+                       }
+                       this._animationID = 0;
+
+                       this._startTime = 0;
+                       this._sumTime = 0;
+               },
+
+               _degreeToRadian: function ( degree ) {
+                       return degree * Math.PI / 180;
+               },
+
+               next: function () {
+                       this._run( this._DIRECTION_LEFT , 0 );
+               },
+
+               prev: function () {
+                       this._run( this._DIRECTION_RIGHT, 0 );
+               },
+
+               refresh: function () {
+                       var view = this.element,
+                               canvas = view.find( "canvas.ui-gallery3d-canvas" );
+
+                       if ( canvas.width() !== view.width() ) {
+                               canvas.width( view.width() );
+                       }
+
+                       if ( !this._animationID ) {
+                               this._setPosition( 0, 0 );
+                       }
+               },
+
+               select: function ( index ) {
+                       var nodes = this._nodes,
+                               repeat,
+                               i,
+                               imageID,
+                               object = null,
+                               target = 0,
+                               direction = 0;
+
+                       if ( index && this._animationID ) {
+                               this._stop();
+                       }
+
+                       for ( i in nodes ) {
+                               if ( nodes[i].level === 1 ) {
+                                       object = this._imageList[ nodes[i].imageID ];
+                                       imageID = nodes[i].imageID;
+                                       break;
+                               }
+                       }
+
+                       if ( !index ) {
+                               return object;
+                       }
+
+                       if ( index < 0 && index >= this._imageList.length ) {
+                               return;
+                       }
+
+                       target = index - imageID;
+                       direction = ( target > 0 ) ? this._DIRECTION_LEFT
+                               : ( ( target < 0 ) ? this._DIRECTION_RIGHT : 0 );
+                       if ( direction ) {
+                               this._run( direction, Math.abs( target ) - 1  );
+                       }
+               },
+
+               add: function ( item, index ) {
+                       if ( !item ) {
+                               return;
+                       }
+
+                       if ( typeof item === "string" ) {
+                               item = { "src" : item };
+                       }
+
+                       index = index || 0;
+                       if ( typeof index !== "number" && index < 0
+                                       && index >= this._imageList.length ) {
+                               return;
+                       }
+
+                       this._imageList.splice( index, 0, item );
+                       if ( this._gl ) {
+                               this._reset();
+                       }
+               },
+
+               remove: function ( index ) {
+                       index = index || 0;
+                       if ( typeof index !== "number" && index < 0
+                                       && index >= this._imageList.length ) {
+                               return;
+                       }
+
+                       this._imageList.splice( index, 1 );
+                       if ( this._gl ) {
+                               this._reset();
+                       }
+               },
+
+               clearThumbnailCache: function () {
+                       if ( !this._nodes || ( this._nodes.length <= 0 ) ) {
+                               return;
+                       }
+
+                       var i, url;
+                       for ( i = 0; i < this._imageList.length; i += 1 ) {
+                               url = this._imageList[i].src;
+                               $.imageloader.removeThumbnail( url );
+                       }
+               },
+
+               empty: function () {
+                       this._imageList = [];
+                       this._reset();
+               },
+
+               length: function () {
+                       return this._imageList.length;
+               }
+       });
+
+       $( document ).bind( "pagecreate create", function ( e ) {
+               $( ":jqmData(role='gallery3d')" ).gallery3d();
+       });
+
+} ( jQuery, document, window ) );
+
index 67c430c..c1f77c4 100644 (file)
@@ -55,7 +55,7 @@
  *
  * Events:
  *
- *                     create :  triggered when a multimediaview is created.
+ *                     N/A
  *
  * Examples:
  *
                // Audio player control
                <audio data-controls="true" style="width:100%;"> <source src="<AUDIO_FILE_URL>" type="audio/mp3" /> Your browser does not support the audio tag.
                </audio>
-
-       The multimedia view can define a callback for the create event, which is fired when the widget is created.
-               $('.selector').multimediaview({
-                       create:function(event, u){...}
-               });
-               $(".selector").bind("create", function(event, ui)
-               {
-                       // Respond to the multimedia view widget creation
-               });
 */
 /**
        @property {Boolean} data-control
                                        };
                                }
                                docWidth = body.clientWidth;
-                               docHeight = body.clientHeight;
+                               docHeight = body.clientHeight - 1;
 
                                header.hide();
                                footer.hide();
                                                .siblings()
                                                .addClass( "ui-multimediaview-siblings-off" );
                                });
-                               this._fitContentArea( currentPage );
                                fullscreenButton.removeClass( "ui-fullscreen-on" ).addClass( "ui-fullscreen-off" );
 
-                               view.width( docWidth ).height( docHeight - 1 );
-                               wrap.height( docHeight - 1 );
-                               view.offset( {
-                                       top: 0,
-                                       left: 0
-                               }).addClass( "ui-multimediaview-fullscreen" );
+                               wrap.height( docHeight );
+                               view.width( docWidth ).height( docHeight );
                        } else {
                                if ( !self.backupView ) {
                                        return;
                                                .siblings()
                                                .removeClass( "ui-multimediaview-siblings-off" );
                                });
-                               this._fitContentArea( currentPage );
+
                                fullscreenButton.removeClass( "ui-fullscreen-off" ).addClass( "ui-fullscreen-on" );
 
                                wrap.css( "height", self.backupView.wrapHeight );
                                        "height": self.backupView.height,
                                        "position": self.backupView.position,
                                        "z-index": self.backupView.zindex
-                               }).removeClass( "ui-multimediaview-fullscreen" );
+                               });
                                self.backupView = null;
+
+                               $( window ).trigger( "throttledresize" );
                        }
                },
 
                                currenttimeBar = seekBar.find( ".ui-currenttime" ),
                                $document = $( document );
 
-                       $document.unbind( ".multimediaview" ).bind( "pagechange.multimediaview", function ( e ) {
-                               var $page = $( e.target );
-                               if ( $page.find( view ).length > 0 && viewElement.autoplay ) {
-                                       viewElement.play();
-                               }
-
-                               if ( option.controls ) {
-                                       self._resize();
-                               }
-                       }).bind( "pagebeforechange.multimediaview", function ( e ) {
-                               if ( option.fullScreen ) {
-                                       self.fullScreen( !option.fullScreen );
-                               }
-
-                               if ( viewElement.played.length !== 0 ) {
-                                       viewElement.pause();
-                               }
-                       });
-
-                       $( window ).unbind( ".multimediaview" ).bind( "resize.multimediaview orientationchange.multimediaview", function ( e ) {
-                               if ( !option.controls ) {
-                                       return;
-                               }
-                               var $page = $( e.target ),
-                                       $scrollview = view.parents( ".ui-scrollview-clip" );
-
-                               $scrollview.each( function ( i ) {
-                                       if ( $.data( this, "scrollview" ) ) {
-                                               $( this ).scrollview( "scrollTo", 0, 0 );
-                                       }
-                               });
-
-                               // for maintaining page layout
-                               if ( !option.fullScreen ) {
-                                       $( ".ui-footer:visible" ).show();
-                               } else {
-                                       $( ".ui-footer" ).hide();
-                                       self._fitContentArea( $page );
-                               }
-
-                               if ( control.css( "display" ) !== "none" ) {
-                                       self._resize();
-                               }
-                       });
-
                        view.bind( "loadedmetadata.multimediaview", function ( e ) {
                                if ( !isNaN( viewElement.duration ) ) {
                                        durationLabel.find( "p" ).text( self._convertTimeFormat( viewElement.duration ) );
                        fullscreenButton.bind( "click.multimediaview", function ( e ) {
                                e.preventDefault();
                                self.fullScreen( !self.options.fullScreen );
-                               control.fadeIn( "fast", function () {
-                                       self._resize();
-                               });
+                               self._resize();
                                self._endTimer();
                                e.stopPropagation();
                        });
                        var view = this.element,
                                viewElement = view[0],
                                control = $( "<span></span>" ).addClass( "ui-multimediaview-control" ),
-                               playpauseButton = $( "<span></span>" ).addClass( "ui-playpausebutton ui-button" ),
+                               playpauseButton = $( "<span></span>" ).addClass( "ui-playpausebutton ui-button ui-play-icon" ),
                                seekBar = $( "<span></span>" ).addClass( "ui-seekbar ui-multimediaview-bar" ),
                                timestampLabel = $( "<span><p>00:00:00</p></span>" ).addClass( "ui-timestamplabel" ),
                                durationLabel = $( "<span><p>00:00:00</p></span>" ).addClass( "ui-durationlabel" ),
 
                        seekBar.append( durationBar ).append( currenttimeBar ).append( durationLabel ).append( timestampLabel );
 
-                       playpauseButton.addClass( "ui-play-icon" );
                        volumeButton.addClass( viewElement.muted ? "ui-mute-icon" : "ui-volume-icon" );
                        volumeBar.append( volumeGuide ).append( volumeValue ).append( volumeHandle );
                        volumeControl.append( volumeBar );
                        viewElement.volume = value;
                },
 
-               _fitContentArea: function ( page, parent ) {
-                       if ( typeof parent === "undefined" ) {
-                               parent = window;
-                       }
-
-                       var $page = $( page ),
-                               $content = $( ".ui-content:visible:first" ),
-                               hh = $( ".ui-header:visible" ).outerHeight() || 0,
-                               fh = $( ".ui-footer:visible" ).outerHeight() || 0,
-                               pt = parseFloat( $content.css( "padding-top" ) ),
-                               pb = parseFloat( $content.css( "padding-bottom" ) ),
-                               wh = ( ( parent === window ) ? window.innerHeight : $( parent ).height() ),
-                               height = wh - ( hh + fh ) - ( pt + pb );
-
-                       $content.offset( {
-                               top: ( hh + pt )
-                       }).height( height );
-               },
-
                width: function ( value ) {
                        if ( this.options.fullScreen ) {
                                return;
 
        $( document ).bind( "pagecreate create", function ( e ) {
                $.tizen.multimediaview.prototype.enhanceWithin( e.target );
+       }).bind( "pagechange", function ( e ) {
+               $( e.target ).find( ".ui-multimediaview" ).each( function () {
+                       var view = $( this ),
+                               viewElement = view[0];
+
+                       if ( viewElement.autoplay ) {
+                               viewElement.play();
+                       }
+                       view.multimediaview( "refresh" );
+               });
+       }).bind( "pagebeforechange", function ( e ) {
+               $( e.target ).find( ".ui-multimediaview" ).each( function () {
+                       var view = $( this ),
+                               viewElement = view[0],
+                               isFullscreen = view.multimediaview( "fullScreen" );
+
+                       if ( isFullscreen ) {
+                               view.multimediaview( "fullScreen", !isFullscreen );
+                       }
+
+                       if ( viewElement.played.length !== 0 ) {
+                               viewElement.pause();
+                       }
+               });
        });
+
+       $( window ).bind( "resize orientationchange", function ( e ) {
+               $( ".ui-page-active" ).find( ".ui-multimediaview" ).multimediaview( "refresh" );
+       });
+
 } ( jQuery, document, window ) );
 
index c1f427b..06d60cc 100644 (file)
@@ -95,6 +95,9 @@
 
                        // only content
                        self._bindContentControlEvents();
+
+                       // Store back-button, to show again
+                       self._backBtnQueue = [];
                },
 
                /* add minimum fixed css style to bar(header/footer) and content
                        window.addEventListener( "softkeyboardchange", function ( e ) {
                                var $elDownBtn = $( "<div class='ui-btn-footer-down'></div>" ),
                                        $elPage = $( ".ui-page-active" ),
+                                       backBtn,
                                        backBtnPosition = "footer";
 
                                if ( $elPage.data( "addBackBtn" ) ) {
                                        if ( e.state == "on" ) {
                                                if ( !$elPage.find( ".ui-" + backBtnPosition + " .ui-btn-footer-down" ).length ) {
                                                        $elDownBtn.buttonMarkup( { icon: "down" } ).appendTo( $elPage.find( ".ui-" + backBtnPosition ) );
-                                                       $( ".ui-btn-footer-down" ).bind( "vclick",  function ( ) {
-                                                               $elPage.find( "input" ).blur();
-                                                       });
                                                }
-                                               $( ".ui-page-active .ui-btn-back" ).remove();
+
+                                               // N_SE-32900: If an app moves a page when the pop is shown, the .ui-page-active page
+                                               //             is changed.
+                                               //             In this case, the '.ui-page-active .ui-btn-back' selector indicates a
+                                               //             new page's one, and the old page's .ui-btn-back button is still hidden.
+                                               //             So, the current back button is remembered to be shown at the
+                                               //             softkeyboardchange.off event.
+                                               backBtn = $( ".ui-page-active .ui-btn-back" );
+                                               backBtn.hide();
+                                               self._backBtnQueue.push( backBtn );     // Store hidden backBtn
                                        } else if ( e.state == "off" ) {
-                                               $elPage.page( "addBackBtn", backBtnPosition );
+                                               self._backBtnQueue.forEach( function ( b ) {
+                                                       b.show();       // Show each backBtn,
+                                               } );
+                                               self._backBtnQueue.length = 0;  // and clear queue.
+
                                                $( ".ui-btn-footer-down" ).remove();
                                        }
                                }
                                $elHeader = $elPage.find( ":jqmData(role='header')" ),
                                $elFooter = $elPage.find( ":jqmData(role='footer')" ),
                                $elContent = $elPage.find( ":jqmData(role='content')" ),
-                               resultMinHeight;
+                               resultMinHeight,
+                               dpr = 1,
+                               layoutInnerHeight = window.innerHeight;
 
-                       resultMinHeight = window.innerHeight - $elHeader.height() - $elFooter.height();
+                        if ( !$.support.scrollview ) {
+                                dpr = window.outerWidth / window.innerWidth;
+                                layoutInnerHeight = Math.floor( window.outerHeight / dpr );
+                        }
+
+                       resultMinHeight = layoutInnerHeight - $elHeader.height() - $elFooter.height();
 
                        $elContent.css( "min-height", resultMinHeight - parseFloat( $elContent.css("padding-top") ) - parseFloat( $elContent.css("padding-bottom") ) + "px" );
                },
                                $elContent = $elPage.find( ":jqmData(role='content')" ),
                                resultContentHeight = 0,
                                resultFooterHeight = 0,
-                               resultHeaderHeight = 0;
+                               resultHeaderHeight = 0,
+                               layoutInnerHeight = window.innerHeight,
+                               dpr = 1;
 
                        if ( $elPage.length ) {
                                $elFooter = $elPage.find( ":jqmData(role='footer')" );
                                $elFooter.css( "bottom", 0 );
                        }
 
-                       resultContentHeight = window.innerHeight - resultFooterHeight - resultHeaderHeight;
+                       if ( !$.support.scrollview ) {
+                               dpr = window.outerWidth / window.innerWidth;
+                               layoutInnerHeight = Math.floor( window.outerHeight / dpr );
+                       }
+
+                       resultContentHeight = layoutInnerHeight - resultFooterHeight - resultHeaderHeight;
 
                        if ( $.support.scrollview ) {
                                $elContent.height( resultContentHeight -
index 63b0e5e..7f5f131 100644 (file)
                                        .appendTo( focusedEl.parent() )
                                        .buttonMarkup( {
                                                icon: IconStyle,
+                                               iconpos: "notext",
                                                corners: true,
                                                shadow: true
                                        } );
index ca9acc7..0096e22 100644 (file)
@@ -34,7 +34,7 @@
  *
  *     HTML Attributes:
  *
- *             data-link : Represents the page id.
+ *             data-link : Represents the id of the page or the URL of other HTML file.
  *                             The page contains data for the user, for example, an address book.
  *                             If the value is null, anchor button doesn't work. (Default : null)
  *             data-label:     Provide a label for a user-guide. (Default : 'To : ')
  *
  *     Events:
  *
- *             create : Occur when create TokenTextArea widget.
  *             select : Occur when a button is selected.
  *             add : Occur when new button is inserted. (@since Tizen 2.1 deprecated, You can still use this event. But not recommended.)
  *             remove : Occur when a button is removed. (@since Tizen 2.1 deprecated, You can still use this event. But not recommended.)
  *
  *     Examples:
  *
- *             <div data-role="tokentextarea" data-label="To : " data-link:"#addressbook" data-description="+ {0}">
+ *             <div data-role="tokentextarea" data-label="To : " data-link="#pageId" data-description="+ {0}">
  *             </div>
  *
  */
 
        To add a token text area widget to the application, use the following code:
 
-               <div data-role="tokentextarea" data-label="To : " data-link="pageId">
+               <div data-role="tokentextarea" data-label="To : " data-link="#pageId">
                </div>
 */
 
 /**
-       @property {String}  data-label
+       @property {String} data-label
        Sets a label as a guide for the user.
        For example, while composing an e-mail message, the 'To : ' label is a guide for the user to enter e-mail addresses.
+
+               <div data-role="tokentextarea" data-label="To : ">
+               </div>
 */
 
 /**
        @property {String} data-decription
        Manages the message format.
        The message is displayed when the widget status changes to focus out
+
+               <div data-role="tokentextarea" data-description=" + {0}">
+               </div>
  */
 /**
        @property {String} data-link
-       Sets the ID of the page to which the button links.
-*/
-/**
-       @event create
-       The create event is fired when the token text area widget is created:
+       Sets the ID of the page or the URL of other HTML file to which the button links.
+       If the data-link is set with the URL of other HTML file, the 'dom-cache' option of both page - a page containing a Tokentextarea and a page in the target HTML file - must be set as 'true'.
 
-               <div data-role="tokentextarea">
+               <div data-role="tokentextarea" data-link="#pageId">
                </div>
-               $(".selector").tokentextarea
-               ({
-                       create: function(event, ui)
-                       {
-                               // Handle the create event
-                       }
-               });
-**/
+
+               <div data-role="tokentextarea" data-link="fileName.html" data-dom-cache="true">
+               </div>
+*/
 /**
        @event select
        The select event is fired when a token text area widget button is selected:
 
                <div data-role="tokentextarea">
                </div>
-               $(".selector").bind("select", function(event, ui)
+               $(".selector").on("select", function(event, ui)
                {
                        // Handle the select event
                });     
 
                <div data-role="tokentextarea">
                </div>
-               $(".selector").bind("add", function(event, ui)
+               $(".selector").on("add", function(event, ui)
                {
                        // Handle the add event
                });
 /**
        @method destroy
        The destroy method is used to remove in the current widget all the new DOM elements that you have created.
-       
+
                <div data-role="tokentextarea">
                </div>
                $(".selector").tokentextarea("destroy");
-       
+
        @since Tizen2.0
 */
 /**
index 2aaab25..1e9e919 100644 (file)
  *                             Developers can implement this function for preparing data.
  *                             Optional.
  *
- *             centerTo ( String )
- *                     : Find a DOM Element with the given class name.
- *                     This element will be centered on the screen.
- *                     Serveral elements were found, the first element is displayed.
+ *             centerTo ( selector )
+ *                     : Center the particular item with the class name on the VirtualGrid's display area.;
+ *                     i.e., this method selects an item in the data elements of grid using the class name and
+ *                     moves the data elements inside the widget to display the row containing the selected item
+ *                     in the middle of the screen.
+ *                     If multiple items are matched with the class name, the first matched item will be selected.
+ *                     This method is only available when "data-rotation" attribute is "true".
+ *
+ *             resize ()
+ *                     : Rearrange items to fit a new widget size.
  *
  * Events:
  *             scrollstart : : This event triggers when a user begin to move the scroll on VirtualGrid.
        The scrollstart event is fired when the user starts scrolling through the grid:
 
                <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
-               // Option 01
-               $(".selector").virtualgrid
-               ({
-                       scrollstart: function(event, ui)
-                       {
-                       // Handle the scrollstart event
-                       }
-               });
-               // Option 02
-               $(".selector").bind("scrollstart", function(event, ui)
+               $(".selector").on("scrollstart", function(event, ui)
                {
                // Handle the scrollstart event
                });
        The scrollupdate event is fired when the user moves the scroll bar in the grid:
 
                <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
-               // Option 01
-               $(".selector").virtualgrid
-               ({
-                       scrollupdate: function(event, ui)
-                       {
-                       // Handle the scrollupdate event
-                       }
-               });
-               // Option 02
-               $(".selector").bind("scrollupdate", function(event, ui)
+               $(".selector").on("scrollupdate", function(event, ui)
                {
                // Handle the scrollupdate event
                });
        The scrollstop event is fired when the user stops scrolling:
 
                <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
-               // Option 01
-               $(".selector").virtualgrid
-               ({
-                       scrollstop: function(event, ui)
-                       {
-                       // Handle the scrollstop event
-                       }
-               });
-               // Option 02
-               $(".selector").bind("scrollstop", function(event, ui)
+               $(".selector").on("scrollstop", function(event, ui)
                {
                // Handle the scrollstop event
                });
        The select event is fired when a virtual grid cell is selected:
 
                <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
-               // Option 01
-               $(".selector").virtualgrid
-               ({
-                       select: function(event, ui)
-                       {
-                       // Handle the select event
-                       }
-               });
-               // Option 02
-               $(".selector").bind("select", function(event, ui)
+               $(".selector").on("select", function(event, ui)
                {
                // Handle the select event
                });
 */
 /**
        @method centerTo
-       The centerTo method is used to search for the DOM element with a specified class name. The retrieved element is placed at the center of the virtual grid. If multiple elements are retrieved, the first element from the result list is placed at the center of the virtual grid.
+       The centerTo method is used to center the particular item with the class name on the VirtualGrid's display area. If multiple items are matched with the class name, the first matched item will be selected. This method is only available when "data-rotation" attribute is "true".
 
-               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
-               $(".selector").virtualgrid("centerTo", "selector");
+               <div data-role="virtualgrid" data-scroll="y" data-rotation="true" data-template="tizen-demo-namecard"></div>
+               $(".selector").virtualgrid("centerTo", selector);
 */
 /**
        @method resize
-       The resize method is used to rearrange the DOM elements to fit a new screen size when the screen is resized:
+       The resize method is used to rearrange items to fit a new widget size. :
 
                <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
-               ".selector").virtualgrid("resize");
+               $(".selector").virtualgrid("resize");
 
        @since Tizen2.0
 */
                        return ret;
                },
 
-               resize : function () {
+               _resize : function () {
                        var self = this,
                                ret = null,
                                rowsPerView = 0,
                                diffRowCnt = 0,
                                clipSize = 0,
                                prevcnt = 0,
-                               clipPosition = 0;
+                               clipPosition = 0,
+                               rowsLength = 0,
+                               row = null,
+                               size = 0;
+
+                       if ( self._direction ) {
+                               size = self._calculateClipHeight();
+                               self._$view.height( size );
+                               self._$clip.height( size );
+                       } else {
+                               size = self._calculateClipWidth();
+                               self._$view.width( size );
+                               self._$clip.width( size );
+                       }
 
                        itemCount = self._calculateColumnCount();
                        if ( itemCount != self._itemCount ) {
                                        // decrease row.
                                        self._decreaseRow( self._rowsPerView - rowsPerView );
                                }
+                               self._$rows = self._$view.children();
+                               self._$rows.sort( function ( a, b ) {
+                                       return a.getAttribute( "row-index" ) - b.getAttribute( "row-index" );
+                               });
+
                                self._rowsPerView = rowsPerView;
                                self._clipSize = clipSize;
                                self._blockScroll = self._rowsPerView > self._totalRowCnt;
                        }
                },
 
+               resize : function () {
+                       var self = this,
+                               height = 0,
+                               $virtualgrid = $( ".ui-virtualgrid-view" );
+
+                       self._inheritedSize = self._getinheritedSize( self.element );
+
+                       if ( $virtualgrid.length !== 0 ) {
+                               self._resize();
+                       }
+               },
+
                _initScrollView : function () {
-                       var self = this;
+                       var self = this,
+                               oldDirection = self.options.direction;
                        $.extend( self.options, self._scrollView.options );
+                       self.options.direction = oldDirection;
                        self.options.moveThreshold = 10;
                        self.options.showScrollBars = false;
                        self._getScrollHierarchy = self._scrollView._getScrollHierarchy;
                //----------------------------------------------------//
                //              scroll process          //
                //----------------------------------------------------//
-               centerTo: function ( selector ) {
+               centerTo : function ( selector ) {
                        var self = this,
-                               i,
-                               newX = 0,
-                               newY = 0;
+                               row = null,
+                               targetItem = null,
+                               targetRowIndex = -1,
+                               rowsLength = self._$rows.length,
+                               newPosition,
+                               i;
 
                        if ( !self.options.rotation ) {
                                return;
                        }
 
-                       for ( i = 0; i < self._$rows.length; i++ ) {
-                               if ( $( self._$rows[i] ).hasClass( selector ) ) {
-                                       if ( self._direction ) {
-                                               newX = -( i * self._cellSize - self._clipSize / 2 + self._cellSize * 2 );
-                                       } else {
-                                               newY = -( i * self._cellSize - self._clipSize / 2 + self._cellSize * 2 );
-                                       }
-                                       self.scrollTo( newX, newY );
+                       for ( i = 0; i < rowsLength; ++i ) {
+                               row = $( self._$rows[ i ] );
+                               targetItem = row.children( "." + selector );
+                               if ( targetItem.length ) {
+                                       targetRowIndex = parseInt( row.attr( "row-index" ), 10 );
+                                       break;
+                               }
+                       }
+
+                       if ( targetRowIndex === -1 ) {
+                               targetRowIndex = self._getTargetRowIndex( selector );
+                               if ( targetRowIndex === -1 ) {
                                        return;
                                }
                        }
+
+                       newPosition = -( targetRowIndex * self._cellSize - ( self._clipSize - self._cellSize ) / 2 );
+                       if ( self._direction ) {
+                               self.scrollTo( newPosition, 0 );
+                       } else {
+                               self.scrollTo( 0, newPosition );
+                       }
+               },
+
+               _getTargetRowIndex: function ( selector ) {
+                       var self = this,
+                               dataCount = self._numItemData,
+                               itemCount = self._itemCount,
+                               attrName = self._direction ? "top" : "left",
+                               html = "",
+                               targetRowIndex = self._totalRowCnt,
+                               i;
+
+                       for ( i = 0; i < dataCount; ++i ) {
+                               html = self._makeHtmlData( i, i % itemCount, attrName );
+                               if ( self._hasClassItem( html, selector ) ) {
+                                       targetRowIndex = parseInt( i / itemCount, 10 );
+                                       break;
+                               }
+                       }
+
+                       if ( targetRowIndex === self._totalRowCnt ) {
+                               return -1;
+                       }
+
+                       return targetRowIndex;
+               },
+
+               _hasClassItem: function ( html, selector ) {
+                       var self = this,
+                               classString = self._getItemClass( html );
+
+                       if ( classString.indexOf( selector ) === -1 ) {
+                               return false;
+                       }
+
+                       if ( classString.indexOf( "virtualgrid-item" ) === -1 ) {
+                               return false;
+                       }
+
+                       return true;
+               },
+
+               _getItemClass: function ( html ) {
+                       var classIndex = html.indexOf( "class" ),
+                               classBeginIndex = Math.min( html.indexOf( "\"", classIndex ), html.indexOf( "'", classIndex ) ),
+                               classEndIndex = Math.min( html.indexOf( "\"", classBeginIndex + 1 ), html.indexOf( "'", classBeginIndex + 1 ) );
+
+                       return html.slice( classBeginIndex + 1, classEndIndex );
                },
 
                scrollTo: function ( x, y, duration ) {
 
                        replaceStartIdx = ( Math.abs( di ) < realRowCount ) ? 0 : ( di > 0 ) ? di - realRowCount : di + realRowCount;
                        if ( di > 0 ) { // scroll up
-                               for ( i = replaceStartIdx; i < di; i++ ) {
+                               for ( i = replaceStartIdx; i < di; ++i ) {
                                        idx = -parseInt( ( sy / self._cellSize ) + i + 3, 10 );
                                        self._replaceRow( rawView.lastChild, circularNum( idx, self._totalRowCnt ) );
                                        rawView.insertBefore( rawView.lastChild, rawView.firstChild );
                                }
                        } else if ( di < 0 ) { // scroll down
-                               for ( i = replaceStartIdx; i > di; i-- ) {
+                               for ( i = replaceStartIdx; i > di; --i ) {
                                        idx = self._rowsPerView - parseInt( ( sy / self._cellSize ) + i, 10 );
                                        self._replaceRow( rawView.firstChild, circularNum( idx, self._totalRowCnt ) );
                                        rawView.insertBefore( rawView.firstChild, rawView.lastChild.nextSibling );
                                var height = 0,
                                        $virtualgrid = $( ".ui-virtualgrid-view" );
                                if ( $virtualgrid.length !== 0 ) {
-                                       if ( self._direction ) {
-                                               height = self._calculateClipHeight();
-                                               self._$view.height( height );
-                                               self._$clip.height( height );
-                                       } else {
-                                               height = self._calculateClipWidth();
-                                               self._$view.width( height );
-                                               self._$clip.width( height );
-                                       }
-                                       self.resize();
+                                       self._resize();
                                }
                        } );
 
                                htmlStr = self._getConvertedTmplStr( itemData );
                                htmlStr = self._insertPosToTmplStr( htmlStr, attrName, ( colIndex * self._cellOtherSize ) );
                        }
+
                        return htmlStr;
                },
 
                _increaseRow : function ( num ) {
                        var self = this,
                                rotation = self.options.rotation,
-                               $row = null,
-                               headItemIndex = 0,
-                               tailItemIndex = 0,
-                               itemIndex = 0,
-                               size = self._scalableSize,
-                               idx = 0;
+                               totalRowCnt = self._totalRowCnt,
+                               rowView = self._$view[ 0 ],
+                               firstRow = null,
+                               lastRow = rowView.lastChild,
+                               row = null,
+                               headRowIndex = 0,
+                               tailRowIndex = 0,
+                               i;
+
+                       if ( !lastRow ) {
+                               return;
+                       }
 
-                       headItemIndex = parseInt( $( self._$view.children().first() ).attr( "row-index" ), 10 ) - 1;
-                       tailItemIndex = parseInt( $( self._$view.children()[self._rowsPerView] ).attr( "row-index" ), 10 ) + 1;
+                       tailRowIndex = parseInt( lastRow.getAttribute( "row-index" ), 10 );
+                       if ( !rotation ) {
+                               firstRow = rowView.firstChild;
+                               headRowIndex = parseInt( firstRow.getAttribute( "row-index" ), 10 );
+                       }
+
+                       for ( i = 0 ; i < num ; ++i ) {
+                               if ( tailRowIndex >= totalRowCnt - 1 && !rotation ) {
+                                       if ( headRowIndex == 0 ) {
+                                               break;
+                                       }
 
-                       for ( idx = 1 ; idx <= num ; idx++ ) {
-                               if ( tailItemIndex + idx  >= self._totalRowCnt ) {
-                                       $row = $( self._makeRow( headItemIndex ) );
-                                       self._$view.prepend( $row );
-                                       headItemIndex -= 1;
+                                       row = self._makeRow( --headRowIndex );
+                                       rowView.insertBefore( row, firstRow );
+                                       firstRow = row;
                                } else {
-                                       $row = $( self._makeRow( tailItemIndex + idx ) );
-                                       self._$view.append( $row );
+                                       row = self._makeRow( circularNum( ++tailRowIndex, totalRowCnt ) );
+                                       rowView.appendChild( row );
                                }
+
                                if ( self._direction ) {
-                                       $row.width( self._cellSize );
+                                       $( row ).width( self._cellSize );
                                } else {
-                                       $row.height( self._cellSize );
+                                       $( row ).height( self._cellSize );
                                }
                        }
                },
 
                _decreaseRow : function ( num ) {
                        var self = this,
-                               idx = 0;
+                               rowView = self._$view[ 0 ],
+                               i;
 
-                       for ( idx = 0 ; idx < num ; idx++ ) {
-                               self._$view.children().last().remove();
+                       for ( i = 0 ; i < num ; ++i ) {
+                               rowView.removeChild( rowView.lastChild );
                        }
                },
 
                        while ( tempBlocks.children.length ) {
                                block.appendChild( tempBlocks.children[0] );
                        }
+                       block.setAttribute( "row-index", tempBlocks.getAttribute( "row-index" ) );
                        tempBlocks.parentNode.removeChild( tempBlocks );
                },
 
index 28bb95a..44e3883 100644 (file)
@@ -78,7 +78,7 @@ $.mobile.$document.bind( "pagecreate", function( e ) {
                                                .buttonMarkup( { icon: "header-back-btn", theme: o.backBtnTheme || thisTheme } );
 
                                        backBtn.find( ".ui-btn-text" ).text( o.backBtnText );
-                                       backBtn.appendTo( $dest );
+                                       backBtn.appendTo( $dest );
                                }
                        }
 
index b74108a..2508d34 100644 (file)
 
                _handleWindowResize: function( e ) {
                        if ( this._isOpen ) {
+                               // Context popup close when Window resize event
+                               if( this.positionTo !== "window" ) {
+                                       this.close();
+                                       return false;
+                               }
                                this._maybeRefreshTimeout();
                        }
                },
index 458cdda..0bece79 100644 (file)
@@ -124,6 +124,11 @@ define( [ "jquery",
 
                _handleWindowResize: function( e ) {
                        if ( this._isOpen ) {
+                               // Context popup close when Window resize event
+                               if( this.positionTo !== "window" ) {
+                                       this.close();
+                                       return false;
+                               }
                                this._maybeRefreshTimeout();
                        }
                },
index 4902491..3f8a528 100644 (file)
@@ -687,7 +687,7 @@ jQuery.extend( jQuery.easing,
        }
 })( jQuery );
 /*
-* jQuery Mobile Framework Git Build: SHA1: e8f95df072513dc95469b346e4085d7eaa9dabf3 <> Date: Fri Mar 29 19:38:09 2013 +0900
+* jQuery Mobile Framework Git Build: SHA1: 2da2929a17d23b83302498d63c38780321449f44 <> Date: Wed Apr 10 23:44:06 2013 +0900
 * http://jquerymobile.com
 *
 * Copyright 2012 jQuery Foundation and other contributors
@@ -2655,7 +2655,8 @@ if ( eventCaptureSupported ) {
                setup: function() {
                        // If the event is supported natively, return false so that jQuery
                        // will bind to the event using DOM methods.
-                       if ( $.support.orientation && !$.event.special.orientationchange.disabled ) {
+                       if ( $.support.orientation && 
+                               $.event.special.orientationchange.disabled === false ) {
                                return false;
                        }
 
@@ -4336,6 +4337,10 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau
                        if ( !settings.reloadPage ) {
                                enhancePage( page, settings.role );
                                deferred.resolve( absUrl, options, page );
+                               //if we are reloading the page make sure we update the base if its not a prefetch
+                               if( base && !options.prefetch ){
+                                       base.set(url);
+                               }
                                return deferred.promise();
                        }
                        dupCachedPage = page;
@@ -4372,7 +4377,8 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau
                }
 
                // Reset base to the default document base.
-               if ( base ) {
+               // only reset if we are not prefetching
+               if ( base && typeof options.prefetch === "undefined" ) {
                        base.reset();
                }
 
@@ -4407,7 +4413,8 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau
                                                url = fileUrl = path.getFilePath( $( "<div>" + RegExp.$1 + "</div>" ).text() );
                                        }
 
-                                       if ( base ) {
+                                       //dont update the base tag if we are prefetching
+                                       if ( base && typeof options.prefetch === "undefined") {
                                                base.set( fileUrl );
                                        }
 
@@ -5015,7 +5022,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau
                                if ( url && $.inArray( url, urls ) === -1 ) {
                                        urls.push( url );
 
-                                       $.mobile.loadPage( url, { role: $link.attr( "data-" + $.mobile.ns + "rel" ) } );
+                                       $.mobile.loadPage( url, { role: $link.attr( "data-" + $.mobile.ns + "rel" ),prefetch: true } );
                                }
                        });
                });
@@ -5588,7 +5595,7 @@ $.mobile.$document.bind( "pagecreate", function( e ) {
                                                .buttonMarkup( { icon: "header-back-btn", theme: o.backBtnTheme || thisTheme } );
 
                                        backBtn.find( ".ui-btn-text" ).text( o.backBtnText );
-                                       backBtn.appendTo( $dest );
+                                       backBtn.appendTo( $dest );
                                }
                        }
 
@@ -7480,6 +7487,11 @@ $.mobile.$document.bind( "pagecreate create", function( e ) {
 
                _handleWindowResize: function( e ) {
                        if ( this._isOpen ) {
+                               // Context popup close when Window resize event
+                               if( this.positionTo !== "window" ) {
+                                       this.close();
+                                       return false;
+                               }
                                this._maybeRefreshTimeout();
                        }
                },
@@ -9138,6 +9150,10 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
 
                this.setButtonText();
 
+               // TIZEN fix: The TIZEN buttonMarkup patch adds 'ui-btn-icon-only' class to the ui-btn-inner.
+               // It makes the text not to be shown, so the class must be removed. (Like JQM)
+               button.children('.ui-btn-inner').removeClass('ui-btn-icon-only');
+
                // Opera does not properly support opacity on select elements
                // In Mini, it hides the element, but not its text
                // On the desktop,it seems to do the opposite
index 992da8e..dc70eb0 100644 (file)
@@ -45,17 +45,17 @@ jQuery.easing.jswing=jQuery.easing.swing,jQuery.extend(jQuery.easing,{def:"easeO
  * http://jquery.org/license
  */(function(a,b){function m(b,c,d,e){var h={data:e||e===0||e===!1?e:c?c.data:{},_wrap:c?c._wrap:null,tmpl:null,parent:c||null,nodes:[],calls:u,nest:v,wrap:w,html:x,update:y};return b&&a.extend(h,b,{nodes:[],parent:c}),d&&(h.tmpl=d,h._ctnt=h._ctnt||h.tmpl(a,h),h.key=++j,(l.length?g:f)[j]=h),h}function n(b,c,e){var f,g=e?a.map(e,function(a){return typeof a=="string"?b.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+b.key+'" $2'):a:n(a,b,a._ctnt)}):b;return c?g:(g=g.join(""),g.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(b,c,d,e){f=a(d).get(),t(f),c&&(f=o(c).concat(f)),e&&(f=f.concat(o(e)))}),f?f:o(g))}function o(b){var c=document.createElement("div");return c.innerHTML=b,a.makeArray(c.childNodes)}function p(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(b,c,d,e,f,g,h){var i=a.tmpl.tag[d],j,k,l;if(!i)throw"Unknown template tag: "+d;return j=i._default||[],g&&!/\w$/.test(f)&&(f+=g,g=""),f?(f=r(f),h=h?","+r(h)+")":g?")":"",k=g?f.indexOf(".")>-1?f+r(g):"("+f+").call($item"+h:f,l=g?k:"(typeof("+f+")==='function'?("+f+").call($item):("+f+"))"):l=k=j.$1||"null",e=r(e),"');"+i[c?"close":"open"].split("$notnull_1").join(f?"typeof("+f+")!=='undefined' && ("+f+")!=null":"true").split("$1a").join(l).split("$1").join(k).split("$2").join(e||j.$2||"")+"__.push('"})+"');}return __;")}function q(b,c){b._wrap=n(b,!0,a.isArray(c)?c:[e.test(c)?c:a(c).html()]).join("")}function r(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(a){var b=document.createElement("div");return b.appendChild(a.cloneNode(!0)),b.innerHTML}function t(b){function p(b){function p(a){a+=c,n=i[a]=i[a]||m(n,f[n.parent.key+c]||n.parent)}var e,h=b,l,n,o;if(o=b.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(e=h.getAttribute(d)));e!==o&&(h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0,(n=f[o])||(n=g[o],n=m(n,f[h]||g[h]),n.key=++j,f[j]=n),k&&p(o)),b.removeAttribute(d)}else k&&(n=a.data(b,"tmplItem"))&&(p(n.key),f[n.key]=n,h=a.data(b.parentNode,"tmplItem"),h=h?h.key:0);if(n){l=n;while(l&&l.key!=h)l.nodes.push(b),l=l.parent;delete n._ctnt,delete n._wrap,a.data(b,"tmplItem",n)}}var c="_"+k,e,h,i={},l,n,o;for(l=0,n=b.length;l<n;l++){if((e=b[l]).nodeType!==1)continue;h=e.getElementsByTagName("*");for(o=h.length-1;o>=0;o--)p(h[o]);p(e)}}function u(a,b,c,d){if(!a)return l.pop();l.push({_:a,tmpl:b,item:this,data:c,options:d})}function v(b,c,d){return a.tmpl(a.template(b),c,d,this)}function w(b,c){var d=b.options||{};return d.wrapped=c,a.tmpl(a.template(b.tmpl),b.data,d,b.item)}function x(b,c){var d=this._wrap;return a.map(a(a.isArray(d)?d.join(""):d).filter(b||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function y(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]),a(b).remove()}var c=a.fn.domManip,d="_tmplitem",e=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,f={},g={},h,i={key:0,data:{}},j=0,k=0,l=[];a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(b,c){a.fn[b]=function(d){var e=[],g=a(d),i,j,l,m,n=this.length===1&&this[0].parentNode;h=f||{};if(n&&n.nodeType===11&&n.childNodes.length===1&&g.length===1)g[c](this[0]),e=this;else{for(j=0,l=g.length;j<l;j++)k=j,i=(j>0?this.clone(!0):this).get(),a(g[j])[c](i),e=e.concat(i);k=0,e=this.pushStack(e,b,g.selector)}return m=h,h=null,a.tmpl.complete(m),e}}),a.fn.extend({tmpl:function(b,c,d){return a.tmpl(this[0],b,c,d)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(b,d,e,g){if(b[0]&&a.isArray(b[0])){var i=a.makeArray(arguments),j=b[0],l=j.length,m=0,n;while(m<l&&!(n=a.data(j[m++],"tmplItem")));n&&k&&(i[2]=function(b){a.tmpl.afterManip(this,b,e)}),c.apply(this,i)}else c.apply(this,arguments);return k=0,h||a.tmpl.complete(f),this}}),a.extend({tmpl:function(b,c,d,e){var h,j=!e;if(j)e=i,b=a.template[b]||a.template(null,b),g={};else if(!b)return b=e.tmpl,f[e.key]=e,e.nodes=[],e.wrapped&&q(e,e.wrapped),a(n(e,null,e.tmpl(a,e)));return b?(typeof c=="function"&&(c=c.call(e||{})),d&&d.wrapped&&q(d,d.wrapped),h=a.isArray(c)?a.map(c,function(a){return a?m(d,e,b,a):null}):[m(d,e,b,c)],j?a(n(e,null,h)):h):[]},tmplItem:function(b){var c;b instanceof a&&(b=b[0]);while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||i},template:function(b,c){return c?(typeof c=="string"?c=p(c):c instanceof a&&(c=c[0]||{}),c.nodeType&&(c=a.data(c,"tmpl")||a.data(c,"tmpl",p(c.innerHTML))),typeof b=="string"?a.template[b]=c:c):b?typeof b!="string"?a.template(null,b):a.template[b]||a.template(null,e.test(b)?b:a(b)):null},encode:function(a){return(""+a).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}}),a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(a){f={}},afterManip:function(c,d,e){var f=d.nodeType===11?a.makeArray(d.childNodes):d.nodeType===1?[d]:[];e.call(c,d),t(f),k++}})})(jQuery);
 /*
-* jQuery Mobile Framework Git Build: SHA1: e8f95df072513dc95469b346e4085d7eaa9dabf3 <> Date: Fri Mar 29 19:38:09 2013 +0900
+* jQuery Mobile Framework Git Build: SHA1: 2da2929a17d23b83302498d63c38780321449f44 <> Date: Wed Apr 10 23:44:06 2013 +0900
 * http://jquerymobile.com
 *
 * Copyright 2012 jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 *
-*/(function(a,b,c){typeof define=="function"&&define.amd?define(["jquery"],function(d){return c(d,a,b),d.mobile}):c(a.jQuery,a,b)})(this,document,function(a,b,c,d){(function(a,b,d){var e={};a.mobile=a.extend({},{version:"1.2.0",ns:"",subPageUrlKey:"ui-page",activePageClass:"ui-page-active",activeBtnClass:"ui-btn-active",focusClass:"ui-focus",ajaxEnabled:!0,hashListeningEnabled:!0,linkBindingEnabled:!0,defaultPageTransition:"fade",maxTransitionWidth:!1,minScrollBack:250,touchOverflowEnabled:!1,defaultDialogTransition:"pop",pageLoadErrorMessage:"Error Loading Page",pageLoadErrorMessageTheme:"e",phonegapNavigationEnabled:!1,autoInitializePage:!0,pushStateEnabled:!0,ignoreContentEnabled:!1,orientationChangeEnabled:!0,buttonMarkup:{hoverDelay:200},$window:a(b),$document:a(c),getAttrFixed:function(a,b){var c=a.getAttribute(b);return c==="true"?!0:c==="false"?!1:c===null?d:c},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(c){a.type(c)!=="number"&&(c=a.mobile.defaultHomeScroll),a.event.special.scrollstart.enabled=!1,setTimeout(function(){b.scrollTo(0,c),a.mobile.$document.trigger("silentscroll",{x:0,y:c})},20),setTimeout(function(){a.event.special.scrollstart.enabled=!0},150)},nsNormalizeDict:e,nsNormalize:function(b){if(!b)return;return e[b]||(e[b]=a.camelCase(a.mobile.ns+b))},getInheritedTheme:function(a,b){var c=a[0],d="",e=/ui-(bar|body|overlay)-([a-z])\b/,f,g;while(c){f=c.className||"";if(f&&(g=e.exec(f))&&(d=g[2]))break;c=c.parentNode}return d||b||"a"},closestPageData:function(a){return a.closest(':jqmData(role="page"), :jqmData(role="dialog")').data("page")},enhanceable:function(a){return this.haveParents(a,"enhance")},hijackable:function(a){return this.haveParents(a,"ajax")},haveParents:function(b,c){if(!a.mobile.ignoreContentEnabled)return b;var d=b.length,e=a(),f,g,h;for(var i=0;i<d;i++){g=b.eq(i),h=!1,f=b[i];while(f){var j=f.getAttribute?f.getAttribute("data-"+a.mobile.ns+c):"";if(j==="false"){h=!0;break}f=f.parentNode}h||(e=e.add(g))}return e},getScreenHeight:function(){return b.innerHeight||a.mobile.$window.height()}},a.mobile),a.fn.jqmData=function(b,c){var e;return typeof b!="undefined"&&(b&&(b=a.mobile.nsNormalize(b)),arguments.length<2||c===d?e=this.data(b):e=this.data(b,c)),e},a.jqmData=function(b,c,d){var e;return typeof c!="undefined"&&(e=a.data(b,c?a.mobile.nsNormalize(c):c,d)),e},a.fn.jqmRemoveData=function(b){return this.removeData(a.mobile.nsNormalize(b))},a.jqmRemoveData=function(b,c){return a.removeData(b,a.mobile.nsNormalize(c))},a.fn.removeWithDependents=function(){a.removeWithDependents(this)},a.removeWithDependents=function(b){var c=a(b);(c.jqmData("dependents")||a()).remove(),c.remove()},a.fn.addDependents=function(b){a.addDependents(a(this),b)},a.addDependents=function(b,c){var d=a(b).jqmData("dependents")||a();a(b).jqmData("dependents",a.merge(d,c))},a.fn.getEncodedText=function(){return a("<div/>").text(a(this).text()).html()},a.fn.jqmEnhanceable=function(){return a.mobile.enhanceable(this)},a.fn.jqmHijackable=function(){return a.mobile.hijackable(this)};var f=a.find,g=/:jqmData\(([^)]*)\)/g;a.find=function(b,c,d,e){return b=b.replace(g,"[data-"+(a.mobile.ns||"")+"$1]"),f.call(this,b,c,d,e)},a.extend(a.find,f),a.find.matches=function(b,c){return a.find(b,null,null,c)},a.find.matchesSelector=function(b,c){return a.find(c,null,null,[b]).length>0},a.extend({creatorDict:{},delegateSelfInitWithSingleSelector:function(b,c){if(typeof b!="function")return!1;var d=b.prototype.options.initSelector,e=/:jqmData\(role='[A-z\-]+'\)$/;if(e.test(d)){var f=d.indexOf("'")+1,g=d.lastIndexOf("'"),h=d.substring(f,g);if(!a.creatorDict.hasOwnProperty(h))return a.creatorDict[h]={},a.creatorDict[h].target=b,c===!0&&(a.creatorDict[h].useKeepNative=c),!0}return!1}}),a(c).bind("pagecreate create",function(b){var c="*[data-"+a.mobile.ns+"role]";a(c,b.target).each(function(){dataRoleValue=this.getAttribute("data-role"),matchedObj=a.creatorDict[dataRoleValue],matchedObj&&matchedObj.target.prototype.enhance(this,matchedObj.useKeepNative)})})})(a,this),function(a,b){var c=0,d=Array.prototype.slice,e=a.cleanData;a.cleanData=function(b){for(var c=0,d;(d=b[c])!=null;c++)try{a(d).triggerHandler("remove")}catch(f){}e(b)},a.widget=function(b,c,d){var e,f,g,h,i=b.split(".")[0];b=b.split(".")[1],e=i+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][e]=function(b){return!!a.data(b,e)},a[i]=a[i]||{},f=a[i][b],g=a[i][b]=function(a,b){if(!this._createWidget)return new g(a,b);arguments.length&&this._createWidget(a,b)},a.extend(g,f,{version:d.version,_proto:a.extend({},d),_childConstructors:[]}),h=new c,h.options=a.widget.extend({},h.options),a.each(d,function(b,e){a.isFunction(e)&&(d[b]=function(){var a=function(){return c.prototype[b].apply(this,arguments)},d=function(a){return c.prototype[b].apply(this,a)};return function(){var b=this._super,c=this._superApply,f;return this._super=a,this._superApply=d,f=e.apply(this,arguments),this._super=b,this._superApply=c,f}}())}),g.prototype=a.widget.extend(h,{widgetEventPrefix:b},d,{constructor:g,namespace:i,widgetName:b,widgetBaseClass:e,widgetFullName:e}),f?(a.each(f._childConstructors,function(b,c){var d=c.prototype;a.widget(d.namespace+"."+d.widgetName,g,c._proto)}),delete f._childConstructors):c._childConstructors.push(g),a.widget.bridge(b,g)},a.widget.extend=function(c){var e=d.call(arguments,1),f=0,g=e.length,h,i;for(;f<g;f++)for(h in e[f])i=e[f][h],e[f].hasOwnProperty(h)&&i!==b&&(c[h]=a.isPlainObject(i)?a.widget.extend({},c[h],i):i);return c},a.widget.bridge=function(c,e){var f=e.prototype.widgetFullName;a.fn[c]=function(g){var h=typeof g=="string",i=d.call(arguments,1),j=this;return g=!h&&i.length?a.widget.extend.apply(null,[g].concat(i)):g,h?this.each(function(){var d,e=a.data(this,f);if(!e)return a.error("cannot call methods on "+c+" prior to initialization; "+"attempted to call method '"+g+"'");if(!a.isFunction(e[g])||g.charAt(0)==="_")return a.error("no such method '"+g+"' for "+c+" widget instance");d=e[g].apply(e,i);if(d!==e&&d!==b)return j=d&&d.jquery?j.pushStack(d.get()):d,!1}):this.each(function(){var b=a.data(this,f);b?b.option(g||{})._init():new e(g,this)}),j}},a.Widget=function(a,b){},a.Widget._childConstructors=[],a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(b,d){d=a(d||this.defaultElement||this)[0],this.element=a(d),this.uuid=c++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=a.widget.extend({},this.options,this._getCreateOptions(),b),this.bindings=a(),this.hoverable=a(),this.focusable=a(),d!==this&&(a.data(d,this.widgetName,this),a.data(d,this.widgetFullName,this),this._on({remove:"destroy"}),this.document=a(d.style?d.ownerDocument:d.document||d),this.window=a(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:a.noop,_getCreateEventData:a.noop,_create:a.noop,_init:a.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(a.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:a.noop,widget:function(){return this.element},option:function(c,d){var e=c,f,g,h;if(arguments.length===0)return a.widget.extend({},this.options);if(typeof c=="string"){e={},f=c.split("."),c=f.shift();if(f.length){g=e[c]=a.widget.extend({},this.options[c]);for(h=0;h<f.length-1;h++)g[f[h]]=g[f[h]]||{},g=g[f[h]];c=f.pop();if(d===b)return g[c]===b?null:g[c];g[c]=d}else{if(d===b)return this.options[c]===b?null:this.options[c];e[c]=d}}return this._setOptions(e),this},_setOptions:function(a){var b;for(b in a)this._setOption(b,a[b]);return this},_setOption:function(a,b){return this.options[a]=b,a==="disabled"&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!b).attr("aria-disabled",b),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(b,c){c?(b=a(b),this.bindings=this.bindings.add(b)):(c=b,b=this.element);var d=this;a.each(c,function(c,e){function f(){if(d.options.disabled===!0||a(this).hasClass("ui-state-disabled"))return;return(typeof e=="string"?d[e]:e).apply(d,arguments)}typeof e!="string"&&(f.guid=e.guid=e.guid||f.guid||a.guid++);var g=c.match(/^(\w+)\s*(.*)$/),h=g[1]+d.eventNamespace,i=g[2];i?d.widget().delegate(i,h,f):b.bind(h,f)})},_off:function(a,b){b=(b||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,a.unbind(b).undelegate(b)},_delay:function(a,b){function c(){return(typeof a=="string"?d[a]:a).apply(d,arguments)}var d=this;return setTimeout(c,b||0)},_hoverable:function(b){this.hoverable=this.hoverable.add(b),this._on(b,{mouseenter:function(b){a(b.currentTarget).addClass("ui-state-hover")},mouseleave:function(b){a(b.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(b){this.focusable=this.focusable.add(b),this._on(b,{focusin:function(b){a(b.currentTarget).addClass("ui-state-focus")},focusout:function(b){a(b.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.apply(this.element[0],[c].concat(d))===!1||c.isDefaultPrevented())}},a.each({show:"fadeIn",hide:"fadeOut"},function(b,c){a.Widget.prototype["_"+b]=function(d,e,f){typeof e=="string"&&(e={effect:e});var g,h=e?e===!0||typeof e=="number"?c:e.effect||c:b;e=e||{},typeof e=="number"&&(e={duration:e}),g=!a.isEmptyObject(e),e.complete=f,e.delay&&d.delay(e.delay),g&&a.effects&&(a.effects.effect[h]||a.uiBackCompat!==!1&&a.effects[h])?d[b](e):h!==b&&d[h]?d[h](e.duration,e.easing,f):d.queue(function(c){a(this)[b](),f&&f.call(d[0]),c()})}}),a.uiBackCompat!==!1&&(a.Widget.prototype._getCreateOptions=function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]})}(a),function(a,b){a.widget("mobile.widget",{_createWidget:function(){a.Widget.prototype._createWidget.apply(this,arguments),this._trigger("init")},_getCreateOptions:function(){var c=this.element,d={};return a.each(this.options,function(a){var e=c.jqmData(a.replace(/[A-Z]/g,function(a){return"-"+a.toLowerCase()}));e!==b&&(d[a]=e)}),d},enhanceWithin:function(b,c){this.enhance(a(this.options.initSelector,a(b)),c)},enhance:function(b,c){var d,e,f=a(b),g=this;f=a.mobile.enhanceable(f),c&&f.length&&(d=a.mobile.closestPageData(f),e=d&&d.keepNativeSelector()||"",f=f.not(e)),f[this.widgetName]()},raise:function(a){throw"Widget ["+this.widgetName+"]: "+a}})}(a),function(a,b){a.extend(a.mobile,{loadingMessageTextVisible:d,loadingMessageTheme:d,loadingMessage:d,showPageLoadingMsg:function(b,c,d){a.mobile.loading("show",b,c,d)},hidePageLoadingMsg:function(){a.mobile.loading("hide")},loading:function(){this.loaderWidget.loader.apply(this.loaderWidget,arguments)}});var c="ui-loader",e=a("html"),f=a.mobile.$window;a.widget("mobile.loader",{options:{theme:"a",textVisible:!1,html:"",text:"loading"},defaultHtml:"<div class='"+c+"'>"+"<span class='ui-icon ui-icon-loading'></span>"+"<h1></h1>"+"</div>",fakeFixLoader:function(){var b=a("."+a.mobile.activeBtnClass).first();this.element.css({top:a.support.scrollTop&&f.scrollTop()+f.height()/2||b.length&&b.offset().top||100})},checkLoaderPosition:function(){var b=this.element.offset(),c=f.scrollTop(),d=a.mobile.getScreenHeight();if(b.top<c||b.top-c>d)this.element.addClass("ui-loader-fakefix"),this.fakeFixLoader(),f.unbind("scroll",this.checkLoaderPosition).bind("scroll",this.fakeFixLoader)},resetHtml:function(){this.element.html(a(this.defaultHtml).html())},show:function(b,g,h){var i,j,k,l;this.resetHtml(),a.type(b)==="object"?(l=a.extend({},this.options,b),b=l.theme||a.mobile.loadingMessageTheme):(l=this.options,b=b||a.mobile.loadingMessageTheme||l.theme),j=g||a.mobile.loadingMessage||l.text,e.addClass("ui-loading");if(a.mobile.loadingMessage!==!1||l.html)a.mobile.loadingMessageTextVisible!==d?i=a.mobile.loadingMessageTextVisible:i=l.textVisible,this.element.attr("class",c+" ui-corner-all ui-body-"+b+" ui-loader-"+(i||g||b.text?"verbose":"default")+(l.textonly||h?" ui-loader-textonly":"")),l.html?this.element.html(l.html):this.element.find("h1").text(j),this.element.appendTo(a.mobile.pageContainer),this.checkLoaderPosition(),f.bind("scroll",a.proxy(this.checkLoaderPosition,this))},hide:function(){e.removeClass("ui-loading"),a.mobile.loadingMessage&&this.element.removeClass("ui-loader-fakefix"),a.mobile.$window.unbind("scroll",a.proxy(this.fakeFixLoader,this)),a.mobile.$window.unbind("scroll",a.proxy(this.checkLoaderPosition,this))}}),f.bind("pagecontainercreate",function(){a.mobile.loaderWidget=a.mobile.loaderWidget||a(a.mobile.loader.prototype.defaultHtml).loader()})}(a,this),function(a,b,c,d){function x(a){while(a&&typeof a.originalEvent!="undefined")a=a.originalEvent;return a}function y(b,c){var e=b.type,f,g,i,k,l,m,n,o,p;b=a.Event(b),b.type=c,f=b.originalEvent,g=a.event.props,e.search(/^(mouse|click)/)>-1&&(g=j);if(f)for(n=g.length,k;n;)k=g[--n],b[k]=f[k];e.search(/mouse(down|up)|click/)>-1&&!b.which&&(b.which=1);if(e.search(/^touch/)!==-1){i=x(f),e=i.touches,l=i.changedTouches,m=e&&e.length?e[0]:l&&l.length?l[0]:d;if(m)for(o=0,p=h.length;o<p;o++)k=h[o],b[k]=m[k]}return b}function z(b){var c={},d,f;while(b){d=a.data(b,e);for(f in d)d[f]&&(c[f]=c.hasVirtualBinding=!0);b=b.parentNode}return c}function A(b,c){var d;while(b){d=a.data(b,e);if(d&&(!c||d[c]))return b;b=b.parentNode}return null}function B(){r=!1}function C(){r=!0}function D(){v=0,p.length=0,q=!1,C()}function E(){B()}function F(){G(),l=setTimeout(function(){l=0,D()},a.vmouse.resetTimerDuration)}function G(){l&&(clearTimeout(l),l=0)}function H(b,c,d){var e;if(d&&d[b]||!d&&A(c.target,b))e=y(c,b),a(c.target).trigger(e);return e}function I(b){var c=a.data(b.target,f);if(a.support.touch===!0&&c===d)return;if(!q&&(!v||v!==c)){var e=H("v"+b.type,b);e&&(e.isDefaultPrevented()&&b.preventDefault(),e.isPropagationStopped()&&b.stopPropagation(),e.isImmediatePropagationStopped()&&b.stopImmediatePropagation())}}function J(b){var c=x(b).touches,d,e;if(c&&c.length===1){d=b.target,e=z(d);if(e.hasVirtualBinding){v=u++,a.data(d,f,v),G(),E(),o=!1;var g=x(b).touches[0];m=g.pageX,n=g.pageY,H("vmouseover",b,e),H("vmousedown",b,e)}}}function K(a){if(r)return;o||H("vmousecancel",a,z(a.target)),o=!0,F()}function L(b){if(r)return;var c=x(b).touches[0],d=o,e=a.vmouse.moveDistanceThreshold,f=z(b.target);o=o||Math.abs(c.pageX-m)>e||Math.abs(c.pageY-n)>e,o&&!d&&H("vmousecancel",b,f),H("vmousemove",b,f),F()}function M(a){if(r)return;C();var b=z(a.target),c;H("vmouseup",a,b);if(!o){var d=H("vclick",a,b);d&&d.isDefaultPrevented()&&(c=x(a).changedTouches[0],p.push({touchID:v,target:a.target,x:c.clientX,y:c.clientY}),q=!0)}H("vmouseout",a,b),o=!1,F()}function N(b){var c=a.data(b,e),d;if(c)for(d in c)if(c[d])return!0;return!1}function O(){}function P(b){var c=b.substr(1);return{setup:function(d,f){N(this)||a.data(this,e,{});var g=a.data(this,e);g[b]=!0,k[b]=(k[b]||0)+1,k[b]===1&&t.bind(c,I),a(this).bind(c,O),s&&(k.touchstart=(k.touchstart||0)+1,k.touchstart===1&&t.bind("touchstart",J).bind("touchend",M).bind("touchmove",L).bind("scroll",K))},teardown:function(d,f){--k[b],k[b]||t.unbind(c,I),s&&(--k.touchstart,k.touchstart||t.unbind("touchstart",J).unbind("touchmove",L).unbind("touchend",M).unbind("scroll",K));var g=a(this),h=a.data(this,e);h&&(h[b]=!1),g.unbind(c,O),N(this)||g.removeData(e)}}}var e="virtualMouseBindings",f="virtualTouchID",g="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),h="clientX clientY pageX pageY screenX screenY".split(" "),i=a.event.mouseHooks?a.event.mouseHooks.props:[],j=a.event.props.concat(i),k={},l=0,m=0,n=0,o=!1,p=[],q=!1,r=!1,s="addEventListener"in c,t=a.mobile.$document,u=1,v=0,w;a.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(var Q=0;Q<g.length;Q++)a.event.special[g[Q]]=P(g[Q]);s&&c.addEventListener("click",function(b){var c=p.length,d=b.target,e,g,h,i,j,k;if(c){e=b.clientX,g=b.clientY,w=a.vmouse.clickDistanceThreshold,h=d;while(h){for(i=0;i<c;i++){j=p[i],k=0;if(h===d&&d===j.target&&Math.abs(j.x-e)<w&&Math.abs(j.y-g)<w||a.data(h,f)===j.touchID){b.preventDefault(),b.stopPropagation();return}}h=h.parentNode}}},!0)}(a,b,c),function(a,b){var d={touch:"ontouchend"in c};a.mobile=a.mobile||{},a.mobile.support=a.mobile.support||{},a.extend(a.support,d),a.extend(a.mobile.support,d)}(a),function(a,b,c){function i(b,d,e){var f=e.type;e.type=d,e.liveFired=c,a.event.handle.call(b,e),e.type=f}a.each("touchstart touchmove touchend 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&&(a.attrFn[c]=!0)});var d=a.mobile.support.touch,e="touchmove scroll",f=d?"touchstart":"mousedown",g=d?"touchend":"mouseup",h=d?"touchmove":"mousemove";a.event.special.scrollstart={enabled:!0,setup:function(){function g(a,c){d=c,i(b,d?"scrollstart":"scrollstop",a)}var b=this,c=a(b),d,f;c.bind(e,function(b){if(!a.event.special.scrollstart.enabled)return;d||g(b,!0),clearTimeout(f),f=setTimeout(function(){g(b,!1)},50)})}},a.event.special.tap={tapholdThreshold:750,setup:function(){var b=this,c=a(b);c.bind("vmousedown",function(d){function h(){clearTimeout(g)}function j(){h(),c.unbind("vclick",k).unbind("vmouseup",h),a.mobile.$document.unbind("vmousecancel",j)}function k(a){j(),e===a.target&&i(b,"tap",a)}if(d.which&&d.which!==1)return!1;var e=d.target,f=d.originalEvent,g;c.bind("vmouseup",h).bind("vclick",k),a.mobile.$document.bind("vmousecancel",j),g=setTimeout(function(){i(b,"taphold",a.Event("taphold",{target:e}))},a.event.special.tap.tapholdThreshold)})}},a.event.special.swipe={scrollSupressionThreshold:30,durationThreshold:1e3,horizontalDistanceThreshold:30,verticalDistanceThreshold:75,setup:function(){var b=this,d=a(b);d.bind(f,function(b){function j(b){if(!f)return;var c=b.originalEvent.touches?b.originalEvent.touches[0]:b;i={time:(new Date).getTime(),coords:[c.pageX,c.pageY]},Math.abs(f.coords[0]-i.coords[0])>a.event.special.swipe.scrollSupressionThreshold&&b.preventDefault()}var e=b.originalEvent.touches?b.originalEvent.touches[0]:b,f={time:(new Date).getTime(),coords:[e.pageX,e.pageY],origin:a(b.target)},i;d.bind(h,j).one(g,function(b){d.unbind(h,j),f&&i&&i.time-f.time<a.event.special.swipe.durationThreshold&&Math.abs(f.coords[0]-i.coords[0])>a.event.special.swipe.horizontalDistanceThreshold&&Math.abs(f.coords[1]-i.coords[1])<a.event.special.swipe.verticalDistanceThreshold&&f.origin.trigger("swipe").trigger(f.coords[0]>i.coords[0]?"swipeleft":"swiperight"),f=i=c})})}},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)}}})}(a,this),function(a,c){a.extend(a.support,{orientation:"orientation"in b&&"onorientationchange"in b})}(a),function(a){a.event.special.throttledresize={setup:function(){a(this).bind("resize",c)},teardown:function(){a(this).unbind("resize",c)}};var b=250,c=function(){f=(new Date).getTime(),g=f-d,g>=b?(d=f,a(this).trigger("throttledresize")):(e&&clearTimeout(e),e=setTimeout(c,b-g))},d=0,e,f,g}(a),function(a,b){function o(){var a=g();a!==h&&(h=a,d.trigger(e))}var d=a.mobile.$window,e="orientationchange",f,g,h,i,j,k={0:!0,180:!0};if(a.support.orientation){var l=b.innerWidth||a.mobile.$window.width(),m=b.innerHeight||a.mobile.$window.height(),n=50;i=l>m&&l-m>n,j=k[b.orientation];if(i&&j||!i&&!j)k={"-90":!0,90:!0}}a.event.special.orientationchange=a.extend({},a.event.special.orientationchange,{setup:function(){if(a.support.orientation&&!a.event.special.orientationchange.disabled)return!1;h=g(),d.bind("throttledresize",o)},teardown:function(){if(a.support.orientation&&!a.event.special.orientationchange.disabled)return!1;d.unbind("throttledresize",o)},add:function(a){var b=a.handler;a.handler=function(a){return a.orientation=g(),b.apply(this,arguments)}}}),a.event.special.orientationchange.orientation=g=function(){var d=!0,e=c.documentElement;return a.support.orientation?d=k[b.orientation]:d=e&&e.clientWidth/e.clientHeight<1.1,d?"portrait":"landscape"},a.fn[e]=function(a){return a?this.bind(e,a):this.trigger(e)},a.attrFn&&(a.attrFn[e]=!0)}(a,this),function(a,b){var d=a.mobile.$window,e=a("html");a.mobile.media=function(){var b={},d=a("<div id='jquery-mediatest'></div>"),f=a("<body>").append(d);return function(a){if(!(a in b)){var g=c.createElement("style"),h="@media "+a+" { #jquery-mediatest { position:absolute; } }";g.type="text/css",g.styleSheet?g.styleSheet.cssText=h:g.appendChild(c.createTextNode(h)),e.prepend(f).prepend(g),b[a]=d.css("position")==="absolute",f.add(g).remove()}return b[a]}}()}(a),function(a,d){function e(a){var b=a.charAt(0).toUpperCase()+a.substr(1),c=(a+" "+h.join(b+" ")+b).split(" ");for(var e in c)if(g[c[e]]!==d)return!0}function m(a,b,d){var e=c.createElement("div"),f=function(a){return a.charAt(0).toUpperCase()+a.substr(1)},g=function(a){return"-"+a.charAt(0).toLowerCase()+a.substr(1)+"-"},i=function(c){var d=g(c)+a+": "+b+";",h=f(c),i=h+f(a);e.setAttribute("style",d),!e.style[i]||(k=!0)},j=d?[d]:h,k;for(var l=0;l<j.length;l++)i(j[l]);return!!k}function n(){var b="transform-3d";return m("perspective","10px","moz")||a.mobile.media("(-"+h.join("-"+b+"),(-")+"-"+b+"),("+b+")")}function o(){var b=location.protocol+"//"+location.host+location.pathname+"ui-dir/",c=a("head base"),d=null,e="",g,h;return c.length?e=c.attr("href"):c=d=a("<base>",{href:b}).appendTo("head"),g=a("<a href='testurl' />").prependTo(f),h=g[0].href,c[0].href=e||location.pathname,d&&d.remove(),h.indexOf(b)===0}function p(){var a=c.createElement("x"),d=c.documentElement,e=b.getComputedStyle,f;return"pointerEvents"in a.style?(a.style.pointerEvents="auto",a.style.pointerEvents="x",d.appendChild(a),f=e&&e(a,"").pointerEvents==="auto",d.removeChild(a),!!f):!1}function q(){var a=c.createElement("div");return typeof a.getBoundingClientRect!="undefined"}var f=a("<body>").prependTo("html"),g=f[0].style,h=["Webkit","Moz","O"],i="palmGetResource"in b,j=b.opera,k=b.operamini&&{}.toString.call(b.operamini)==="[object OperaMini]",l=b.blackberry&&!e("-webkit-transform");a.extend(a.mobile,{browser:{}}),a.mobile.browser.ie=function(){var a=3,b=c.createElement("div"),d=b.all||[];do b.innerHTML="<!--[if gt IE "+ ++a+"]><br><![endif]-->";while(d[0]);return a>4?a:!a}(),a.extend(a.support,{cssTransitions:"WebKitTransitionEvent"in b||m("transition","height 100ms linear")&&!j,pushState:"pushState"in history&&"replaceState"in history,mediaquery:a.mobile.media("only all"),cssPseudoElement:!!e("content"),touchOverflow:!!e("overflowScrolling"),cssTransform3d:n(),boxShadow:!!e("boxShadow")&&!l,scrollTop:("pageXOffset"in b||"scrollTop"in c.documentElement||"scrollTop"in f[0])&&!i&&!k,dynamicBaseTag:o(),cssPointerEvents:p(),boundingRect:q()}),f.remove();var r=function(){var a=b.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.gradeA=function(){return(a.support.mediaquery||a.mobile.browser.ie&&a.mobile.browser.ie>=7)&&(a.support.boundingRect||a.fn.jquery.match(/1\.[0-7+]\.[0-9+]?/)!==null)},a.mobile.ajaxBlacklist=b.blackberry&&!b.WebKitPoint||k||r,r&&a(function(){a("head link[rel='stylesheet']").attr("rel","alternate stylesheet").attr("rel","stylesheet")}),a.support.boxShadow||a("html").addClass("ui-mobile-nosupport-boxshadow")}(a),function(a,b){a.widget("mobile.page",a.mobile.widget,{options:{theme:"c",domCache:!1,keepNativeDefault:":jqmData(role='none'), :jqmData(role='nojs')"},_create:function(){var a=this;if(a._trigger("beforecreate")===!1)return!1;a.element.addClass("ui-page ui-body-"+a.options.theme).bind("pagebeforehide",function(){a.removeContainerBackground()}).bind("pagebeforeshow",function(){a.setContainerBackground()})},refresh:function(){a(this.element).children(".ui-content").trigger("updatelayout",["external"])},setToolbar:function(){a(this.element).trigger("pagebeforeshow")},removeContainerBackground:function(){a.mobile.pageContainer.removeClass("ui-overlay-"+a.mobile.getInheritedTheme(this.element.parent()))},setContainerBackground:function(b){this.options.theme&&a.mobile.pageContainer.addClass("ui-overlay-"+(b||this.options.theme))},addBackBtn:function(b){var c=a(".ui-page-active .ui-footer");b=="header"&&(c=a(".ui-page-active .ui-header")),backBtn=a("<a href='#' class='ui-btn-back' data-"+a.mobile.ns+"rel='back'></a>").buttonMarkup({icon:"header-back-btn",theme:"s"}),c.find(".ui-btn-back").length||backBtn.prependTo(c)},keepNativeSelector:function(){var b=this.options,c=b.keepNative&&a.trim(b.keepNative);return c&&b.keepNative!==b.keepNativeDefault?[b.keepNative,b.keepNativeDefault].join(", "):b.keepNativeDefault}})}(a),function(a,b,d){function k(a){return a=a||location.href,"#"+a.replace(/^[^#]*#?(.*)$/,"$1")}var e="hashchange",f=c,g,h=a.event.special,i=f.documentMode,j="on"+e in b&&(i===d||i>7);a.fn[e]=function(a){return a?this.bind(e,a):this.trigger(e)},a.fn[e].delay=50,h[e]=a.extend(h[e],{setup:function(){if(j)return!1;a(g.start)},teardown:function(){if(j)return!1;a(g.stop)}}),g=function(){function n(){var c=k(),d=m(h);c!==h?(l(h=c,d),a(b).trigger(e)):d!==h&&(location.href=location.href.replace(/#.*/,"")+d),g=setTimeout(n,a.fn[e].delay)}var c={},g,h=k(),i=function(a){return a},l=i,m=i;return c.start=function(){g||n()},c.stop=function(){g&&clearTimeout(g),g=d},a.browser.msie&&!j&&function(){var b,d;c.start=function(){b||(d=a.fn[e].src,d=d&&d+k(),b=a('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){d||l(k()),n()}).attr("src",d||"javascript:0").insertAfter("body")[0].contentWindow,f.onpropertychange=function(){try{event.propertyName==="title"&&(b.document.title=f.title)}catch(a){}})},c.stop=i,m=function(){return k(b.location.href)},l=function(c,d){var g=b.document,h=a.fn[e].domain;c!==d&&(g.title=f.title,g.open(),h&&g.write('<script>document.domain="'+h+'"</script>'),g.close(),b.location.hash=c)}}(),c}()}(a,this),function(a,b,c){var d=function(d){return d===c&&(d=!0),function(c,e,f,g){var h=new a.Deferred,i=e?" reverse":"",j=a.mobile.urlHistory.getActive(),k=j.lastScroll||a.mobile.defaultHomeScroll,l=a.mobile.getScreenHeight(),m=a.mobile.maxTransitionWidth!==!1&&a.mobile.$window.width()>a.mobile.maxTransitionWidth,n=!a.support.cssTransitions||m||!c||c==="none"||Math.max(a.mobile.$window.scrollTop(),k)>a.mobile.getMaxScrollForTransition(),o=" ui-page-pre-in",p=function(){a.mobile.pageContainer.toggleClass("ui-mobile-viewport-transitioning viewport-"+c)},q=function(){var c=a.mobile.$window.scrollTop();if(c===k||a.mobile.defaultHomeScroll===k&&c==0)return;a.event.special.scrollstart.enabled=!1,b.scrollTo(0,k),setTimeout(function(){a.event.special.scrollstart.enabled=!0},150)},r=function(){g.removeClass(a.mobile.activePageClass+" out in reverse "+c).height("")},s=function(){d?g.animationComplete(t):t(),g.height(l+a.mobile.$window.scrollTop()).addClass(c+" out"+i)},t=function(){g&&d&&r(),u()},u=function(){f.css("z-index",-10),f.addClass(a.mobile.activePageClass+o),a.mobile.focusPage(f),f.height(l+k),q(),f.css("z-index",""),n||f.animationComplete(v),f.removeClass(o).addClass(c+" in"+i),n&&setTimeout(v,0)},v=function(){d||g&&r(),f.removeClass("out in reverse "+c).height(""),p(),a.mobile.$window.scrollTop()!==k&&q(),h.resolve(c,e,f,g,!0)};return p(),g&&!n?s():t(),h.promise()}},e=d(),f=d(!1),g=function(){return a.mobile.getScreenHeight()*3};a.mobile.defaultTransitionHandler=e,a.mobile.transitionHandlers={"default":a.mobile.defaultTransitionHandler,sequential:e,simultaneous:f},a.mobile.transitionFallbacks={},a.mobile._maybeDegradeTransition=function(b){return b&&!a.support.cssTransform3d&&a.mobile.transitionFallbacks[b]&&(b=a.mobile.transitionFallbacks[b]),b},a.mobile.getMaxScrollForTransition=a.mobile.getMaxScrollForTransition||g}(a,this),function(a,d){function u(b){!!i&&(!i.closest("."+a.mobile.activePageClass).length||b)&&i.removeClass(a.mobile.activeBtnClass),i=null}function v(){m=!1,l.length>0&&a.mobile.changePage.apply(null,l.pop())}function z(b,c,d,e){c&&c.data("page")._trigger("beforehide",null,{nextPage:b}),b.data("page")._trigger("beforeshow",null,{prevPage:c||a("")}),a.mobile.hidePageLoadingMsg(),d=a.mobile._maybeDegradeTransition(d);var f=a.mobile.transitionHandlers[d||"default"]||a.mobile.defaultTransitionHandler,g=f(d,e,b,c);return g.done(function(){c&&c.data("page")._trigger("hide",null,{nextPage:b}),b.data("page")._trigger("show",null,{prevPage:c||a("")}),setTimeout(function(){a.mobile.removeEventBlocker()},0)}),g}function A(b,c){c&&b.attr("data-"+a.mobile.ns+"role",c),b.page()}function B(a){while(a){if(typeof a.nodeName=="string"&&a.nodeName.toLowerCase()==="a")break;a=a.parentNode}return a}function C(b){var c=a(b).closest(".ui-page").jqmData("url"),d=q.hrefNoHash;if(!c||!h.isPath(c))c=d;return h.makeUrlAbsolute(c,d)}var e=a.mobile.$window,f=a("html"),g=a("head"),h={urlParseRE:/^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,getLocation:function(a){var b=a?this.parseUrl(a):location,c=this.parseUrl(a||location.href).hash;return c=c==="#"?"":c,b.protocol+"//"+b.host+b.pathname+b.search+c},parseLocation:function(){return this.parseUrl(this.getLocation())},parseUrl:function(b){if(a.type(b)==="object")return b;var c=h.urlParseRE.exec(b||"")||[];return{href:c[0]||"",hrefNoHash:c[1]||"",hrefNoSearch:c[2]||"",domain:c[3]||"",protocol:c[4]||"",doubleSlash:c[5]||"",authority:c[6]||"",username:c[8]||"",password:c[9]||"",host:c[10]||"",hostname:c[11]||"",port:c[12]||"",pathname:c[13]||"",directory:c[14]||"",filename:c[15]||"",search:c[16]||"",hash:c[17]||""}},makePathAbsolute:function(a,b){if(a&&a.charAt(0)==="/")return a;a=a||"",b=b?b.replace(/^\/|(\/[^\/]*|[^\/]+)$/g,""):"";var c=b?b.split("/"):[],d=a.split("/");for(var e=0;e<d.length;e++){var f=d[e];switch(f){case".":break;case"..":c.length&&c.pop();break;default:c.push(f)}}return"/"+c.join("/")},isSameDomain:function(a,b){return h.parseUrl(a).domain===h.parseUrl(b).domain},isRelativeUrl:function(a){return h.parseUrl(a).protocol===""},isAbsoluteUrl:function(a){return h.parseUrl(a).protocol!==""},makeUrlAbsolute:function(a,b){if(!h.isRelativeUrl(a))return a;b===d&&(b=q);var c=h.parseUrl(a),e=h.parseUrl(b),f=c.protocol||e.protocol,g=c.protocol?c.doubleSlash:c.doubleSlash||e.doubleSlash,i=c.authority||e.authority,j=c.pathname!=="",k=h.makePathAbsolute(c.pathname||e.filename,e.pathname),l=c.search||!j&&e.search||"",m=c.hash;return f+g+i+k+l+m},addSearchParams:function(b,c){var d=h.parseUrl(b),e=typeof c=="object"?a.param(c):c,f=d.search||"?";return d.hrefNoSearch+f+(f.charAt(f.length-1)!=="?"?"&":"")+e+(d.hash||"")},convertUrlToDataUrl:function(a){var c=h.parseUrl(a);return h.isEmbeddedPage(c)?c.hash.split(n)[0].replace(/^#/,""):h.isSameDomain(c,q)?c.hrefNoHash.replace(q.domain,"").split(n)[0]:b.decodeURIComponent(a)},get:function(a){return a===d&&(a=h.parseLocation().hash),h.stripHash(a).replace(/[^\/]*\.[^\/*]+$/,"")},getFilePath:function(b){var c="&"+a.mobile.subPageUrlKey;return b&&b.split(c)[0].split(n)[0]},set:function(a){location.hash=a},isPath:function(a){return/\//.test(a)},clean:function(a){return a.replace(q.domain,"")},stripHash:function(a){return a.replace(/^#/,"")},cleanHash:function(a){return h.stripHash(a.replace(/\?.*$/,"").replace(n,""))},isHashValid:function(a){return/^#[^#]+$/.test(a)},isExternal:function(a){var b=h.parseUrl(a);return b
-.protocol&&b.domain!==p.domain?!0:!1},hasProtocol:function(a){return/^(:?\w+:)/.test(a)},isFirstPageUrl:function(b){var c=h.parseUrl(h.makeUrlAbsolute(b,q)),e=c.hrefNoHash===p.hrefNoHash||r&&c.hrefNoHash===q.hrefNoHash,f=a.mobile.firstPage,g=f&&f[0]?f[0].id:d;return e&&(!c.hash||c.hash==="#"||g&&c.hash.replace(/^#/,"")===g)},isEmbeddedPage:function(a){var b=h.parseUrl(a);return b.protocol!==""?b.hash&&(b.hrefNoHash===p.hrefNoHash||r&&b.hrefNoHash===q.hrefNoHash):/^#/.test(b.href)},isPermittedCrossDomainRequest:function(b,c){return a.mobile.allowCrossDomainPages&&b.protocol==="file:"&&c.search(/^https?:/)!==-1}},i=null,j={stack:[],activeIndex:0,getActive:function(){return j.stack[j.activeIndex]},getPrev:function(){return j.stack[j.activeIndex-1]},getNext:function(){return j.stack[j.activeIndex+1]},addNew:function(a,b,c,d,e){j.getNext()&&j.clearForward(),j.stack.push({url:a,transition:b,title:c,pageUrl:d,role:e}),j.activeIndex=j.stack.length-1},clearForward:function(){j.stack=j.stack.slice(0,j.activeIndex+1)},directHashChange:function(b){var c,e,f,g=this.getActive();a.each(j.stack,function(a,d){decodeURIComponent(b.currentUrl)===decodeURIComponent(d.url)&&(c=a<j.activeIndex,e=!c,f=a)}),this.activeIndex=f!==d?f:this.activeIndex,c?(b.either||b.isBack)(!0):e&&(b.either||b.isForward)(!1)},ignoreNextHashChange:!1},k="[tabindex],a,button:visible,select:visible,input",l=[],m=!1,n="&ui-state=dialog",o=g.children("base"),p=h.parseLocation(),q=o.length?h.parseUrl(h.makeUrlAbsolute(o.attr("href"),p.href)):p,r=p.hrefNoHash!==q.hrefNoHash,s=a.mobile.getScreenHeight,t=a.support.dynamicBaseTag?{element:o.length?o:a("<base>",{href:q.hrefNoHash}).prependTo(g),set:function(a){t.element.attr("href",h.makeUrlAbsolute(a,q))},reset:function(){t.element.attr("href",q.hrefNoHash)}}:d;a.mobile.back=function(){var a=b.navigator;this.phonegapNavigationEnabled&&a&&a.app&&a.app.backHistory?a.app.backHistory():b.history.back()},a.mobile.focusPage=function(a){var b=a.find("[autofocus]"),c=a.find(".ui-title:eq(0)");if(b.length){b.focus();return}c.length?c.focus():a.focus()};var w=!0,x,y;x=function(){if(!w)return;var b=a.mobile.urlHistory.getActive();if(b){var c=e.scrollTop();b.lastScroll=c<a.mobile.minScrollBack?a.mobile.defaultHomeScroll:c}},y=function(){setTimeout(x,100)},e.bind(a.support.pushState?"popstate":"hashchange",function(){w=!1}),e.one(a.support.pushState?"popstate":"hashchange",function(){w=!0}),e.one("pagecontainercreate",function(){a.mobile.pageContainer.bind("pagechange",function(){w=!0,e.unbind("scrollstop",y),e.bind("scrollstop",y)})}),e.bind("scrollstop",y),a.mobile._maybeDegradeTransition=a.mobile._maybeDegradeTransition||function(a){return a},a.fn.animationComplete=function(b){return a.support.cssTransitions?a(this).one("webkitAnimationEnd animationend",b):(setTimeout(b,0),a(this))},a.mobile.path=h,a.mobile.base=t,a.mobile.urlHistory=j,a.mobile.dialogHashKey=n,a.mobile.allowCrossDomainPages=!1,a.mobile.getDocumentUrl=function(b){return b?a.extend({},p):p.href},a.mobile.getDocumentBase=function(b){return b?a.extend({},q):q.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 e=a.Deferred(),f=a.extend({},a.mobile.loadPage.defaults,c),g=null,i=null,j=function(){var b=a.mobile.activePage&&C(a.mobile.activePage);return b||q.hrefNoHash},k=h.makeUrlAbsolute(b,j());f.data&&f.type==="get"&&(k=h.addSearchParams(k,f.data),f.data=d),f.data&&f.type==="post"&&(f.reloadPage=!0);var l=h.getFilePath(k),m=h.convertUrlToDataUrl(k);f.pageContainer=f.pageContainer||a.mobile.pageContainer,g=f.pageContainer.children("[data-"+a.mobile.ns+"url='"+m+"']"),g.length===0&&m&&!h.isPath(m)&&(g=f.pageContainer.children("#"+m).attr("data-"+a.mobile.ns+"url",m).jqmData("url",m));if(g.length===0)if(a.mobile.firstPage&&h.isFirstPageUrl(l))a.mobile.firstPage.parent().length&&(g=a(a.mobile.firstPage));else if(h.isEmbeddedPage(l))return e.reject(k,c),e.promise();if(g.length){if(!f.reloadPage)return A(g,f.role),e.resolve(k,c,g),e.promise();i=g}var n=f.pageContainer,o=new a.Event("pagebeforeload"),r={url:b,absUrl:k,dataUrl:m,deferred:e,options:f};n.trigger(o,r);if(o.isDefaultPrevented())return e.promise();if(f.showLoadMsg)var s=setTimeout(function(){a.mobile.showPageLoadingMsg()},f.loadMsgDelay),u=function(){clearTimeout(s),a.mobile.hidePageLoadingMsg()};return t&&t.reset(),!a.mobile.allowCrossDomainPages&&!h.isSameDomain(p,k)?e.reject(k,c):a.ajax({url:l,type:f.type,data:f.data,dataType:"html",success:function(d,j,n){var o=a("<div></div>"),p=d.match(/<title[^>]*>([^<]*)/)&&RegExp.$1,q=new RegExp("(<[^>]+\\bdata-"+a.mobile.ns+"role=[\"']?page[\"']?[^>]*>)"),s=new RegExp("\\bdata-"+a.mobile.ns+"url=[\"']?([^\"'>]*)[\"']?");q.test(d)&&RegExp.$1&&s.test(RegExp.$1)&&RegExp.$1&&(b=l=h.getFilePath(a("<div>"+RegExp.$1+"</div>").text())),t&&t.set(l),o.get(0).innerHTML=d,g=o.find(":jqmData(role='page'), :jqmData(role='dialog')").first(),g.length||(g=a("<div data-"+a.mobile.ns+"role='page'>"+d.split(/<\/?body[^>]*>/gmi)[1]+"</div>")),p&&!g.jqmData("title")&&(~p.indexOf("&")&&(p=a("<div>"+p+"</div>").text()),g.jqmData("title",p));if(!a.support.dynamicBaseTag){var v=h.get(l);g.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,v+c)})}g.attr("data-"+a.mobile.ns+"url",h.convertUrlToDataUrl(l)).attr("data-"+a.mobile.ns+"external-page",!0).appendTo(f.pageContainer),g.one("pagecreate",a.mobile._bindPageRemove),A(g,f.role),k.indexOf("&"+a.mobile.subPageUrlKey)>-1&&(g=f.pageContainer.children("[data-"+a.mobile.ns+"url='"+m+"']")),f.showLoadMsg&&u(),r.xhr=n,r.textStatus=j,r.page=g,f.pageContainer.trigger("pageload",r),e.resolve(k,c,g,i)},error:function(b,d,g){t&&t.set(h.get()),r.xhr=b,r.textStatus=d,r.errorThrown=g;var i=new a.Event("pageloadfailed");f.pageContainer.trigger(i,r);if(i.isDefaultPrevented())return;f.showLoadMsg&&(u(),a.mobile.showPageLoadingMsg(a.mobile.pageLoadErrorMessageTheme,a.mobile.pageLoadErrorMessage,!0),setTimeout(a.mobile.hidePageLoadingMsg,1500)),e.reject(k,c)}}),e.promise()},a.mobile.loadPage.defaults={type:"get",data:d,reloadPage:!1,role:d,showLoadMsg:!1,pageContainer:d,loadMsgDelay:50},a.mobile.changePage=function(b,e){if(m){l.unshift(arguments);return}var f=a.extend({},a.mobile.changePage.defaults,e);f.pageContainer=f.pageContainer||a.mobile.pageContainer,f.fromPage=f.fromPage||a.mobile.activePage;var g=f.pageContainer,i=new a.Event("pagebeforechange"),k={toPage:b,options:f};g.trigger(i,k);if(i.isDefaultPrevented())return;b=k.toPage,m=!0;if(typeof b=="string"){a.mobile.loadPage(b,f).done(function(b,c,d,e){m=!1,c.duplicateCachedPage=e,a.mobile.changePage(d,c)}).fail(function(a,b){m=!1,u(!0),v(),f.pageContainer.trigger("pagechangefailed",k)});return}b[0]===a.mobile.firstPage[0]&&!f.dataUrl&&(f.dataUrl=p.hrefNoHash);var o=f.fromPage,q=f.dataUrl&&h.convertUrlToDataUrl(f.dataUrl)||b.jqmData("url"),r=q,s=h.getFilePath(q),t=j.getActive(),w=j.activeIndex===0,x=0,y=c.title,B=f.role==="dialog"||a.mobile.getAttrFixed(b[0],"data-"+a.mobile.ns+"role")==="dialog";if(o&&o[0]===b[0]&&!f.allowSamePageTransition){m=!1,g.trigger("pagechange",k),f.fromHashChange&&j.directHashChange({currentUrl:q,isBack:function(){},isForward:function(){}});return}A(b,f.role),f.fromHashChange&&j.directHashChange({currentUrl:q,isBack:function(){x=-1},isForward:function(){x=1}});try{c.activeElement&&c.activeElement.nodeName.toLowerCase()!=="body"?a(c.activeElement).blur():a("input:focus, textarea:focus, select:focus").blur()}catch(C){}var D=!1;B&&t&&(t.url.indexOf(n)>-1&&!a.mobile.activePage.is(".ui-dialog")&&(f.changeHash=!1,D=!0),q=(t.url||"")+(D?"":n),j.activeIndex===0&&q===j.initialDst&&(q+=n)),f.changeHash!==!1&&q&&(j.ignoreNextHashChange=!0,h.set(q));var E=t?b.jqmData("title")||b.children(":jqmData(role='header')").find(".ui-title").getEncodedText():y;!!E&&y===c.title&&(y=E),b.jqmData("title")||b.jqmData("title",y),f.transition=f.transition||(x&&!w?t.transition:d)||(B?a.mobile.defaultDialogTransition:a.mobile.defaultPageTransition),x||(D&&(j.activeIndex=Math.max(0,j.activeIndex-1)),j.addNew(q,f.transition,y,r,f.role)),c.title=j.getActive().title,a.mobile.activePage=b,f.reverse=f.reverse||x<0,z(b,o,f.transition,f.reverse).done(function(c,d,e,h,i){u(),f.duplicateCachedPage&&f.duplicateCachedPage.remove(),i||a.mobile.focusPage(b),v(),g.trigger("pagechange",k)})},a.mobile.changePage.defaults={transition:d,reverse:!1,changeHash:!0,fromHashChange:!1,role:d,duplicateCachedPage:d,pageContainer:d,showLoadMsg:!0,dataUrl:d,fromPage:d,allowSamePageTransition:!1},a.mobile.navreadyDeferred=a.Deferred(),a.mobile.navreadyDeferred.done(function(){a.mobile.$document.delegate("form","submit",function(b){var c=a(this);if(!a.mobile.ajaxEnabled||c.is(":jqmData(ajax='false')")||!c.jqmHijackable().length)return;var d=c.attr("method"),e=c.attr("target"),f=c.attr("action");f||(f=C(c),f===q.hrefNoHash&&(f=p.hrefNoSearch)),f=h.makeUrlAbsolute(f,C(c));if(h.isExternal(f)&&!h.isPermittedCrossDomainRequest(p,f)||e)return;a.mobile.changePage(f,{type:d&&d.length&&d.toLowerCase()||"get",data:c.serialize(),transition:a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"transition"),reverse:a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"direction")==="reverse",reloadPage:!0}),b.preventDefault()}),a.mobile.$document.bind("vclick",function(b){if(b.which>1||!a.mobile.linkBindingEnabled)return;var c=B(b.target);if(!a(c).jqmHijackable().length)return;c&&h.parseUrl(c.getAttribute("href")||"#").hash!=="#"&&(u(!0),i=a(c).closest(".ui-btn").not(".ui-disabled"),i.addClass(a.mobile.activeBtnClass))}),a.mobile.$document.bind("click",function(c){if(!a.mobile.linkBindingEnabled)return;var e=B(c.target),f=a(e),g;if(!e||c.which>1||!f.jqmHijackable().length)return;g=function(){b.setTimeout(function(){u(!0)},200)};if(f.is(":jqmData(rel='back')"))return a.mobile.back(),!1;var i=C(f),j=h.makeUrlAbsolute(f.attr("href")||"#",i);if(!a.mobile.ajaxEnabled&&!h.isEmbeddedPage(j)){g();return}if(j.search("#")!==-1){j=j.replace(/[^#]*#/,"");if(!j){c.preventDefault();return}h.isPath(j)?j=h.makeUrlAbsolute(j,i):j=h.makeUrlAbsolute("#"+j,p.hrefNoHash)}var k=f.is("[rel='external']")||f.is(":jqmData(ajax='false')")||f.is("[target]"),l=k||h.isExternal(j)&&!h.isPermittedCrossDomainRequest(p,j);if(l){g();return}var m=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"transition"),n=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"direction")==="reverse"||a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"back"),o=f.attr("data-"+a.mobile.ns+"rel")||d;a.mobile.changePage(j,{transition:m,reverse:n,role:o,link:f}),c.preventDefault()}),a.mobile.$document.delegate(".ui-page","pageshow.prefetch",function(){var b=[];a(this).find("a:jqmData(prefetch)").each(function(){var c=a(this),d=c.attr("href");d&&a.inArray(d,b)===-1&&(b.push(d),a.mobile.loadPage(d,{role:c.attr("data-"+a.mobile.ns+"rel")}))})}),a.mobile._handleHashChange=function(c){var e=h.stripHash(c),f=a.mobile.urlHistory.stack.length===0?"none":d,g=new a.Event("navigate"),i={transition:f,changeHash:!1,fromHashChange:!0};0===j.stack.length&&(j.initialDst=e),a.mobile.pageContainer.trigger(g);if(g.isDefaultPrevented())return;if(!a.mobile.hashListeningEnabled||j.ignoreNextHashChange){j.ignoreNextHashChange=!1;return}if(j.stack.length>1&&e.indexOf(n)>-1&&j.initialDst!==e){if(!a.mobile.activePage.is(".ui-dialog")){j.directHashChange({currentUrl:e,isBack:function(){a.mobile.back()},isForward:function(){b.history.forward()}});return}j.directHashChange({currentUrl:e,either:function(b){var c=a.mobile.urlHistory.getActive();e=c.pageUrl,a.extend(i,{role:c.role,transition:c.transition,reverse:b})}})}e?(e=typeof e=="string"&&!h.isPath(e)?h.makeUrlAbsolute("#"+e,q):e,e===h.makeUrlAbsolute("#"+j.initialDst,q)&&j.stack.length&&j.stack[0].url!==j.initialDst.replace(n,"")&&(e=a.mobile.firstPage),a.mobile.changePage(e,i)):a.mobile.changePage(a.mobile.firstPage,i)},e.bind("hashchange",function(b,c){a.mobile._handleHashChange(h.parseLocation().hash)})})}(a),function(a,b){var e={},f=e,g=a.mobile.$window,h=a.mobile.path.parseLocation(),i=a.Deferred(),j=a.Deferred();a.mobile.$document.ready(a.proxy(j,"resolve")),a.mobile.$document.one("mobileinit",a.proxy(i,"resolve")),a.extend(e,{initialFilePath:function(){return h.pathname+h.search}(),hashChangeTimeout:200,hashChangeEnableTimer:d,initialHref:h.hrefNoHash,state:function(){return{hash:a.mobile.path.parseLocation().hash||"#"+f.initialFilePath,title:c.title,initialHref:f.initialHref}},resetUIKeys:function(b){var c=a.mobile.dialogHashKey,d="&"+a.mobile.subPageUrlKey,e=b.indexOf(c);return e>-1?b=b.slice(0,e)+"#"+b.slice(e):b.indexOf(d)>-1&&(b=b.split(d).join("#"+d)),b},nextHashChangePrevented:function(b){a.mobile.urlHistory.ignoreNextHashChange=b,f.onHashChangeDisabled=b},onHashChange:function(b){if(f.onHashChangeDisabled)return;var d,e,g=a.mobile.path.parseLocation().hash,h=a.mobile.path.isPath(g),i=h?a.mobile.path.getLocation():a.mobile.getDocumentUrl();g=h?g.replace("#",""):g,e=f.state(),d=a.mobile.path.makeUrlAbsolute(g,i),h&&(d=f.resetUIKeys(d)),history.replaceState(e,c.title,d)},onPopState:function(b){var c=b.originalEvent.state,d,e,g;c&&(clearTimeout(f.hashChangeEnableTimer),f.nextHashChangePrevented(!1),a.mobile._handleHashChange(c.hash),f.nextHashChangePrevented(!0),f.hashChangeEnableTimer=setTimeout(function(){f.nextHashChangePrevented(!1)},f.hashChangeTimeout))},init:function(){g.bind("hashchange",f.onHashChange),g.bind("popstate",f.onPopState),location.hash===""&&history.replaceState(f.state(),c.title,a.mobile.path.getLocation())}}),a.when(j,i,a.mobile.navreadyDeferred).done(function(){a.mobile.pushStateEnabled&&a.support.pushState&&e.init()})}(a,this),function(a,b,c){a.mobile.transitionFallbacks.flip="fade"}(a,this),function(a,b,c){a.mobile.transitionFallbacks.flow="fade"}(a,this),function(a,b,c){a.mobile.transitionFallbacks.pop="fade"}(a,this),function(a,b,c){a.mobile.transitionHandlers.slide=a.mobile.transitionHandlers.simultaneous,a.mobile.transitionFallbacks.slide="fade"}(a,this),function(a,b,c){a.mobile.transitionFallbacks.slidedown="fade"}(a,this),function(a,b,c){a.mobile.transitionFallbacks.slidefade="fade"}(a,this),function(a,b,c){a.mobile.transitionFallbacks.slideup="fade"}(a,this),function(a,b,c){a.mobile.transitionFallbacks.turn="fade"}(a,this),function(a,b){a.mobile.page.prototype.options.degradeInputs={color:!1,date:!1,datetime:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:"number",search:"text",tel:!1,time:!1,url:!1,week:!1},a.mobile.$document.bind("pagecreate create",function(b){var c=a.mobile.closestPageData(a(b.target)),d;if(!c)return;d=c.options,a(b.target).find("input").not(c.keepNativeSelector()).each(function(){var b=a(this),c=this.getAttribute("type"),e=d.degradeInputs[c]||"text";if(d.degradeInputs[c]){var f=a("<div>").html(b.clone()).html(),g=f.indexOf(" type=")>-1,h=g?/\s+type=["']?\w+['"]?/:/\/?>/,i=' type="'+e+'" data-'+a.mobile.ns+'type="'+c+'"'+(g?"":">");b.replaceWith(f.replace(h,i))}})})}(a),function(a,b,c){a.widget("mobile.dialog",a.mobile.widget,{options:{closeBtnText:"Close",overlayTheme:"a",initSelector:":jqmData(role='dialog')"},_create:function(){var b=this,c=this.element,d=a("<a href='#' data-"+a.mobile.ns+"icon='delete' data-"+a.mobile.ns+"iconpos='notext'>"+this.options.closeBtnText+"</a>"),e=a("<div/>",{role:"dialog","class":"ui-dialog-contain ui-corner-all ui-overlay-shadow"});c.addClass("ui-dialog ui-overlay-"+this.options.overlayTheme),c.wrapInner(e).children().find(":jqmData(role='header')").prepend(d).end().children(":first-child").addClass("ui-corner-top").end().children(":last-child").addClass("ui-corner-bottom"),d.bind("click",function(){b.close()}),c.bind("vclick submit",function(b){var c=a(b.target).closest(b.type==="vclick"?"a":"form"),d;c.length&&!a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"transition")&&(d=a.mobile.urlHistory.getActive()||{},c.attr("data-"+a.mobile.ns+"transition",d.transition||a.mobile.defaultDialogTransition).attr("data-"+a.mobile.ns+"direction","reverse"))}).bind("pagehide",function(b,c){a(this).find("."+a.mobile.activeBtnClass).not(".ui-slider-bg").removeClass(a.mobile.activeBtnClass)}).bind("pagebeforeshow",function(){b._isCloseable=!0,b.options.overlayTheme&&b.element.page("removeContainerBackground").page("setContainerBackground",b.options.overlayTheme)})},close:function(){var b;this._isCloseable&&(this._isCloseable=!1,a.mobile.hashListeningEnabled?a.mobile.back():(b=a.mobile.urlHistory.getPrev().url,a.mobile.path.isPath(b)||(b=a.mobile.path.makeUrlAbsolute("#"+b)),a.mobile.changePage(b,{changeHash:!1,fromHashChange:!0})))}}),a.mobile.$document.delegate(a.mobile.dialog.prototype.options.initSelector,"pagecreate",function(){a.mobile.dialog.prototype.enhance(this)})}(a,this),function(a,b){a.mobile.page.prototype.options.backBtnText="Back",a.mobile.page.prototype.options.addBackBtn=!1,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.mobile.$document.bind("pagecreate",function(c){var d=a(c.target),e=d.data("page").options,f="data-"+a.mobile.ns,g=d[0].getAttribute(f+"role")||b,h=e.theme;a(":jqmData(role='header'), :jqmData(role='footer'), :jqmData(role='content')",d).jqmEnhanceable().each(function(){var c=a(this),i=c[0].getAttribute(f+"role")||b,j=c[0].getAttribute(f+"theme")||b,k=j||e.contentTheme||g==="dialog"&&h,l,m,n,p=d.find(".ui-footer"),q;c.addClass("ui-"+i);if(i==="header"||i==="footer"){var r=j||(i==="header"?e.headerTheme:e.footerTheme)||h;c.addClass("ui-bar-"+r).attr("role",i==="header"?"banner":"contentinfo"),i==="header"&&(l=c.children("a, button"),m=l.hasClass("ui-btn-left"),n=l.hasClass("ui-btn-right"),m=m||l.eq(0).not(".ui-btn-right").addClass("ui-btn-left").length,n=n||l.eq(1).addClass("ui-btn-right").length,a(l.get().reverse()).each(function(b){a(this).addClass("ui-btn-right-"+b)})),e.addBackBtn&&(i==="footer"||i==="header")&&d[0].getAttribute(f+"url")!==a.mobile.path.stripHash(location.hash)&&!m&&(e.addBackBtn=="header"?p=d.find(".ui-header"):p=d.find(".ui-footer"),p.find(".ui-btn-back").length||(q=a("<a href='javascript:void(0);' class='ui-btn-back' data-"+a.mobile.ns+"rel='back'></a>").buttonMarkup({icon:"header-back-btn",theme:e.backBtnTheme||r}),q.find(".ui-btn-text").text(e.backBtnText),q.appendTo(p))),c.children("h1, h2, h3, h4, h5, h6").addClass("ui-title").attr({role:"heading","aria-level":"1","aria-label":"title",tabindex:"0"}),a(".ui-title-text-sub").attr({tabindex:"0","aria-label":"subtitle"})}else i==="content"&&(k&&c.addClass("ui-body-"+k),c.attr("role","main"))})})}(a),function(a,b){a.fn.fieldcontain=function(a){return this.addClass("ui-field-contain ui-body ui-br").contents().filter(function(){return this.nodeType===3&&!/\S/.test(this.nodeValue)}).remove()},a.mobile.$document.bind("pagecreate create",function(b){a(":jqmData(role='fieldcontain')",b.target).jqmEnhanceable().fieldcontain()})}(a),function(a,b){a.fn.grid=function(b){return this.each(function(){var c=a(this),d=a.extend({grid:null},b),e=c.children(),f={solo:1,a:2,b:3,c:4,d:5},g=d.grid,h;if(!g)if(e.length<=5)for(var i in f)f[i]===e.length&&(g=i);else g="a",c.addClass("ui-grid-duo");h=f[g],c.addClass("ui-grid-"+g),e.filter(":nth-child("+h+"n+1)").addClass("ui-block-a"),h>1&&e.filter(":nth-child("+h+"n+2)").addClass("ui-block-b"),h>2&&e.filter(":nth-child("+h+"n+3)").addClass("ui-block-c"),h>3&&e.filter(":nth-child("+h+"n+4)").addClass("ui-block-d"),h>4&&e.filter(":nth-child("+h+"n+5)").addClass("ui-block-e")})}}(a),function(a,b){a.mobile.$document.bind("pagecreate create",function(b){a(":jqmData(role='nojs')",b.target).addClass("ui-nojs")})}(a),function(a,b){function d(a){var b;while(a){b=typeof a.className=="string"&&a.className+" ";if(b&&b.indexOf("ui-btn ")>-1&&b.indexOf("ui-disabled ")<0)break;a=a.parentNode}return a}a.fn.buttonMarkup=function(d){var f=this,g="data-"+a.mobile.ns,h=function(b,c){k.setAttribute("data-"+a.mobile.ns+b,c),j.jqmData(b,c)};d=d&&a.type(d)==="object"?d:{};for(var i=0;i<f.length;i++){var j=f.eq(i),k=j[0],l=a.extend({},a.fn.buttonMarkup.defaults,{icon:d.icon!==b?d.icon:a.mobile.getAttrFixed(k,g+"icon"),iconpos:d.iconpos!==b?d.iconpos:a.mobile.getAttrFixed(k,g+"iconpos"),theme:d.theme!==b?d.theme:a.mobile.getAttrFixed(k,g+"theme")||a.mobile.getInheritedTheme(j,a.fn.buttonMarkup.defaults.theme),inline:d.inline!==b?d.inline:a.mobile.getAttrFixed(k,g+"inline"),shadow:d.shadow!==b?d.shadow:a.mobile.getAttrFixed(k,g+"shadow"),corners:d.corners!==b?d.corners:a.mobile.getAttrFixed(k,g+"corners"),iconshadow:d.iconshadow!==b?d.iconshadow:a.mobile.getAttrFixed(k,g+"iconshadow"),mini:d.mini!==b?d.mini:a.mobile.getAttrFixed(k,g+"mini")},d),m="ui-btn-inner",n="ui-btn-text",o,p,q,r,s,t;for(key in l)k.setAttribute(g+key,l[key]);a.mobile.getAttrFixed(k,g+"rel")==="popup"&&j.attr("href")&&(k.setAttribute("aria-haspopup",!0),k.setAttribute("aria-owns",k.getAttribute("href"))),k.tagName!=="LI"&&k.tagName!=="LABEL"&&(k.setAttribute("role","button"),k.setAttribute("tabindex","0")),t=a.data(k.tagName==="INPUT"||k.tagName==="BUTTON"?k.parentNode:k,"buttonElements"),t?(k=t.outer,j=a(k),q=t.inner,r=t.text,a(t.icon).remove(),t.icon=null):(q=c.createElement(l.wrapperEls),r=c.createElement(l.wrapperEls)),s=l.icon?c.createElement("span"):null,e&&!t&&e(),l.theme||(l.theme=a.mobile.getInheritedTheme(j,"c")),o="ui-btn ui-btn-up-"+l.theme,o+=l.shadow?" ui-shadow":"",o+=l.corners?" ui-btn-corner-all":"";if(a.mobile.getAttrFixed(k,g+"role")=="button"||k.tagName=="BUTTON"||k.tagName=="DIV")o+=" ui-btn-box-"+l.theme;buttonStyle=a.mobile.getAttrFixed(k,g+"style");if(buttonStyle!="circle"||a(j).text().length>0){if(buttonStyle=="nobg")o+=" ui-btn-icon-nobg",o+=" ui-btn-icon_only";else if(buttonStyle=="edit")o+=" ui-btn-edit";else if(buttonStyle=="round"||buttonStyle=="circle"&&a(j).text().length>0)o+=" ui-btn-round"}else o+=" ui-btn-corner-circle",o+=" ui-btn-icon_only";if(l.icon)if(a(j).text().length>0){switch(l.iconpos){case"right":case"left":case"top":case"bottom":n+=" ui-btn-text-padding-"+l.iconpos;break;default:n+=" ui-btn-text-padding-left"}m+=" ui-btn-hastxt"}else buttonStyle=="circle"?m+=" ui-btn-corner-circle":buttonStyle=="nobg"&&(m+=" ui-btn-icon-nobg"),o+=" ui-btn-icon_only",m+=" ui-btn-icon-only",k.tagName!=="LABEL"&&a(j).text(l.icon.replace("naviframe-",""));else a(j).text().length>0?m+=" ui-btn-hastxt":buttonStyle=="circle"&&(o+=" ui-btn-round");l.mini!==b&&(o+=l.mini===!0?" ui-mini":" ui-fullsize"),l.inline!==b&&(o+=l.inline===!0?" ui-btn-inline":" ui-btn-block"),l.icon&&(l.icon="ui-icon-"+l.icon,l.iconpos=l.iconpos||"left",p="ui-icon "+l.icon,l.iconshadow&&(p+=" ui-icon-shadow")),l.iconpos&&(o+=" ui-btn-icon-"+l.iconpos,l.iconpos==="notext"&&!j.attr("title")&&j.attr("title",j.getEncodedText())),m+=l.corners?" ui-btn-corner-all":"",l.iconpos&&l.iconpos==="notext"&&!j.attr("title")&&j.attr("title",j.getEncodedText()),t&&j.removeClass(t.bcls||""),j.removeClass("ui-link").addClass(o),q.className=m,r.className=n,t||q.appendChild(r);if(s){s.className=p;if(!t||!t.icon)s.innerHTML="&#160;",q.appendChild(s)}while(k.firstChild&&!t)r.appendChild(k.firstChild);t||k.appendChild(q),t={bcls:o,outer:k,inner:q,text:r,icon:s},a.data(k,"buttonElements",t),a.data(q,"buttonElements",t),a.data(r,"buttonElements",t),s&&a.data(s,"buttonElements",t)}return this},a.fn.buttonMarkup.defaults={theme:"c",corners:!0,shadow:!0,iconshadow:!0,wrapperEls:"span"};var e=function(){var b=a.mobile.buttonMarkup.hoverDelay,c,f;a.mobile.$document.bind({"vmousedown vmousecancel vmouseup vmouseover vmouseout focus blur scrollstart touchend touchcancel":function(e){var g,h=a(d(e.target)),i=e.originalEvent&&/^touch/.test(e.originalEvent.type),j=e.type;if(h.length){g=h.attr("data-"+a.mobile.ns+"theme");if(j==="vmousedown")i?c=setTimeout(function(){h.removeClass("ui-btn-up-"+g).addClass("ui-btn-down-"+g)},b):h.removeClass("ui-btn-up-"+g).addClass("ui-btn-down-"+g);else if(j==="vmousecancel"||j==="vmouseup"||j==="touchend"||j==="touchcancel")h.removeClass("ui-btn-down-"+g).addClass("ui-btn-up-"+g);else if(j==="vmouseover"||j==="focus")i?f=setTimeout(function(){h.removeClass("ui-btn-up-"+g).addClass("ui-btn-hover-"+g)},b):h.removeClass("ui-btn-up-"+g).addClass("ui-btn-hover-"+g);else if(j==="vmouseout"||j==="blur"||j==="scrollstart")h.removeClass("ui-btn-hover-"+g+" ui-btn-down-"+g).addClass("ui-btn-up-"+g),c&&clearTimeout(c),f&&clearTimeout(f)}},"focusin focus":function(b){a(d(b.target)).addClass(a.mobile.focusClass)},"focusout blur":function(b){a(d(b.target)).removeClass(a.mobile.focusClass)}}),e=null};a.mobile.$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).jqmEnhanceable().not("button, input, .ui-btn, :jqmData(role='none'), :jqmData(role='nojs')").buttonMarkup()})}(a),function(a,b){a.widget("mobile.collapsible",a.mobile.widget,{options:{expandCueText:" Expandable list, tap to open list",collapseCueText:" Expandable list, tap to close list",collapsed:!0,heading:"h1,h2,h3,h4,h5,h6,legend",theme:null,contentTheme:null,inset:!0,mini:!1,initSelector:":jqmData(role='collapsible')"},_create:function(){var c=this.element,d=this.options,e=c.addClass("ui-collapsible"),f=c.children(d.heading).first(),g=a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"collapsed-icon")||d.collapsedIcon,h=a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"expanded-icon")||d.expandedIcon,i=e.wrapInner("<div class='ui-collapsible-content'></div>").children(".ui-collapsible-content"),j=c.closest(":jqmData(role='collapsible-set')").addClass("ui-collapsible-set");f.is("legend")&&(f=a("<div role='heading'>"+f.html()+"</div>").insertBefore(f),f.next().remove()),j.length?(d.theme||(d.theme=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"theme")||a.mobile.getInheritedTheme(j,"c")),d.contentTheme||(d.contentTheme=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"content-theme")),d.collapsedIcon||(d.collapsedIcon=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"collapsed-icon")),d.expandedIcon||(d.expandedIcon=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"expanded-icon")),d.iconPos||(d.iconPos=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"iconpos")),a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"inset")!==b?d.inset=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"inset"):d.inset=!0,d.mini||(d.mini=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"mini"))):d.theme||(d.theme=a.mobile.getInheritedTheme(c,"c")),!d.inset||e.addClass("ui-collapsible-inset"),i.addClass(d.contentTheme?"ui-body-"+d.contentTheme:""),g=a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"collapsed-icon")||d.collapsedIcon||"plus",h=a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"expanded-icon")||d.expandedIcon||"minus",f.insertBefore(i).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:!1,corners:!1,iconpos:a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"iconpos")||d.iconPos||"left",icon:g,mini:d.mini,theme:d.theme}).attr("role",""),!d.inset||f.find("a").first().add(".ui-btn-inner",c).addClass("ui-corner-top ui-corner-bottom"),e.bind("expand collapse",function(b){if(!b.isDefaultPrevented()){var c=a(this),k=b.type==="collapse",l=d.contentTheme;b.preventDefault(),d.customEventHandler&&d.customEventHandler.call(this,k),f.toggleClass("ui-collapsible-heading-collapsed",k).find(".ui-collapsible-heading-status").text(k?d.expandCueText:d.collapseCueText).end().find(".ui-icon").toggleClass("ui-icon-"+h,!k).toggleClass("ui-icon-"+g,k||h===g).end().find("a").first().removeClass(a.mobile.activeBtnClass),c.toggleClass("ui-collapsible-collapsed",k),i.toggleClass("ui-collapsible-content-collapsed",k).attr("aria-hidden",k),i.children("li").not("ui-collapsible-content").attr("tabindex",k?"":"0"),l&&!!d.inset&&(!j.length||e.jqmData("collapsible-last"))&&(f.find("a").first().add(f.find(".ui-btn-inner")).toggleClass("ui-corner-bottom",k),i.toggleClass("ui-corner-bottom",!k)),i.trigger("updatelayout")}}).trigger(d.collapsed?"collapse":"expand"),f.bind("tap",function(b){f.find("a").first().addClass(a.mobile.activeBtnClass)}).bind("click",function(a){var b=f.is(".ui-collapsible-heading-collapsed")?"expand":"collapse";e.trigger(b),a.preventDefault(),a.stopPropagation()})}}),a.delegateSelfInitWithSingleSelector(a.mobile.collapsible)}(a),function(a,b){a.widget("mobile.collapsibleset",a.mobile.widget,{options:{initSelector:":jqmData(role='collapsible-set')"},_create:function(){var c=this.element.addClass("ui-collapsible-set"),d=this.options;d.theme||(d.theme=a.mobile.getInheritedTheme(c,"c")),d.contentTheme||(d.contentTheme=a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"content-theme")),a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"inset")!==b&&(d.inset=a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"inset")),d.inset=d.inset!==b?d.inset:!0,c.jqmData("collapsiblebound")||c.jqmData("collapsiblebound",!0).bind("expand collapse",function(b){var c=b.type==="collapse",e=a(b.target).closest(".ui-collapsible"),f=e.data("collapsible");e.jqmData("collapsible-last")&&!!d.inset&&(e.find(".ui-collapsible-heading").first().find("a").first().toggleClass("ui-corner-bottom",c).find(".ui-btn-inner").toggleClass("ui-corner-bottom",c),e.find(".ui-collapsible-content").toggleClass("ui-corner-bottom",!c))}).bind("expand",function(b){var c=a(b.target).closest(".ui-collapsible");c.parent().is(":jqmData(role='collapsible-set')")&&c.siblings(".ui-collapsible").trigger("collapse")})},_init:function(){var a=this.element,b=a.children(":jqmData(role='collapsible')"),c=b.filter(":jqmData(collapsed='false')");this.refresh(),c.trigger("expand")},refresh:function(){var b=this.element,c=this.options,d=b.children(":jqmData(role='collapsible')");a.mobile.collapsible.prototype.enhance(d.not(".ui-collapsible")),!c.inset||(d.each(function(){a(this).jqmRemoveData("collapsible-last").find(".ui-collapsible-heading").find("a").first().removeClass("ui-corner-top ui-corner-bottom").find(".ui-btn-inner").removeClass("ui-corner-top ui-corner-bottom")}),d.first().find("a").first().addClass("ui-corner-top").find(".ui-btn-inner").addClass("ui-corner-top"),d.last().jqmData("collapsible-last",!0).find("a").first().addClass("ui-corner-bottom").find(".ui-btn-inner").addClass("ui-corner-bottom"))}}),a.delegateSelfInitWithSingleSelector(a.mobile.collapsibleset)}(a),function(a,b){a.widget("mobile.navbar",a.mobile.widget,{options:{iconpos:"top",grid:null,initSelector:":jqmData(role='navbar')"},_create:function(){var c=this.element,d=c.find("a"),e=d.filter(":jqmData(icon)").length?this.options.iconpos:b;c.addClass("ui-navbar ui-mini").attr("role","navigation").find("ul").jqmEnhanceable().grid({grid:this.options.grid}),d.buttonMarkup({corners:!1,shadow:!1,inline:!0,iconpos:e}),c.delegate("a","vclick",function(b){a(b.target).hasClass("ui-disabled")||(d.removeClass(a.mobile.activeBtnClass),a(this).addClass(a.mobile.activeBtnClass))}),c.closest(".ui-page").bind("pagebeforeshow",function(){d.filter(".ui-state-persist").addClass(a.mobile.activeBtnClass)})}}),a.delegateSelfInitWithSingleSelector(a.mobile.navbar)}(a),function(a,b){var d={};a.widget("mobile.listview",a.mobile.widget,{options:{theme:null,countTheme:"c",headerTheme:"b",dividerTheme:"b",splitIcon:"arrow-r",splitTheme:"b",inset:!1,initSelector:":jqmData(role='listview')"},_create:function(){var a=this,b="";b+=a.options.inset?" ui-listview-inset ui-corner-all ui-shadow ":"",a.element.addClass(function(a,c){return c+" ui-listview "+b}),a.refresh(!0)},_removeCorners:function(a,b){var c="ui-corner-top ui-corner-tr ui-corner-tl",d="ui-corner-bottom ui-corner-br ui-corner-bl";a=a.add(a.find(".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb")),b==="top"?a.removeClass(c):b==="bottom"?a.removeClass(d):a.removeClass(c+" "+d)},_refreshCorners:function(a){var b,c,d,e;b=this.element.children("li"),c=a||b.filter(":visible").length===0?b.not(".ui-screen-hidden"):b.filter(":visible"),b.filter(".ui-li-last").removeClass("ui-li-last"),this.options.inset?(this._removeCorners(b),d=c.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"),e=c.last().addClass("ui-corner-bottom ui-li-last"),e.add(e.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")):c.last().addClass("ui-li-last"),a||this.element.trigger("updatelayout")},_findFirstElementByTagName:function(a,b,c,d){var e={};e[c]=e[d]=!0;while(a){if(e[a.nodeName])return a;a=a[b]}return null},_getChildrenByTagName:function(b,c,d){var e=[],f={};f[c]=f[d]=!0,b=b.firstChild;while(b)f[b.nodeName]&&e.push(b),b=b.nextSibling;return a(e)},_addThumbClasses:function(b){var c,d,e=b.length;for(c=0;c<e;c++)d=a(this._findFirstElementByTagName(b[c].firstChild,"nextSibling","img","IMG")),d.length&&(d.addClass("ui-li-thumb").attr({role:"","aria-label":"icon"}),a(this._findFirstElementByTagName(d[0].parentNode,"parentNode","li","LI")).addClass(d.is(".ui-li-icon")?"ui-li-has-icon":"ui-li-has-thumb"))},_addCheckboxRadioClasses:function(b){var c,d,e=b.length;for(c=0;c<e;c++)d=a(b[c]).find("input"),d.attr("type")=="checkbox"?a(b[c]).addClass("ui-li-has-checkbox"):d.attr("type")=="radio"&&a(b[c]).addClass("ui-li-has-radio")},_addRightBtnClasses:function(b){var c,d,e=b.length;for(c=0;c<e;c++)d=a(b[c]).find(":jqmData(role='button'),input[type='button'],select:jqmData(role='slider')"),d.length&&(d.jqmData("style")=="circle"?a(b[c]).addClass("ui-li-has-right-circle-btn"):a(b[c]).addClass("ui-li-has-right-btn"))},refresh:function(d){this.parentPage=this.element.closest(".ui-page"),this._createSubPages();var e=this.options,f=this.element,g=this,h=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"dividertheme")||e.dividerTheme,i=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"splittheme"),j=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"spliticon"),k=this._getChildrenByTagName(f[0],"li","LI"),l=!!a.nodeName(f[0],"ol"),m=!a.support.cssPseudoElement,n=f.attr("start"),o={},p,q,r,s,t,u,v,w,x,y,z,A,B,C;l&&m&&f.find(".ui-li-dec").remove(),l&&(n||n===0?m?v=parseFloat(n):(w=parseFloat(n)-1,f.css("counter-reset","listnumbering "+w)):m&&(v=1)),e.theme||(e.theme=a.mobile.getInheritedTheme(this.element,"c"));for(var D=0,E=k.length;D<E;D++){p=k.eq(D),q="ui-li";if(d||!p.hasClass("ui-li")){r=a.mobile.getAttrFixed(p[0],"data-"+a.mobile.ns+"theme")||e.theme,s=this._getChildrenByTagName(p[0],"a","A").attr({role:"",tabindex:"0"});var F=a.mobile.getAttrFixed(p[0],"data-"+a.mobile.ns+"role")==="list-divider";(p.hasClass("ui-li-has-checkbox")||p.hasClass("ui-li-has-radio"))&&p.on("vclick",function(b){var c=a(b.target),d=c.find(".ui-checkbox");d.length||(d=c.find(".ui-radio")),d.length&&d.children("label").trigger("vclick")}),s.length&&!F?(z=a.mobile.getAttrFixed(p[0],"data-"+a.mobile.ns+"icon"),z===b&&(z=!1),p.buttonMarkup({wrapperEls:"div",shadow:!1,corners:!1,iconpos:"right",icon:s.length>1||z===!1?!1:z||"arrow-r",theme:r}),z!==!1&&s.length===1&&p.addClass("ui-li-has-arrow"),s.first().removeClass("ui-link").addClass("ui-link-inherit"),s.length>1&&(q+=" ui-li-has-alt",t=s.last(),u=i||a.mobile.getAttrFixed(t[0],"data-"+a.mobile.ns+"theme")||e.splitTheme,C=a.mobile.getAttrFixed(t[0],"data-"+a.mobile.ns+"icon"),t.appendTo(p).attr("title",t.getEncodedText()).addClass("ui-li-link-alt").empty().buttonMarkup({shadow:!1,corners:!1,theme:r,icon:!1,iconpos:"notext"}).find(".ui-btn-inner").append(a(c.createElement("span")).buttonMarkup({shadow:!0,corners:!0,theme:u,iconpos:"notext",icon:C||z||j||e.splitIcon})))):F?(q+=" ui-li-divider ui-bar-"+h,p.attr({role:"heading",tabindex:"0"}),l&&(n||n===0?m?v=parseFloat(n):(x=parseFloat(n)-1,p.css("counter-reset","listnumbering "+x)):m&&(v=1))):(q+=" ui-li-static ui-btn-up-"+r,p.attr("tabindex","0"))}l&&m&&q.indexOf("ui-li-divider")<0&&(y=q.indexOf("ui-li-static")>0?p:p.find(".ui-link-inherit"),y.addClass("ui-li-jsnumbering").prepend("<span class='ui-li-dec'>"+v++ +". </span>")),o[q]||(o[q]=[]),o[q].push(p[0])}for(q in o)a(o[q]).addClass(q).children(".ui-btn-inner").addClass(q);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-"+(a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"counttheme")||this.options.countTheme)+" ui-btn-corner-all"),this._addThumbClasses(k),this._addThumbClasses(f.find(".ui-link-inherit")),this._addCheckboxRadioClasses(k),this._addCheckboxRadioClasses(f.find(".ui-link-inherit")),this._addRightBtnClasses(k),this._addRightBtnClasses(f.find(".ui-link-inherit")),this._refreshCorners(d),this._trigger("afterrefresh")},_idStringEscape:function(a){return a.replace(/[^a-zA-Z0-9]/g,"-")},_createSubPages:function(){var b=this.element,c=b.closest(".ui-page"),e=c.jqmData("url"),f=e||c[0][a.expando],g=b.attr("id"),h=this.options,i="data-"+a.mobile.ns,j=this,k=c.find(":jqmData(role='footer')").jqmData("id"),l;typeof d[f]=="undefined"&&(d[f]=-1),g=g||++d[f],a(b.find("li>ul, li>ol").toArray().reverse()).each(function(c){var d=this,f=a(this),j=f.attr("id")||g+"-"+c,m=f.parent(),n=a(f.prevAll().toArray().reverse()),p=n.length?n:a("<span>"+a.trim(m.contents()[0].nodeValue)+"</span>"),q=p.first().getEncodedText(),r=(e||"")+"&"+a.mobile.subPageUrlKey+"="+j,s=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"theme")||h.theme,t=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"counttheme")||a.mobile.getAttrFixed(b[0],"data-"+a.mobile.ns+"counttheme")||h.countTheme,u,v;l=!0,u=f.detach().wrap("<div "+i+"role='page' "+i+"url='"+r+"' "+i+"theme='"+s+"' "+i+"count-theme='"+t+"'><div "+i+"role='content'></div></div>").parent().before("<div "+i+"role='header' "+i+"theme='"+h.headerTheme+"'><div class='ui-title'>"+q+"</div></div>").after(k?a("<div "+i+"role='footer' "+i+"id='"+k+"'>"):"").parent().appendTo(a.mobile.pageContainer),u.page(),v=m.find("a:first"),v.length||(v=a("<a/>").html(p||q).prependTo(m.empty())),v.attr("href","#"+r)}).listview();if(l&&c.is(":jqmData(external-page='true')")&&c.data("page").options.domCache===!1){var m=function(b,d){var f=d.nextPage,g,h=new a.Event("pageremove");d.nextPage&&(g=f.jqmData("url"),g.indexOf(e+"&"+a.mobile.subPageUrlKey)!==0&&(j.childPages().remove(),c.trigger(h),h.isDefaultPrevented()||c.removeWithDependents()))};c.unbind("pagehide.remove").bind("pagehide.remove",m)}},addItem:function(b,c){var d=a(b),e,f=this;e=f.element.children("li"),d.css({opacity:0,display:"none"}),e.length==0||e.length<=c?a(f.element).append(d):a(e.get(c)).before(d),a(f.element).trigger("create").listview("refresh"),d.css("min-height","0px"),d.slideDown("fast",function(){d.addClass("addli"),d.css({opacity:1})})},removeItem:function(b){var c,d,e=this;d=e.element.children("li");if(d.length<=0||d.length<b)return;c=a(d.get(b)),c.addClass("removeli"),c.slideUp("normal",function(){a(this).remove()})},childPages:function(){var b=this.parentPage.jqmData("url");return a(":jqmData(url^='"+b+"&"+a.mobile.subPageUrlKey+"')")}}),a.delegateSelfInitWithSingleSelector(a.mobile.listview)}(a),function(a,b){a.mobile.listview.prototype.options.autodividers=!1,a.mobile.listview.prototype.options.autodividersSelector=function(a){var b=a.text()||null;return b?(b=b.trim().slice(0,1).toUpperCase(),b):null},a.mobile.$document.delegate("ul,ol","listviewcreate",function(){var b=a(this),d=b.data("listview");if(!d||!d.options.autodividers)return;var e=function(){b.find("li:jqmData(role='list-divider')").remove();var e=b.find("li"),f=null,g,h;for(var i=0;i<e.length;i++){g=e[i],h=d.options.autodividersSelector(a(g));if(h&&f!==h){var j=c.createElement("li");j.appendChild(c.createTextNode(h)),j.setAttribute("data-"+a.mobile.ns+"role","list-divider"),g.parentNode.insertBefore(j,g)}f=h}},f=function(){b.unbind("listviewafterrefresh",f),e(),d.refresh(),b.bind("listviewafterrefresh",f)};f()})}(a),function(a,b){a.widget("mobile.checkboxradio",a.mobile.widget,{options:{theme:null,initSelector:"input[type='checkbox'],input[type='radio']"},_create:function(){var d=this,e=this.element,f=function(a,b){return a.jqmData(b)||a.closest("form, fieldset").jqmData(b)},g=a(e).closest("label"),h=g.length?g:e[0].id?a(e).closest("form, fieldset, :jqmData(role='page'), :jqmData(role='dialog')").find("label").filter("[for='"+e[0].id+"']"):[],i=e[0].type,j=f(e,"mini"),k=i+"-on",l=i+"-off",m=e.parents(":jqmData(type='horizontal')").length?b:l,n=f(e,"iconpos"),o=m?"":" "+a.mobile.activeBtnClass,p="ui-"+k+o,q="ui-"+l,r="ui-icon-"+k,s="ui-icon-"+l,t="";if(i!=="checkbox"&&i!=="radio")return;t=i==="checkbox"?"aria-checked":"aria-selected",h.length==0&&(h=a("<label for='"+e[0].id+"'></label>")),a.extend(this,{label:h,inputtype:i,checkedClass:p,uncheckedClass:q,checkedicon:r,uncheckedicon:s,ariaCheckedAttr:t}),this.options.theme||(this.options.theme=a.mobile.getInheritedTheme(this.element,"c")),h.buttonMarkup({theme:this.options.theme,icon:m,shadow:!1,mini:j,iconpos:n});var u=c.createElement("div");u.className="ui-"+i,u.setAttribute("role",i),e.hasClass("favorite")&&(u.className+=" favorite"),e.add(h).wrapAll(u),h.bind({vmouseover:function(b){a(this).parent().is(".ui-disabled")&&b.stopPropagation()},vclick:function(a){if(e.is(":disabled")){a.preventDefault();return}return d._cacheVals(),e.prop("checked",i==="radio"&&!0||!e.prop("checked")),e.triggerHandler("click"),d._getInputSet().not(e).prop("checked",!1),d._updateAll(),!1}}),e.bind({vmousedown:function(){d._cacheVals()},vclick:function(){var b=a(this);b.is(":checked")?(b.prop("checked",!0),d._getInputSet().not(b).prop("checked",!1)):b.prop("checked",!1),d._updateAll()},focus:function(){h.addClass(a.mobile.focusClass)},blur:function(){h.removeClass(a.mobile.focusClass)}}),this.refresh()},_cacheVals:function(){this._getInputSet().each(function(){a(this).jqmData("cacheVal",this.checked)})},_getInputSet:function(){return this.inputtype==="checkbox"?this.element:this.element.closest("form, fieldset, :jqmData(role='page'), :jqmData(role='dialog')").find("input[name='"+this.element[0].name+"'][type='"+this.inputtype+"']")},_updateAll:function(){var b=this;this._getInputSet().each(function(){var c=a(this);(this.checked||b.inputtype==="checkbox")&&c.trigger("change"),c.focus()}).checkboxradio("refresh")},refresh:function(){var a=this.element[0],b=this.label,c=a.parentNode,d=b.find(".ui-icon");a.checked?(b.addClass(this.checkedClass).removeClass(this.uncheckedClass),d.addClass(this.checkedicon).removeClass(this.uncheckedicon),c.setAttribute(this.ariaCheckedAttr,!0)):(b.removeClass(this.checkedClass).addClass(this.uncheckedClass),d.removeClass(this.checkedicon).addClass(this.uncheckedicon),c.setAttribute(this.ariaCheckedAttr,!1)),a.disabled?this.disable():this.enable()},disable:function(){this.element.prop("disabled",!0).parent().addClass("ui-disabled")},enable:function(){this.element.prop("disabled",!1).parent().removeClass("ui-disabled")}}),a.mobile.$document.bind("pagecreate create",function(b){a.mobile.checkboxradio.prototype.enhanceWithin(b.target,!0)})}(a),function(a,b){a.widget("mobile.button",a.mobile.widget,{options:{theme:null,icon:null,iconpos:null,corners:!0,shadow:!0,iconshadow:!0,initSelector:"button, [type='button'], [type='submit'], [type='reset']"},_create:function(){var c=this.element,d,e=this.options,f,g,h=e.inline||a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"inline"),i=e.mini||a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"mini"),j="",k;if(c[0].tagName==="A"){c.hasClass("ui-btn")||c.buttonMarkup();return}this.options.theme||(this.options.theme=a.mobile.getInheritedTheme(this.element,"c")),!~c[0].className.indexOf("ui-btn-left")||(j="ui-btn-left"),!~c[0].className.indexOf("ui-btn-right")||(j="ui-btn-right");if(c.attr("type")==="submit"||c.attr("type")==="reset")j?j+=" ui-submit":j="ui-submit";a("label[for='"+c.attr("id")+"']").addClass("ui-submit"),this.button=a("<div></div>")[c.html()?"html":"text"](c.html()||c.val()).insertBefore(c).buttonMarkup({theme:e.theme,icon:e.icon,iconpos:e.iconpos,inline:h,corners:e.corners,shadow:e.shadow,iconshadow:e.iconshadow,mini:i}).addClass(j).append(c.addClass("ui-btn-hidden")),d=this.button,f=c.attr("type"),g=c.attr("name"),f!=="button"&&f!=="reset"&&g&&c.bind("vclick",function(){k===b&&(k=a("<input>",{type:"hidden",name:c.attr("name"),value:c.attr("value")}).insertBefore(c),a.mobile.$document.one("submit",function(){k.remove(),k=b}))}),c.bind({focus:function(){d.addClass(a.mobile.focusClass)},blur:function(){d.removeClass(a.mobile.focusClass)}}),this.refresh()},enable:function(){return this.element.attr("disabled",!1),this.button.removeClass("ui-disabled").attr("aria-disabled",!1),this._setOption("disabled",!1)},disable:function(){return this.element.attr("disabled",!0),this.button.addClass("ui-disabled").attr("aria-disabled",!0),this._setOption("disabled",!0)},refresh:function(){var b=this.element;b.prop("disabled")?this.disable():this.enable(),a(this.button.data("buttonElements").text)[b.html()?"html":"text"](b.html()||b.val())}}),a.mobile.$document.bind("pagecreate create",function(b){a.mobile.button.prototype.enhanceWithin(b.target,!0)})}(a),function(a,b){a.fn.controlgroup=function(b){function c(a,b){a.removeClass("ui-btn-corner-all ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-controlgroup-last ui-shadow").eq(0).addClass(b[0]).end().last().addClass(b[1]).addClass("ui-controlgroup-last")}return this.each(function(){var d=a(this),e=a.extend({direction:a.mobile.getAttrFixed(d[0],"data-"+a.mobile.ns+"type")||"vertical",shadow:!1,excludeInvisible:!0,mini:a.mobile.getAttrFixed(d[0],"data-"+a.mobile.ns+"mini")},b),f=d.children("legend"),g=d.children(".ui-controlgroup-label"),h=d.children(".ui-controlgroup-controls"),i=e.direction==="horizontal"?["ui-corner-left","ui-corner-right"]:["ui-corner-top","ui-corner-bottom"],j=d.find("input").first().attr("type");h.length&&h.contents().unwrap(),d.wrapInner("<div class='ui-controlgroup-controls'></div>"),f.length?(a("<div role='heading' class='ui-controlgroup-label'>"+f.html()+"</div>").insertBefore(d.children(0)),f.remove()):g.length&&d.prepend(g),d.addClass("ui-corner-all ui-controlgroup ui-controlgroup-"+e.direction),c(d.find(".ui-btn"+(e.excludeInvisible?":visible":"")).not(".ui-slider-handle"),i),c(d.find(".ui-btn-inner"),i),e.shadow&&d.addClass("ui-shadow"),e.mini&&d.addClass("ui-mini")})}}(a),function(a,b){a.mobile.$document.bind("pagecreate create",function(b){a(b.target).find("a").jqmEnhanceable().not(".ui-btn, .ui-link-inherit, :jqmData(role='none'), :jqmData(role='nojs')").addClass("ui-link")})}(a),function(a,d){function e(a,b,c,d){var e=d;return a<b?e=c+(a-b)/2:e=Math.min(Math.max(c,d-b/2),c+a-b),e}function f(){var c=a.mobile.$window;return{x:c.scrollLeft(),y:c.scrollTop(),cx:b.innerWidth||c.width(),cy:b.innerHeight||c.height()}}a.widget("mobile.popup",a.mobile.widget,{options:{theme:null,overlayTheme:null,shadow:!0,corners:!0,transition:"pop",positionTo:"origin",tolerance:null,initSelector:":jqmData(role='popup')",closeLinkSelector:"a:jqmData(rel='back')",closeLinkEvents:"click.popup",navigateEvents:"navigate.popup",closeEvents:"navigate.popup pagebeforechange.popup",history:!1},_eatEventAndClose:function(a){return a.preventDefault(),a.stopImmediatePropagation(),this.close(),!1},_resizeScreen:function(){var a=this._ui.container.outerHeight(!0);this._ui.screen.removeAttr("style"),a>this._ui.screen.height()&&this._ui.screen.height(a)},_handleWindowKeyUp:function(b){if(this._isOpen&&b.keyCode===a.mobile.keyCode.ESCAPE)return this._eatEventAndClose(b)},_maybeRefreshTimeout:function(){var b=f();if(this._resizeData){if(b.x===this._resizeData.winCoords.x&&b.y===this._resizeData.winCoords.y&&b.cx===this._resizeData.winCoords.cx&&b.cy===this._resizeData.winCoords.cy)return!1;clearTimeout(this._resizeData.timeoutId)}return this._resizeData={timeoutId:setTimeout(a.proxy(this,"_resizeTimeout"),200),winCoords:b},!0},_resizeTimeout:function(){!this._maybeRefreshTimeout()&&this.positionTo==="window"&&(this._trigger("beforeposition"),this._ui.container.removeClass("ui-selectmenu-hidden").offset(this._placementCoords(this._desiredCoords(d,d,"window"))),this._resizeScreen(),this._resizeData=null,this._orientationchangeInProgress=!1)},_handleWindowResize:function(a){this._isOpen&&this._maybeRefreshTimeout()},_handleWindowOrientationchange:function(a){this._orientationchangeInProgress||(this._ui.container.addClass("ui-selectmenu-hidden").removeAttr("style"),this._orientationchangeInProgress=!0)},_create:function(){var b={screen:a("<div class='ui-screen-hidden ui-popup-screen'></div>"),placeholder:a("<div style='display: none;'><!-- placeholder --></div>"),container:a("<div class='ui-popup-container ui-selectmenu-hidden'></div>"),arrow:a("<div class='ui-arrow'></div>")},c=this.element.closest(".ui-page"),e=this.element.attr("id"),f=this;this.options.history=this.options.history&&a.mobile.ajaxEnabled&&a.mobile.hashListeningEnabled,c.length===0&&(c=a("body")),this.options.container=this.options.container||a.mobile.pageContainer,c.append(b.screen),b.container.insertAfter(b.screen),b.placeholder.insertAfter(this.element),e&&(b.screen.attr("id",e+"-screen"),b.container.attr("id",e+"-popup"),b.placeholder.html("<!-- placeholder for "+e+" -->")),b.container.append(this.element),b.container.append(b.arrow),this.element.addClass("ui-popup"),a.extend(this,{_page:c,_ui:b,_fallbackTransition:"",_currentTransition:!1,_prereqs:null,_isOpen:!1,_tolerance:null,_resizeData:null,_orientationchangeInProgress:!1,_globalHandlers:[{src:a.mobile.$window,handler:{orientationchange:a.proxy(this,"_handleWindowOrientationchange"),resize:a.proxy(this,"_handleWindowResize"),keyup:a.proxy(this,"_handleWindowKeyUp")}}]}),a.each(this.options,function(a,b){f.options[a]=d,f._setOption(a,b,!0)}),b.screen.bind("vclick",a.proxy(this,"_eatEventAndClose")),a.each(this._globalHandlers,function(a,b){b.src.bind(b.handler)})},_applyTheme:function(a,b,c){var d=(a.attr("class")||"").split(" "),e=!0,f=null,g,h=String(b);while(d.length>0){f=d.pop(),g=(new RegExp("^ui-"+c+"-([a-z])$")).exec(f);if(g&&g.length>1){f=g[1];break}f=null}b!==f&&(a.removeClass("ui-"+c+"-"+f),b!==null&&b!=="none"&&a.addClass("ui-"+c+"-"+h))},_setTheme:function(a){this._applyTheme(this.element,a,"body")},_setOverlayTheme:function(a){this._applyTheme(this._ui.screen,a,"overlay"),this._isOpen&&this._ui.screen.addClass("in")},_setShadow:function(a){this.element.toggleClass("ui-overlay-shadow",a)},_setCorners:function(a){this.element.toggleClass("ui-corner-all",a)},_applyTransition:function(b){this._ui.container.removeClass(this._fallbackTransition),b&&b!=="none"&&(this._fallbackTransition=a.mobile._maybeDegradeTransition(b),this._ui.container.addClass(this._fallbackTransition))},_setTransition:function(a){this._currentTransition||this._applyTransition(a)},_setTolerance:function(b){var c={t:5,r:5,b:5,l:5};if(b){var d=String(b).split(",");a.each(d,function(a,b){d[a]=parseInt(b,10)});switch(d.length){case 1:isNaN(d[0])||(c.t=c.r=c.b=c.l=d[0]);break;case 2:isNaN(d[0])||(c.t=c.b=d[0]),isNaN(d[1])||(c.l=c.r=d[1]);break;case 4:isNaN(d[0])||(c.t=d[0]),isNaN(d[1])||(c.r=d[1]),isNaN(d[2])||(c.b=d[2]),isNaN(d[3])||(c.l=d[3]);break;default:}}this._tolerance=c},_setOption:function(b,c){var e,f="_set"+b.charAt(0).toUpperCase()+b.slice(1);this[f]!==d&&this[f](c),e=["initSelector","closeLinkSelector","closeLinkEvents","navigateEvents","closeEvents","history","container"],a.mobile.widget.prototype._setOption.apply(this,arguments),a.inArray(b,e)===-1&&this.element.attr("data-"+(a.mobile.ns||"")+b.replace(/([A-Z])/,"-$1").toLowerCase(),c)},_placementCoords:function(d){var g=f(),h={x:this._tolerance.l,y:g.y+this._tolerance.t,cx:g.cx-this._tolerance.l-this._tolerance.r,cy:g.cy-this._tolerance.t-this._tolerance.b},i,j,k=a(this.link).offset(),l=[],m=[0,0],n;this._ui.container.css("max-width",h.cx),i={cx:this._ui.container.outerWidth(!0),cy:this._ui.container.outerHeight(!0)},j={x:e(h.cx,i.cx,h.x,d.x),y:e(h.cy,i.cy,h.y,d.y)},j.y=Math.max(0,j.y);var o=c.documentElement,p=c.body,q=Math.max(o.clientHeight,p.scrollHeight,p.offsetHeight,o.scrollHeight,o.offsetHeight);j.y-=Math.min(j.y,Math.max(0,j.y+i.cy-q));if(this.positionTo!=="origin")return{left:j.x,top:j.y,arrowleft:0,arrowtop:0};l=[k.left,k.top,o.clientHeight-(k.top+a(this.link).height()),o.clientWidth-(k.left+a(this.link).width())],n=l.indexOf(Math.max.apply(b,l));switch(n){case 0:m=[-a(this.link).width(),0],arrowtop=k.top-j.y+a(this.link).height()/2-parseInt(a(this._ui.arrow).css("border-width")),arrowleft=i.cx,a(this._ui.arrow).attr("class","").addClass("ui-arrow left");break;case 1:m=[0,-(j.y+i.cy-k.top)],arrowtop=i.cy-2,arrowleft=k.left-j.x+m[0]+a(this.link).width()/2-parseInt(a(this._ui.arrow).css("border-width"))/2,a(this._ui.arrow).attr("class","").addClass("ui-arrow bottom");break;case 2:m=[0,k.top+a(this.link).height()-j.y],arrowtop=-parseInt(a(this._ui.arrow).css("border-width"))*2+1,arrowleft=k.left-j.x+m[0]+a(this.link).width()/2-parseInt(a(this._ui.arrow).css("border-width"))/2,a(this._ui.arrow).attr("class","").addClass("ui-arrow top");break;case 3:m=[i.cx<a(this.link).width()?a(this.link).width()/2+i.cx/2:a(this.link).width(),0],arrowtop=k.top-j.y+a(this.link).height()/2-parseInt(a(this._ui.arrow).css("border-width")),arrowleft=-parseInt(a(this._ui.arrow).css("border-width"))*2,a(this._ui.arrow).attr("class","").addClass("ui-arrow right")}return{left:j.x+m[0],top:j.y+m[1],arrowleft:arrowleft,arrowtop:arrowtop}},_createPrereqs:function(b,c,d){var e=this,f;f={screen:a.Deferred(),container:a.Deferred()},f.screen.then(function(){f===e._prereqs&&b()}),f.container.then(function(){f===e._prereqs&&c()}),a.when(f.screen,f.container).done(function(){f===e._prereqs&&(e._prereqs=null,d())}),e._prereqs=f},_animate:function(b){this._ui.screen.removeClass(b.classToRemove).addClass(b.screenClassToAdd),b.prereqs.screen.resolve(),b.transition&&b.transition!=="none"?(b.applyTransition&&this._applyTransition(b.transition),this._ui.container.animationComplete(a.proxy(b.prereqs.container,"resolve")).addClass(b.containerClassToAdd).removeClass(b.classToRemove)):b.prereqs.container.resolve()},_desiredCoords:function(b,c,d){var e=null,g,h=f();if(d&&d!=="origin")if(d==="window")b=h.cx/2+h.x,c=h.cy/2+h.y;else{try{e=a(d)}catch(i){e=null}e&&(e.filter(":visible"),e.length===0&&(e=null))}e&&(g=e.offset(),b=g.left+e.outerWidth()/2,c=g.top+e.outerHeight()/2);if(a.type(b)!=="number"||isNaN(b))b=h.cx/2+h.x;if(a.type(c)!=="number"||isNaN(c))c=h.cy/2+h.y;return{x:b,y:c}},_openPrereqsComplete:function(){var a=this;a._ui.container.addClass("ui-popup-active"),a._isOpen=!0,a._resizeScreen(),setTimeout(function(){a._ui.container.attr("tabindex","0").focus(),a._trigger("afteropen")})},_open:function(c){var d,e,f=function(){var a=b,c=navigator.userAgent,d=c.match(/AppleWebKit\/([0-9\.]+)/),e=!!d&&d[1],f=c.match(/Android (\d+(?:\.\d+))/),g=!!f&&f[1],h=c.indexOf("Chrome")>-1;return f!==null&&g==="4.0"&&e&&e>534.13&&!h?!0:!1}();c=c||{},e=c.transition||this.options.transition,this._trigger("beforeposition"),d=this._placementCoords(this._desiredCoords(c.x,c.y,c.positionTo||this.options.positionTo||"origin")),this._createPrereqs(a.noop,a.noop,a.proxy(this,"_openPrereqsComplete")),e?(this._currentTransition=e,this._applyTransition(e)):e=this.options.transition,this.options.theme||this._setTheme(this._page.jqmData("theme")||a.mobile.getInheritedTheme(this._page,"c")),this._ui.screen.removeClass("ui-screen-hidden"),this._ui.container.removeClass("ui-selectmenu-hidden").offset(d),this._ui.arrow.css({top:d.arrowtop,left:d.arrowleft}),this.options.overlayTheme&&f&&this.element.closest(".ui-page").addClass("ui-popup-open"),this._animate({additionalCondition:!0,transition:e,classToRemove:"",screenClassToAdd:"in",containerClassToAdd:"in",applyTransition:!1,prereqs:this._prereqs})},_closePrereqScreen:function(){this._ui.screen.removeClass("out").addClass("ui-screen-hidden")},_closePrereqContainer:function(){this._ui.container.removeClass("reverse out").addClass("ui-selectmenu-hidden").removeAttr("style")},_closePrereqsDone:function(){var b=this,c=b.options;b._ui.container.removeAttr("tabindex"),c.container.unbind(c.closeEvents),b.element.undelegate(c.closeLinkSelector,c.closeLinkEvents),a.mobile.popup.active=d,b._trigger("afterclose")},_close:function(){this._ui.container.removeClass("ui-popup-active"),this._page.removeClass("ui-popup-open"),this._isOpen=!1,this.element.find("input").blur(),this._createPrereqs(a.proxy(this,"_closePrereqScreen"),a.proxy(this,"_closePrereqContainer"),a.proxy(this,"_closePrereqsDone")),this._animate({additionalCondition:this._ui.screen.hasClass("in"),transition:this._currentTransition||this.options.transition,classToRemove:"in",screenClassToAdd:"out",containerClassToAdd:"reverse out",applyTransition:!0,prereqs:this._prereqs})},_destroy:function(){var b=this;b._close(),b._setTheme("none"),b.element.insertAfter(b._ui.placeholder).removeClass("ui-popup ui-overlay-shadow ui-corner-all"),b._ui.screen.remove(),b._ui.container.remove(),b._ui.placeholder.remove(),a.each(b._globalHandlers,function(b,c){a.each(c.handler,function(a,b){c.src.unbind(a,b)})})},_bindContainerClose:function(){var b=this;b.options.container.one(b.options.closeEvents,a.proxy(b._close,b))},open:function(b){var c=this,e=this.options,f,g,h,i,j,k;if(a.mobile.popup.active)return;a.mobile.popup.active=this,b||(b=[]),b.link?c.link=b.link:event?c.link=a(event.target).closest("a")[0]||a(event.target).closest("div")[0]:c.positionTo="window",event&&(c.positionTo=b!=null&&b.positionTo!=null?b.positionTo:"origin"),a(c.link).jqmData("position-to")!=="window"&&c.positionTo!=="window"?(a(c.element).addClass("ui-ctxpopup"),a(c._ui.container).removeClass("ui-popup-container").addClass("ui-ctxpopup-container"),c.positionTo!=="origin"?a(c._ui.arrow).hide():a(c._ui.arrow).show()):(a(c._ui.arrow).hide(),this._setOverlayTheme("dim")),!b.x&&c.positionTo==="origin"&&(b.x=a(c.link).offset().left+a(c.link).outerWidth()/2),!b.y&&c.positionTo==="origin"&&(b.y=a(c.link).offset().top+a(c.link).outerHeight()/2);if(!e.history){c._open(b),c._bindContainerClose(),c.element.delegate(e.closeLinkSelector,e.closeLinkEvents,function(a){return c._close(),!1});return}g=a.mobile.dialogHashKey,h=a.mobile.activePage,i=h.is(".ui-dialog"),f=a.mobile.urlHistory.getActive().url,j=f.indexOf(g)>-1&&!i,k=a.mobile.urlHistory;if(j){c._open(b),c._bindContainerClose();return}f.indexOf(g)===-1&&!i?f+=g:f=a.mobile.path.parseLocation().hash+g,k.activeIndex===0&&f===k.initialDst&&(f+=g),e.container.one(e.navigateEvents,function(a){a.preventDefault(),c._open(b),c._bindContainerClose()}),k.ignoreNextHashChange=i,k.addNew(f,d,d,d,"dialog"),a.mobile.path.set(f)},close:function(){if(!a.mobile.popup.active)return;this.options.history?a.mobile.back():this._close()}}),a.mobile.popup.handleLink=function(b){var c=b.closest(":jqmData(role='page')"),d=c.length===0?a("body"):c,e=a(a.mobile.path.parseUrl(b.attr("href")).hash,d[0]),f;e.data("popup")&&(f=b.offset(),e.popup("open",{x:f.left+b.outerWidth()/2,y:f.top+b.outerHeight()/2,transition:a.mobile.getAttrFixed(b[0],"data-"+a.mobile.ns+"transition"),positionTo:a.mobile.getAttrFixed(b[0],"data-"+a.mobile.ns+"position-to"),link:b})),setTimeout(function(){b.removeClass(a.mobile.activeBtnClass)},300)},a.mobile.$document.bind("pagebeforechange",function(b,c){c.options.role==="popup"&&(a.mobile.popup.handleLink(c.options.link),b.preventDefault())}),a.mobile.$document.bind("pagecreate create",function(b){a.mobile.popup.prototype.enhanceWithin(b.target,!0)})}(a),function(a){var b=a("meta[name=viewport]"),c=b.attr("content"),d=c+",maximum-scale=1, user-scalable=no",e=c+",maximum-scale=10, user-scalable=yes",f=/(user-scalable[\s]*=[\s]*no)|(maximum-scale[\s]*=[\s]*1)[$,\s]/.test(c);a.mobile.zoom=a.extend({},{enabled:!f,locked:!1,disable:function(c){!f&&!a.mobile.zoom.locked&&(b.attr("content",d),a.mobile.zoom.enabled=!1,a.mobile.zoom.locked=c||!1)},enable:function(c){!f&&(!a.mobile.zoom.locked||c===!0)&&(b.attr("content",e),a.mobile.zoom.enabled=!0,a.mobile.zoom.locked=!1)},restore:function(){f||(b.attr("content",c),a.mobile.zoom.enabled=!0)}})}(a),function(a,c){a.widget("mobile.textinput",a.mobile.widget,{options:{theme:null,preventFocusZoom:/iPhone|iPad|iPod/.test(navigator.platform)&&navigator.userAgent.indexOf("AppleWebKit")>-1,initSelector:"input[type='text'], 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])",disabled:!1},_create:function(){function l(){setTimeout(function(){k.toggleClass("ui-input-clear-hidden",!d.val())},0)}var c=this,d=this.element,e=this.options,f=e.theme||a.mobile.getInheritedTheme(this.element,"c"),g=" ui-body-"+f,h=a.mobile.getAttrFixed(d[0],"data-"+a.mobile.ns+"mini")===!0,i=h?" ui-mini":"",j,k;a("label[for='"+d.attr("id")+"']").addClass("ui-input-text"),j=d.addClass("ui-input-text ui-body-"+f);switch(d.attr("type")){case"text":case"password":case"number":case"email":case"url":case"tel":d.attr({role:"textbox","aria-label":"Keyboard opened"});break;default:d.prop("tagName").toLowerCase()==="textarea"&&d.attr({role:"textbox","aria-label":"Keyboard opened"})}typeof d[0].autocorrect!="undefined"&&!a.support.touchOverflow&&(d[0].setAttribute("autocorrect","off"),d[0].setAttribute("autocomplete","off")),d.focus(function(){j.addClass(a.mobile.focusClass)}).blur(function(){j.removeClass(a.mobile.focusClass)}).bind("focus",function(){e.preventFocusZoom&&a.mobile.zoom.disable(!0)}).bind("blur",function(){e.preventFocusZoom&&a.mobile.zoom.enable(!0)});if(d.is("textarea")){var m=15,n=100,o;this._keyup=function(){var a=d[0].scrollHeight,c=d[0].clientHeight;c<a&&b.innerHeight/2>a&&d.height(a+m)},d.keyup(function(){clearTimeout(o),o=setTimeout(c._keyup,n)}),this._on(a.mobile.$document,{pagechange:"_keyup"}),a.trim(d.val())&&this._on(a.mobile.$window,{load:"_keyup"})}d.attr("disabled")&&this.disable()},disable:function(){var a;if(!this.element.attr("disabled",!0))return;return a=this.element,a.addClass("ui-disabled"),this._setOption("disabled",!0)},enable:function(){var a;if(!this.element.attr("disabled",!1))return;return a=this.element,a.removeClass("ui-disabled"),this._setOption("disabled",!1)}}),a.mobile.$document.bind("pagecreate create",function(b){a.mobile.textinput.prototype.enhanceWithin(b.target,!0)})}(a),function(a,b){a.mobile.listview.prototype.options.filter=!1,a.mobile.listview.prototype.options.filterPlaceholder="",a.mobile.listview.prototype.options.filterTheme="c";var c=function(a,b,c){return a.toString().toLowerCase().indexOf(b)===-1};a.mobile.listview.prototype.options.filterCallback=c,a.mobile.$document.delegate(":jqmData(role='listview')","listviewcreate",function(){var b=a(this),d=b.data("listview");if(!d.options.filter)return;var e=a("<form>",{"class":"ui-listview-filter ui-bar-"+d.options.filterTheme,role:"search"}),f=a("<input>",{placeholder:d.options.filterPlaceholder}).attr("data-"+a.mobile.ns+"type","search").jqmData("lastval","").bind("keyup change",function(){var e=a(this),f=this.value.toLowerCase(),g=null,h=e.jqmData("lastval")+"",i=!1,j="",k,l=d.options.filterCallback!==c;d._trigger("beforefilter","beforefilter",{input:this}),e.jqmData("lastval",f),l||f.length<h.length||f.indexOf(h)!==0?g=b.children():g=b.children(":not(.ui-screen-hidden)");if(f){for(var m=g.length-1;m>=0;m--)k=a(g[m]),j=a.mobile.getAttrFixed(k[0],"data-"+a.mobile.ns+"filtertext")||k.text(),k.is("li:jqmData(role=list-divider)")?(k.toggleClass("ui-filter-hidequeue",!i),i=!1):d.options.filterCallback(j,f,k)?k.toggleClass("ui-filter-hidequeue",!0):i=!0;g.filter(":not(.ui-filter-hidequeue)").toggleClass("ui-screen-hidden",!1),g.filter(".ui-filter-hidequeue").toggleClass("ui-screen-hidden",!0).toggleClass("ui-filter-hidequeue",!1)}else g.toggleClass("ui-screen-hidden",!1);d._refreshCorners()}).appendTo(e).textinput();d.options.inset&&e.addClass("ui-listview-filter-inset"),e.bind("submit",function(){return!1}).insertBefore(b)})}(a),function(a,d){a.widget("mobile.slider",a.mobile.widget,{widgetEventPrefix:"slide",options:{theme:null,trackTheme:null,disabled:!1,initSelector:"input[type='range'], :jqmData(type='range'), :jqmData(role='slider')",mini:!1},_create:function(){var e=this,f=this.element,g=a.mobile.getInheritedTheme(f,"c"),h=this.options.theme||g,i=this.options.trackTheme||g,j=f[0].nodeName.toLowerCase(),k=j==="select"?"ui-slider-switch":"",l=f.attr("id"),m=a("[for='"+l+"']"),n=m.attr("id")||l+"-label",o=m.attr("id",n),p=function(){return j==="input"?parseFloat(f.val()):f[0].selectedIndex},q=j==="input"?
-parseFloat(f.attr("min")):0,r=j==="input"?parseFloat(f.attr("max")):f.find("option").length-1,s=b.parseFloat(f.attr("step")||1),t=this.options.inline||a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"inline")===!0?" ui-slider-inline":"",u=this.options.mini||a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"min")?" ui-slider-mini":"",v=c.createElement("a"),w=a(v),x=c.createElement("div"),y=a(x),z=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"highlight")!==!1&&j!=="select"?function(){var b=c.createElement("div");return b.className="ui-slider-bg "+a.mobile.activeBtnClass+" ui-btn-corner-all",a(b).prependTo(y)}():!1,A;this._type=j,v.setAttribute("href","#"),x.setAttribute("role","application"),x.className=["ui-slider ",k," ui-btn-down-",i," ui-btn-corner-all",t,u].join(""),v.className="ui-slider-handle",x.appendChild(v),a(f).find("option").length&&a(f).find("option").text()===""&&a(x).addClass("ui-toggle-switch"),w.buttonMarkup({corners:!0,theme:h,shadow:!0}).attr({role:"slider","aria-valuemin":q,"aria-valuemax":r,"aria-valuenow":p(),"aria-valuetext":p(),title:p(),"aria-labelledby":n}),a.extend(this,{slider:y,handle:w,valuebg:z,dragging:!1,beforeStart:null,userModified:!1,mouseMoved:!1});if(j==="select"){var B=c.createElement("div");B.className="ui-slider-inneroffset";for(var C=0,D=x.childNodes.length;C<D;C++)B.appendChild(x.childNodes[C]);x.appendChild(B),w.addClass("ui-slider-handle-snapping"),A=f.find("option");for(var E=0,F=A.length;E<F;E++){var G=E?"a":"b",H=E?" "+a.mobile.activeBtnClass:" ui-btn-down-"+i,I=c.createElement("div"),J=c.createElement("span");J.className=["ui-slider-label ui-slider-label-",G,H," ui-btn-corner-all"].join(""),J.setAttribute("role","img"),J.appendChild(c.createTextNode(A[E].innerHTML)),a(J).html()?a(J).html(a(J).text()):a(J).html(),a(J).prependTo(y)}e._labels=a(".ui-slider-label",y)}o.addClass("ui-slider"),f.addClass(j==="input"?"ui-slider-input":"ui-slider-switch").change(function(){e.mouseMoved||e.refresh(p(),!0)}).keyup(function(){e.refresh(p(),!0,!0)}).blur(function(){e.refresh(p(),!0)}),this._preventDocumentDrag=function(a){if(e.dragging&&!e.options.disabled)return e.mouseMoved=!0,j==="select"&&w.removeClass("ui-slider-handle-snapping"),e.refresh(a),e.userModified=e.beforeStart!==f[0].selectedIndex,!1},this._on(a.mobile.$document,{vmousemove:this._preventDocumentDrag}),f.bind("vmouseup",a.proxy(e._checkedRefresh,e)),y.bind("vmousedown",function(a){return e.options.disabled?!1:(e.dragging=!0,e.userModified=!1,e.mouseMoved=!1,j==="select"&&(e.beforeStart=f[0].selectedIndex),e.refresh(a),e._trigger("start"),!1)}).bind("vclick",!1),this._sliderMouseUp=function(){if(e.dragging)return e.dragging=!1,j==="select"&&(w.addClass("ui-slider-handle-snapping"),e.mouseMoved?e.userModified?e.refresh(e.beforeStart===0?1:0):e.refresh(e.beforeStart):e.refresh(e.beforeStart===0?1:0)),e.mouseMoved=!1,e._trigger("stop"),!1},this._on(y.add(c),{vmouseup:this._sliderMouseUp}),y.insertAfter(f),j==="select"&&this.handle.bind({focus:function(){y.addClass(a.mobile.focusClass)},blur:function(){y.removeClass(a.mobile.focusClass)}}),this.handle.bind({vmousedown:function(){a(this).focus()},vclick:!1,keydown:function(b){var c=p();if(e.options.disabled)return;switch(b.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:b.preventDefault(),e._keySliding||(e._keySliding=!0,a(this).addClass("ui-state-active"))}switch(b.keyCode){case a.mobile.keyCode.HOME:e.refresh(q);break;case a.mobile.keyCode.END:e.refresh(r);break;case a.mobile.keyCode.PAGE_UP:case a.mobile.keyCode.UP:case a.mobile.keyCode.RIGHT:e.refresh(c+s);break;case a.mobile.keyCode.PAGE_DOWN:case a.mobile.keyCode.DOWN:case a.mobile.keyCode.LEFT:e.refresh(c-s)}},keyup:function(b){e._keySliding&&(e._keySliding=!1,a(this).removeClass("ui-state-active"))}}),this.refresh(d,d,!0)},_checkedRefresh:function(){this.value!=this._value()&&this.refresh(this._value())},_value:function(){return this._type==="input"?parseFloat(this.element.val()):this.element[0].selectedIndex},refresh:function(b,c,d){var e=!1,f;a(this.handle).parents().is(".ui-toggle-switch")&&(e=!0),(this.options.disabled||this.element.attr("disabled"))&&this.disable(),this.value=this._value();var g=this.element,h,i=g[0].nodeName.toLowerCase(),j=i==="input"?parseFloat(g.attr("min")):0,k=i==="input"?parseFloat(g.attr("max")):g.find("option").length-1,l=i==="input"&&parseFloat(g.attr("step"))>0?parseFloat(g.attr("step")):1;if(typeof b=="object"){var m=b,n=8;if(!this.dragging||m.pageX<this.slider.offset().left-n||m.pageX>this.slider.offset().left+this.slider.width()+n)return;h=Math.round((m.pageX-this.slider.offset().left)/this.slider.width()*100)}else b==null&&(b=i==="input"?parseFloat(g.val()||0):g[0].selectedIndex),h=(parseFloat(b)-j)/(k-j)*100;if(isNaN(h))return;h<0&&(h=0),h>100&&(h=100);var o=h/100*(k-j)+j,p=(o-j)%l,q=o-p;Math.abs(p)*2>=l&&(q+=p>0?l:-l),o=parseFloat(q.toFixed(5)),o<j&&(o=j),o>k&&(o=k),this.handle.css("left",h+"%"),this.handle.attr({"aria-valuenow":i==="input"?o:g.find("option").eq(o).attr("value"),"aria-valuetext":i==="input"?o:g.find("option").eq(o).getEncodedText(),title:i==="input"?o:g.find("option").eq(o).getEncodedText()}),e||this.valuebg&&this.valuebg.css("width",h+"%");if(e)f=a(this.handle).parents(".ui-slider"),a(this.handle).attr("aria-valuenow")==="on"?(f.children("span.ui-slider-label-a").show(),f.children("span.ui-slider-label-b").hide()):(f.children("span.ui-slider-label-b").show(),f.children("span.ui-slider-label-a").hide());else if(this._labels){var r=this.handle.width()/this.slider.width()*100,s=h&&r+(100-r)*h/100,t=h===100?0:Math.min(r+100-s,100);this._labels.each(function(){var b=a(this).is(".ui-slider-label-a");a(this).width((b?s:t)+"%")})}if(!d){var u=!1;i==="input"?(u=g.val()!==o,g.val(o)):(u=g[0].selectedIndex!==o,g[0].selectedIndex=o),!c&&u&&g.trigger("change")}},enable:function(){return this.element.attr("disabled",!1),this.slider.removeClass("ui-disabled").attr("aria-disabled",!1),this._setOption("disabled",!1)},disable:function(){return this.element.attr("disabled",!0),this.slider.addClass("ui-disabled").attr("aria-disabled",!0),this._setOption("disabled",!0)}}),a.mobile.$document.bind("pagecreate create",function(b){a.mobile.slider.prototype.enhanceWithin(b.target,!0)})}(a),function(a,d){a.widget("mobile.selectmenu",a.mobile.widget,{options:{theme:null,disabled:!1,icon:"arrow-d",iconpos:"right",inline:!1,corners:!0,shadow:!0,iconshadow:!0,overlayTheme:"a",hidePlaceholderMenuItems:!0,closeText:"Close",nativeMenu:!0,preventFocusZoom:/iPhone|iPad|iPod/.test(navigator.platform)&&navigator.userAgent.indexOf("AppleWebKit")>-1,initSelector:"select:not( :jqmData(role='slider') )",mini:!1},_button:function(){return a("<div/>")},_setDisabled:function(a){return this.element.attr("disabled",a),this.button.attr("aria-disabled",a),this._setOption("disabled",a)},_focusButton:function(){var a=this;setTimeout(function(){a.button.focus()},40)},_selectOptions:function(){return this.select.find("option")},_preExtension:function(){var b="";!~this.element[0].className.indexOf("ui-btn-left")||(b=" ui-btn-left"),!~this.element[0].className.indexOf("ui-btn-right")||(b=" ui-btn-right"),this.select=this.element.wrap("<div class='ui-select"+b+"'>"),this.selectID=this.select.attr("id"),this.label=a("label[for='"+this.selectID+"']").addClass("ui-select"),this.isMultiple=this.select[0].multiple,this.options.theme||(this.options.theme=a.mobile.getInheritedTheme(this.select,"c"))},_create:function(){this._preExtension(),this._trigger("beforeCreate"),this.button=this._button();var c=this,d=this.options,e=d.inline||a.mobile.getAttrFixed(this.select[0],"data-"+a.mobile.ns+"inline"),f=d.mini||a.mobile.getAttrFixed(this.select[0],"data-"+a.mobile.ns+"mini"),g=d.icon?d.iconpos||a.mobile.getAttrFixed(this.select[0],"data-"+a.mobile.ns+"iconpos"):!1,h=this.select[0].selectedIndex===-1?0:this.select[0].selectedIndex,i=this.button.insertBefore(this.select).buttonMarkup({theme:d.theme,icon:d.icon,iconpos:g,inline:e,corners:d.corners,shadow:d.shadow,iconshadow:d.iconshadow,mini:f});this.setButtonText(),d.nativeMenu&&b.opera&&b.opera.version&&i.addClass("ui-select-nativeonly"),this.isMultiple&&(this.buttonCount=a("<span>").addClass("ui-li-count ui-btn-up-c ui-btn-corner-all").hide().appendTo(i.addClass("ui-li-has-count"))),(d.disabled||this.element.attr("disabled"))&&this.disable(),this.select.change(function(){c.refresh()}),this.build()},build:function(){var b=this;this.select.appendTo(b.button).bind("vmousedown",function(){b.button.addClass(a.mobile.activeBtnClass)}).bind("focus",function(){b.button.addClass(a.mobile.focusClass)}).bind("blur",function(){b.button.removeClass(a.mobile.focusClass)}).bind("focus vmouseover",function(){b.button.trigger("vmouseover")}).bind("vmousemove",function(){b.button.removeClass(a.mobile.activeBtnClass)}).bind("change blur vmouseout",function(){b.button.trigger("vmouseout").removeClass(a.mobile.activeBtnClass)}).bind("change blur",function(){b.button.removeClass("ui-btn-down-"+b.options.theme)}),b.button.bind("vmousedown",function(){b.options.preventFocusZoom&&a.mobile.zoom.disable(!0)}).bind("mouseup",function(){b.options.preventFocusZoom&&setTimeout(function(){a.mobile.zoom.enable(!0)},0)})},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 b=this,d=this.selected(),e=this.placeholder,f=a(c.createElement("span"));this.button.find(".ui-btn-text").html(function(){return d.length?e=d.map(function(){return a(this).text()}).get().join(", "):e=b.placeholder,f.text(e).addClass(b.select.attr("class")).addClass(d.attr("class"))})},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(!0),this.button.addClass("ui-disabled")},enable:function(){this._setDisabled(!1),this.button.removeClass("ui-disabled")}}),a.mobile.$document.bind("pagecreate create",function(b){a.mobile.selectmenu.prototype.enhanceWithin(b.target,!0)})}(a),function(a,b){var d=function(b){var d=b.select,e=b.selectID,f=b.label,g=b.select.closest(".ui-page"),h=b._selectOptions(),i=b.isMultiple=b.select[0].multiple,j=e+"-button",k=e+"-menu",l=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>"),m=a("<div>",{"class":"ui-selectmenu"}).insertAfter(b.select).popup({theme:"a"}),n=a("<ul>",{"class":"ui-selectmenu-list",id:k,role:"listbox","aria-labelledby":j}).attr("data-"+a.mobile.ns+"theme",b.options.theme).appendTo(m),o=a("<div>",{"class":"ui-header ui-bar-"+b.options.theme}).prependTo(m),p=a("<h1>",{"class":"ui-title"}).appendTo(o),q,r,s;b.isMultiple&&(s=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(o).buttonMarkup()),a.extend(b,{select:b.select,selectID:e,buttonId:j,menuId:k,thisPage:g,menuPage:l,label:f,selectOptions:h,isMultiple:i,theme:b.options.theme,listbox:m,list:n,header:o,headerTitle:p,headerClose:s,menuPageContent:q,menuPageClose:r,placeholder:"",build:function(){var c=this;c.refresh(),c.select.attr("tabindex","-1").focus(function(){a(this).blur(),c.button.focus()}),c.button.bind("vclick keydown",function(b){if(b.type==="vclick"||b.keyCode&&(b.keyCode===a.mobile.keyCode.ENTER||b.keyCode===a.mobile.keyCode.SPACE))c.open(),b.preventDefault()}),c.list.attr("role","listbox").bind("focusin",function(b){a(b.target).attr("tabindex","0").trigger("vmouseover")}).bind("focusout",function(b){a(b.target).attr("tabindex","-1").trigger("vmouseout")}).delegate("li:not(.ui-disabled, .ui-li-divider)","click",function(d){var e=c.select[0].selectedIndex,f=c.list.find("li:not(.ui-li-divider)").index(this),g=c._selectOptions().eq(f)[0];g.selected=c.isMultiple?!g.selected:!0,c.isMultiple&&a(this).find(".ui-icon").toggleClass("ui-icon-checkbox-on",g.selected).toggleClass("ui-icon-checkbox-off",!g.selected),(c.isMultiple||e!==f)&&c.select.trigger("change"),c.isMultiple?c.list.find("li:not(.ui-li-divider)").eq(f).addClass("ui-btn-down-"+b.options.theme).find("a").first().focus():c.close(),d.preventDefault()}).keydown(function(c){var d=a(c.target),e=d.closest("li"),f,g;switch(c.keyCode){case 38:return f=e.prev().not(".ui-selectmenu-placeholder"),f.is(".ui-li-divider")&&(f=f.prev()),f.length&&(d.blur().attr("tabindex","-1"),f.addClass("ui-btn-down-"+b.options.theme).find("a").first().focus()),!1;case 40:return g=e.next(),g.is(".ui-li-divider")&&(g=g.next()),g.length&&(d.blur().attr("tabindex","-1"),g.addClass("ui-btn-down-"+b.options.theme).find("a").first().focus()),!1;case 13:case 32:return d.trigger("click"),!1}}),c.menuPage.bind("pagehide",function(){c.list.appendTo(c.listbox),c._focusButton(),a.mobile._bindPageRemove.call(c.thisPage)}),c.listbox.bind("popupafterclose",function(a){c.close()}),c.isMultiple&&c.headerClose.click(function(){if(c.menuType==="overlay")return c.close(),!1}),c.thisPage.addDependents(this.menuPage)},_isRebuildRequired:function(){var a=this.list.find("li"),b=this._selectOptions();return b.text()!==a.text()},selected:function(){return this._selectOptions().filter(":selected:not( :jqmData(placeholder='true') )")},refresh:function(b,c){var d=this,e=this.element,f=this.isMultiple,g;(b||this._isRebuildRequired())&&d._buildList(),g=this.selectedIndices(),d.setButtonText(),d.setButtonCount(),d.list.find("li:not(.ui-li-divider)").removeClass(a.mobile.activeBtnClass).attr("aria-selected",!1).each(function(b){if(a.inArray(b,g)>-1){var c=a(this);c.attr("aria-selected",!0),d.isMultiple?c.find(".ui-icon").removeClass("ui-icon-checkbox-off").addClass("ui-icon-checkbox-on"):c.is(".ui-selectmenu-placeholder")?c.next().addClass(a.mobile.activeBtnClass):c.addClass(a.mobile.activeBtnClass)}})},close:function(){if(this.options.disabled||!this.isOpen)return;var b=this;b.menuType==="page"?a.mobile.back():(b.listbox.popup("close"),b.list.appendTo(b.listbox),b._focusButton()),b.isOpen=!1},open:function(){function n(){var d=c.list.find("."+a.mobile.activeBtnClass+" a");d.length===0&&(d=c.list.find("li.ui-btn:not( :jqmData(placeholder='true') ) a")),d.first().focus().closest("li").addClass("ui-btn-down-"+b.options.theme)}if(this.options.disabled)return;var c=this,d=a.mobile.$window,e=c.list.parent(),f=e.outerHeight(),g=e.outerWidth(),h=a("."+a.mobile.activePageClass),i=d.scrollTop(),j=c.button.offset().top,k=d.height(),m=d.width();c.button.addClass(a.mobile.activeBtnClass),setTimeout(function(){c.button.removeClass(a.mobile.activeBtnClass)},300),f>k-80||!a.support.scrollTop?(c.menuPage.appendTo(a.mobile.pageContainer).page(),c.menuPageContent=l.find(".ui-content"),c.menuPageClose=l.find(".ui-header a"),c.thisPage.unbind("pagehide.remove"),i===0&&j>k&&c.thisPage.one("pagehide",function(){a(this).jqmData("lastScroll",j)}),c.menuPage.one("pageshow",function(){n(),c.isOpen=!0}),c.menuType="page",c.menuPageContent.append(c.list),c.menuPage.find("div .ui-title").text(c.label.text()),a.mobile.changePage(c.menuPage,{transition:a.mobile.defaultDialogTransition})):(c.menuType="overlay",c.listbox.one("popupafteropen",n).popup("open",{x:c.button.offset().left+c.button.outerWidth()/2,y:c.button.offset().top+c.button.outerHeight()/2}),c.isOpen=!0)},_buildList:function(){var b=this,d=this.options,e=this.placeholder,f=!0,g=[],h=[],i=b.isMultiple?"checkbox-off":"false";b.list.empty().filter(".ui-listview").listview("destroy");var j=b.select.find("option"),k=j.length,l=this.select[0],m="data-"+a.mobile.ns,n=m+"option-index",o=m+"icon",p=m+"role",q=m+"placeholder",r=c.createDocumentFragment(),s=!1,t;for(var u=0;u<k;u++,s=!1){var v=j[u],w=a(v),x=v.parentNode,y=w.text(),z=c.createElement("a"),A=[];z.setAttribute("href","#"),z.appendChild(c.createTextNode(y));if(x!==l&&x.nodeName.toLowerCase()==="optgroup"){var B=x.getAttribute("label");if(B!==t){var C=c.createElement("li");C.setAttribute(p,"list-divider"),C.setAttribute("role","option"),C.setAttribute("tabindex","-1"),C.appendChild(c.createTextNode(B)),r.appendChild(C),t=B}}f&&(!v.getAttribute("value")||y.length===0||w.jqmData("placeholder"))&&(f=!1,s=!0,v.setAttribute(q,!0),d.hidePlaceholderMenuItems&&A.push("ui-selectmenu-placeholder"),e||(e=b.placeholder=y));var D=c.createElement("li");v.disabled&&(A.push("ui-disabled"),D.setAttribute("aria-disabled",!0)),D.setAttribute(n,u),D.setAttribute(o,i),s&&D.setAttribute(q,!0),D.className=A.join(" "),D.setAttribute("role","option"),z.setAttribute("tabindex","-1"),D.appendChild(z),r.appendChild(D)}b.list[0].appendChild(r),!this.isMultiple&&!e.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.mobile.$document.bind("selectmenubeforecreate",function(b){var c=a(b.target).data("selectmenu");!c.options.nativeMenu&&c.element.parents(":jqmData(role='popup')").length===0&&d(c)})}(a),function(a,c){a.widget("mobile.fixedtoolbar",a.mobile.widget,{options:{visibleOnPageShow:!0,disablePageZoom:!0,transition:"slide",fullscreen:!1,tapToggle:!0,tapToggleBlacklist:"a, button, input, select, textarea, .ui-header-fixed, .ui-footer-fixed, .ui-popup",hideDuringFocus:"input, textarea, select",updatePagePadding:!0,trackPersistentToolbars:!0,supportBlacklist:function(){var a=b,c=navigator.userAgent,d=navigator.platform,e=c.match(/AppleWebKit\/([0-9]+)/),f=!!e&&e[1],g=c.match(/Fennec\/([0-9]+)/),h=!!g&&g[1],i=c.match(/Opera Mobi\/([0-9]+)/),j=!!i&&i[1];return(d.indexOf("iPhone")>-1||d.indexOf("iPad")>-1||d.indexOf("iPod")>-1)&&f&&f<534||a.operamini&&{}.toString.call(a.operamini)==="[object OperaMini]"||i&&j<7458||c.indexOf("Android")>-1&&f&&f<533||h&&h<6||"palmGetResource"in b&&f&&f<534||c.indexOf("MeeGo")>-1&&c.indexOf("NokiaBrowser/8.5.0")>-1?!0:!1},initSelector:":jqmData(position='dummy')"},_create:function(){var a=this,b=a.options,c=a.element,d=c.is(":jqmData(role='header')")?"header":"footer",e=c.closest(".ui-page");if(b.supportBlacklist()){a.destroy();return}c.addClass("ui-"+d+"-fixed"),b.fullscreen?(c.addClass("ui-"+d+"-fullscreen"),e.addClass("ui-page-"+d+"-fullscreen")):e.addClass("ui-page-"+d+"-fixed"),a._addTransitionClass(),a._bindPageEvents(),a._bindToggleHandlers()},_addTransitionClass:function(){var a=this.options.transition;a&&a!=="none"&&(a==="slide"&&(a=this.element.is(".ui-header")?"slidedown":"slideup"),this.element.addClass(a))},_bindPageEvents:function(){var b=this,c=b.options,d=b.element;d.closest(".ui-page").bind("pagebeforeshow",function(){c.disablePageZoom&&a.mobile.zoom.disable(!0),c.visibleOnPageShow||b.hide(!0)}).bind("webkitAnimationStart animationstart updatelayout",function(){var a=this;c.updatePagePadding&&b.updatePagePadding(a)}).bind("pageshow",function(){var d=this;b.updatePagePadding(d),c.updatePagePadding&&a.mobile.$window.bind("throttledresize."+b.widgetName,function(){b.updatePagePadding(d)})}).bind("pagebeforehide",function(d,e){c.disablePageZoom&&a.mobile.zoom.enable(!0),c.updatePagePadding&&a.mobile.$window.unbind("throttledresize."+b.widgetName);if(c.trackPersistentToolbars){var f=a(".ui-footer-fixed:jqmData(id)",this),g=a(".ui-header-fixed:jqmData(id)",this),h=f.length&&e.nextPage&&a(".ui-footer-fixed:jqmData(id='"+f.jqmData("id")+"')",e.nextPage)||a(),i=g.length&&e.nextPage&&a(".ui-header-fixed:jqmData(id='"+g.jqmData("id")+"')",e.nextPage)||a();if(h.length||i.length)h.add(i).appendTo(a.mobile.pageContainer),e.nextPage.one("pageshow",function(){h.add(i).appendTo(this)})}})},_visible:!0,updatePagePadding:function(b){var c=this.element,d=c.is(".ui-header");if(this.options.fullscreen)return;b=b||c.closest(".ui-page"),a(b).css("padding-"+(d?"top":"bottom"),c.outerHeight())},_useTransition:function(b){var c=a.mobile.$window,d=this.element,e=c.scrollTop(),f=d.height(),g=d.closest(".ui-page").height(),h=a.mobile.getScreenHeight(),i=d.is(":jqmData(role='header')")?"header":"footer";return!b&&(this.options.transition&&this.options.transition!=="none"&&(i==="header"&&!this.options.fullscreen&&e>f||i==="footer"&&!this.options.fullscreen&&e+h<g-f)||this.options.fullscreen)},show:function(a){var b="ui-fixed-hidden",c=this.element;this._useTransition(a)?c.removeClass("out "+b).addClass("in"):c.removeClass(b),this._visible=!0},hide:function(a){var b="ui-fixed-hidden",c=this.element,d="out"+(this.options.transition==="slide"?" reverse":"");this._useTransition(a)?c.addClass(d).removeClass("in").animationComplete(function(){c.addClass(b).removeClass(d)}):c.addClass(b).removeClass(d),this._visible=!1},toggle:function(){this[this._visible?"hide":"show"]()},_bindToggleHandlers:function(){var b=this,c=b.options,d=b.element;d.closest(".ui-page").bind("vclick",function(d){c.tapToggle&&!a(d.target).closest(c.tapToggleBlacklist).length&&b.toggle()}).bind("focusin focusout",function(d){screen.width<500&&a(d.target).is(c.hideDuringFocus)&&!a(d.target).closest(".ui-header-fixed, .ui-footer-fixed").length&&b[d.type==="focusin"&&b._visible?"hide":"show"]()})},destroy:function(){this.element.removeClass("ui-header-fixed ui-footer-fixed ui-header-fullscreen ui-footer-fullscreen in out fade slidedown slideup ui-fixed-hidden"),this.element.closest(".ui-page").removeClass("ui-page-header-fixed ui-page-footer-fixed ui-page-header-fullscreen ui-page-footer-fullscreen")}}),a.mobile.$document.bind("pagecreate create",function(b){a(b.target).jqmData("fullscreen")&&a(a.mobile.fixedtoolbar.prototype.options.initSelector,b.target).not(":jqmData(fullscreen)").jqmData("fullscreen",!0),a.mobile.fixedtoolbar.prototype.enhanceWithin(b.target)})}(a),function(a,b){function i(a){d=a.originalEvent,h=d.accelerationIncludingGravity,e=Math.abs(h.x),f=Math.abs(h.y),g=Math.abs(h.z),!b.orientation&&(e>7||(g>6&&f<8||g<8&&f>6)&&e>5)?c.enabled&&c.disable():c.enabled||c.enable()}if(!(/iPhone|iPad|iPod/.test(navigator.platform)&&navigator.userAgent.indexOf("AppleWebKit")>-1))return;var c=a.mobile.zoom,d,e,f,g,h;a.mobile.$window.bind("orientationchange.iosorientationfix",c.enable).bind("devicemotion.iosorientationfix",i)}(a,this),function(a,b,d){function h(){e.removeClass("ui-mobile-rendering")}var e=a("html"),f=a("head"),g=a.mobile.$window;a(b.document).trigger("mobileinit");if(!a.mobile.gradeA())return;a.mobile.ajaxBlacklist&&(a.mobile.ajaxEnabled=!1),e.addClass("ui-mobile ui-mobile-rendering"),setTimeout(h,5e3),a.extend(a.mobile,{addEventBlocker:function(){e.addClass("ui-blocker"),e.bind("touchstart touchend vclick mousedown mouseup click",function(){return!1})},removeEventBlocker:function(){e.removeClass("ui-blocker"),e.unbind("touchstart touchend vclick mousedown mouseup click")},initializePage:function(){var b=a(":jqmData(role='page'), :jqmData(role='dialog')"),d=a.mobile.path.parseLocation().hash.replace("#",""),e=c.getElementById(d);b.length||(b=a("body").wrapInner("<div data-"+a.mobile.ns+"role='page'></div>").children(0)),b.each(function(){var b=a(this);b[0].getAttribute("data-"+a.mobile.ns+"url")||b.attr("data-"+a.mobile.ns+"url",b.attr("id")||location.pathname+location.search)}),a.mobile.firstPage=b.first(),a.mobile.pageContainer=a.mobile.firstPage.parent().addClass("ui-mobile-viewport"),g.trigger("pagecontainercreate"),a.mobile.showPageLoadingMsg(),a.mobile.addEventBlocker(),h(),!a.mobile.hashListeningEnabled||!a.mobile.path.isHashValid(location.hash)||!a(e).is(':jqmData(role="page")')&&!a.mobile.path.isPath(d)&&d!==a.mobile.dialogHashKey?(a.mobile.path.isHashValid(location.hash)&&(a.mobile.urlHistory.initialDst=d.replace("#","")),a.mobile.changePage(a.mobile.firstPage,{transition:"none",reverse:!0,changeHash:!1,fromHashChange:!0})):g.trigger("hashchange",[!0])}}),a.mobile.navreadyDeferred.resolve(),a(function(){b.scrollTo(0,1),a.mobile.defaultHomeScroll=!a.support.scrollTop||a.mobile.$window.scrollTop()===1?0:1,a.fn.controlgroup&&a.mobile.$document.bind("pagecreate create",function(b){a(":jqmData(role='controlgroup')",b.target).jqmEnhanceable().controlgroup({excludeInvisible:!1})}),a.mobile.autoInitializePage&&a.mobile.initializePage(),g.load(a.mobile.silentScroll),a.support.cssPointerEvents||a.mobile.$document.delegate(".ui-disabled","vclick",function(a){a.preventDefault(),a.stopImmediatePropagation()})})}(a,this)});
+*/(function(a,b,c){typeof define=="function"&&define.amd?define(["jquery"],function(d){return c(d,a,b),d.mobile}):c(a.jQuery,a,b)})(this,document,function(a,b,c,d){(function(a,b,d){var e={};a.mobile=a.extend({},{version:"1.2.0",ns:"",subPageUrlKey:"ui-page",activePageClass:"ui-page-active",activeBtnClass:"ui-btn-active",focusClass:"ui-focus",ajaxEnabled:!0,hashListeningEnabled:!0,linkBindingEnabled:!0,defaultPageTransition:"fade",maxTransitionWidth:!1,minScrollBack:250,touchOverflowEnabled:!1,defaultDialogTransition:"pop",pageLoadErrorMessage:"Error Loading Page",pageLoadErrorMessageTheme:"e",phonegapNavigationEnabled:!1,autoInitializePage:!0,pushStateEnabled:!0,ignoreContentEnabled:!1,orientationChangeEnabled:!0,buttonMarkup:{hoverDelay:200},$window:a(b),$document:a(c),getAttrFixed:function(a,b){var c=a.getAttribute(b);return c==="true"?!0:c==="false"?!1:c===null?d:c},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(c){a.type(c)!=="number"&&(c=a.mobile.defaultHomeScroll),a.event.special.scrollstart.enabled=!1,setTimeout(function(){b.scrollTo(0,c),a.mobile.$document.trigger("silentscroll",{x:0,y:c})},20),setTimeout(function(){a.event.special.scrollstart.enabled=!0},150)},nsNormalizeDict:e,nsNormalize:function(b){if(!b)return;return e[b]||(e[b]=a.camelCase(a.mobile.ns+b))},getInheritedTheme:function(a,b){var c=a[0],d="",e=/ui-(bar|body|overlay)-([a-z])\b/,f,g;while(c){f=c.className||"";if(f&&(g=e.exec(f))&&(d=g[2]))break;c=c.parentNode}return d||b||"a"},closestPageData:function(a){return a.closest(':jqmData(role="page"), :jqmData(role="dialog")').data("page")},enhanceable:function(a){return this.haveParents(a,"enhance")},hijackable:function(a){return this.haveParents(a,"ajax")},haveParents:function(b,c){if(!a.mobile.ignoreContentEnabled)return b;var d=b.length,e=a(),f,g,h;for(var i=0;i<d;i++){g=b.eq(i),h=!1,f=b[i];while(f){var j=f.getAttribute?f.getAttribute("data-"+a.mobile.ns+c):"";if(j==="false"){h=!0;break}f=f.parentNode}h||(e=e.add(g))}return e},getScreenHeight:function(){return b.innerHeight||a.mobile.$window.height()}},a.mobile),a.fn.jqmData=function(b,c){var e;return typeof b!="undefined"&&(b&&(b=a.mobile.nsNormalize(b)),arguments.length<2||c===d?e=this.data(b):e=this.data(b,c)),e},a.jqmData=function(b,c,d){var e;return typeof c!="undefined"&&(e=a.data(b,c?a.mobile.nsNormalize(c):c,d)),e},a.fn.jqmRemoveData=function(b){return this.removeData(a.mobile.nsNormalize(b))},a.jqmRemoveData=function(b,c){return a.removeData(b,a.mobile.nsNormalize(c))},a.fn.removeWithDependents=function(){a.removeWithDependents(this)},a.removeWithDependents=function(b){var c=a(b);(c.jqmData("dependents")||a()).remove(),c.remove()},a.fn.addDependents=function(b){a.addDependents(a(this),b)},a.addDependents=function(b,c){var d=a(b).jqmData("dependents")||a();a(b).jqmData("dependents",a.merge(d,c))},a.fn.getEncodedText=function(){return a("<div/>").text(a(this).text()).html()},a.fn.jqmEnhanceable=function(){return a.mobile.enhanceable(this)},a.fn.jqmHijackable=function(){return a.mobile.hijackable(this)};var f=a.find,g=/:jqmData\(([^)]*)\)/g;a.find=function(b,c,d,e){return b=b.replace(g,"[data-"+(a.mobile.ns||"")+"$1]"),f.call(this,b,c,d,e)},a.extend(a.find,f),a.find.matches=function(b,c){return a.find(b,null,null,c)},a.find.matchesSelector=function(b,c){return a.find(c,null,null,[b]).length>0},a.extend({creatorDict:{},delegateSelfInitWithSingleSelector:function(b,c){if(typeof b!="function")return!1;var d=b.prototype.options.initSelector,e=/:jqmData\(role='[A-z\-]+'\)$/;if(e.test(d)){var f=d.indexOf("'")+1,g=d.lastIndexOf("'"),h=d.substring(f,g);if(!a.creatorDict.hasOwnProperty(h))return a.creatorDict[h]={},a.creatorDict[h].target=b,c===!0&&(a.creatorDict[h].useKeepNative=c),!0}return!1}}),a(c).bind("pagecreate create",function(b){var c="*[data-"+a.mobile.ns+"role]";a(c,b.target).each(function(){dataRoleValue=this.getAttribute("data-role"),matchedObj=a.creatorDict[dataRoleValue],matchedObj&&matchedObj.target.prototype.enhance(this,matchedObj.useKeepNative)})})})(a,this),function(a,b){var c=0,d=Array.prototype.slice,e=a.cleanData;a.cleanData=function(b){for(var c=0,d;(d=b[c])!=null;c++)try{a(d).triggerHandler("remove")}catch(f){}e(b)},a.widget=function(b,c,d){var e,f,g,h,i=b.split(".")[0];b=b.split(".")[1],e=i+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][e]=function(b){return!!a.data(b,e)},a[i]=a[i]||{},f=a[i][b],g=a[i][b]=function(a,b){if(!this._createWidget)return new g(a,b);arguments.length&&this._createWidget(a,b)},a.extend(g,f,{version:d.version,_proto:a.extend({},d),_childConstructors:[]}),h=new c,h.options=a.widget.extend({},h.options),a.each(d,function(b,e){a.isFunction(e)&&(d[b]=function(){var a=function(){return c.prototype[b].apply(this,arguments)},d=function(a){return c.prototype[b].apply(this,a)};return function(){var b=this._super,c=this._superApply,f;return this._super=a,this._superApply=d,f=e.apply(this,arguments),this._super=b,this._superApply=c,f}}())}),g.prototype=a.widget.extend(h,{widgetEventPrefix:b},d,{constructor:g,namespace:i,widgetName:b,widgetBaseClass:e,widgetFullName:e}),f?(a.each(f._childConstructors,function(b,c){var d=c.prototype;a.widget(d.namespace+"."+d.widgetName,g,c._proto)}),delete f._childConstructors):c._childConstructors.push(g),a.widget.bridge(b,g)},a.widget.extend=function(c){var e=d.call(arguments,1),f=0,g=e.length,h,i;for(;f<g;f++)for(h in e[f])i=e[f][h],e[f].hasOwnProperty(h)&&i!==b&&(c[h]=a.isPlainObject(i)?a.widget.extend({},c[h],i):i);return c},a.widget.bridge=function(c,e){var f=e.prototype.widgetFullName;a.fn[c]=function(g){var h=typeof g=="string",i=d.call(arguments,1),j=this;return g=!h&&i.length?a.widget.extend.apply(null,[g].concat(i)):g,h?this.each(function(){var d,e=a.data(this,f);if(!e)return a.error("cannot call methods on "+c+" prior to initialization; "+"attempted to call method '"+g+"'");if(!a.isFunction(e[g])||g.charAt(0)==="_")return a.error("no such method '"+g+"' for "+c+" widget instance");d=e[g].apply(e,i);if(d!==e&&d!==b)return j=d&&d.jquery?j.pushStack(d.get()):d,!1}):this.each(function(){var b=a.data(this,f);b?b.option(g||{})._init():new e(g,this)}),j}},a.Widget=function(a,b){},a.Widget._childConstructors=[],a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(b,d){d=a(d||this.defaultElement||this)[0],this.element=a(d),this.uuid=c++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=a.widget.extend({},this.options,this._getCreateOptions(),b),this.bindings=a(),this.hoverable=a(),this.focusable=a(),d!==this&&(a.data(d,this.widgetName,this),a.data(d,this.widgetFullName,this),this._on({remove:"destroy"}),this.document=a(d.style?d.ownerDocument:d.document||d),this.window=a(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:a.noop,_getCreateEventData:a.noop,_create:a.noop,_init:a.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(a.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:a.noop,widget:function(){return this.element},option:function(c,d){var e=c,f,g,h;if(arguments.length===0)return a.widget.extend({},this.options);if(typeof c=="string"){e={},f=c.split("."),c=f.shift();if(f.length){g=e[c]=a.widget.extend({},this.options[c]);for(h=0;h<f.length-1;h++)g[f[h]]=g[f[h]]||{},g=g[f[h]];c=f.pop();if(d===b)return g[c]===b?null:g[c];g[c]=d}else{if(d===b)return this.options[c]===b?null:this.options[c];e[c]=d}}return this._setOptions(e),this},_setOptions:function(a){var b;for(b in a)this._setOption(b,a[b]);return this},_setOption:function(a,b){return this.options[a]=b,a==="disabled"&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!b).attr("aria-disabled",b),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(b,c){c?(b=a(b),this.bindings=this.bindings.add(b)):(c=b,b=this.element);var d=this;a.each(c,function(c,e){function f(){if(d.options.disabled===!0||a(this).hasClass("ui-state-disabled"))return;return(typeof e=="string"?d[e]:e).apply(d,arguments)}typeof e!="string"&&(f.guid=e.guid=e.guid||f.guid||a.guid++);var g=c.match(/^(\w+)\s*(.*)$/),h=g[1]+d.eventNamespace,i=g[2];i?d.widget().delegate(i,h,f):b.bind(h,f)})},_off:function(a,b){b=(b||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,a.unbind(b).undelegate(b)},_delay:function(a,b){function c(){return(typeof a=="string"?d[a]:a).apply(d,arguments)}var d=this;return setTimeout(c,b||0)},_hoverable:function(b){this.hoverable=this.hoverable.add(b),this._on(b,{mouseenter:function(b){a(b.currentTarget).addClass("ui-state-hover")},mouseleave:function(b){a(b.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(b){this.focusable=this.focusable.add(b),this._on(b,{focusin:function(b){a(b.currentTarget).addClass("ui-state-focus")},focusout:function(b){a(b.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.apply(this.element[0],[c].concat(d))===!1||c.isDefaultPrevented())}},a.each({show:"fadeIn",hide:"fadeOut"},function(b,c){a.Widget.prototype["_"+b]=function(d,e,f){typeof e=="string"&&(e={effect:e});var g,h=e?e===!0||typeof e=="number"?c:e.effect||c:b;e=e||{},typeof e=="number"&&(e={duration:e}),g=!a.isEmptyObject(e),e.complete=f,e.delay&&d.delay(e.delay),g&&a.effects&&(a.effects.effect[h]||a.uiBackCompat!==!1&&a.effects[h])?d[b](e):h!==b&&d[h]?d[h](e.duration,e.easing,f):d.queue(function(c){a(this)[b](),f&&f.call(d[0]),c()})}}),a.uiBackCompat!==!1&&(a.Widget.prototype._getCreateOptions=function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]})}(a),function(a,b){a.widget("mobile.widget",{_createWidget:function(){a.Widget.prototype._createWidget.apply(this,arguments),this._trigger("init")},_getCreateOptions:function(){var c=this.element,d={};return a.each(this.options,function(a){var e=c.jqmData(a.replace(/[A-Z]/g,function(a){return"-"+a.toLowerCase()}));e!==b&&(d[a]=e)}),d},enhanceWithin:function(b,c){this.enhance(a(this.options.initSelector,a(b)),c)},enhance:function(b,c){var d,e,f=a(b),g=this;f=a.mobile.enhanceable(f),c&&f.length&&(d=a.mobile.closestPageData(f),e=d&&d.keepNativeSelector()||"",f=f.not(e)),f[this.widgetName]()},raise:function(a){throw"Widget ["+this.widgetName+"]: "+a}})}(a),function(a,b){a.extend(a.mobile,{loadingMessageTextVisible:d,loadingMessageTheme:d,loadingMessage:d,showPageLoadingMsg:function(b,c,d){a.mobile.loading("show",b,c,d)},hidePageLoadingMsg:function(){a.mobile.loading("hide")},loading:function(){this.loaderWidget.loader.apply(this.loaderWidget,arguments)}});var c="ui-loader",e=a("html"),f=a.mobile.$window;a.widget("mobile.loader",{options:{theme:"a",textVisible:!1,html:"",text:"loading"},defaultHtml:"<div class='"+c+"'>"+"<span class='ui-icon ui-icon-loading'></span>"+"<h1></h1>"+"</div>",fakeFixLoader:function(){var b=a("."+a.mobile.activeBtnClass).first();this.element.css({top:a.support.scrollTop&&f.scrollTop()+f.height()/2||b.length&&b.offset().top||100})},checkLoaderPosition:function(){var b=this.element.offset(),c=f.scrollTop(),d=a.mobile.getScreenHeight();if(b.top<c||b.top-c>d)this.element.addClass("ui-loader-fakefix"),this.fakeFixLoader(),f.unbind("scroll",this.checkLoaderPosition).bind("scroll",this.fakeFixLoader)},resetHtml:function(){this.element.html(a(this.defaultHtml).html())},show:function(b,g,h){var i,j,k,l;this.resetHtml(),a.type(b)==="object"?(l=a.extend({},this.options,b),b=l.theme||a.mobile.loadingMessageTheme):(l=this.options,b=b||a.mobile.loadingMessageTheme||l.theme),j=g||a.mobile.loadingMessage||l.text,e.addClass("ui-loading");if(a.mobile.loadingMessage!==!1||l.html)a.mobile.loadingMessageTextVisible!==d?i=a.mobile.loadingMessageTextVisible:i=l.textVisible,this.element.attr("class",c+" ui-corner-all ui-body-"+b+" ui-loader-"+(i||g||b.text?"verbose":"default")+(l.textonly||h?" ui-loader-textonly":"")),l.html?this.element.html(l.html):this.element.find("h1").text(j),this.element.appendTo(a.mobile.pageContainer),this.checkLoaderPosition(),f.bind("scroll",a.proxy(this.checkLoaderPosition,this))},hide:function(){e.removeClass("ui-loading"),a.mobile.loadingMessage&&this.element.removeClass("ui-loader-fakefix"),a.mobile.$window.unbind("scroll",a.proxy(this.fakeFixLoader,this)),a.mobile.$window.unbind("scroll",a.proxy(this.checkLoaderPosition,this))}}),f.bind("pagecontainercreate",function(){a.mobile.loaderWidget=a.mobile.loaderWidget||a(a.mobile.loader.prototype.defaultHtml).loader()})}(a,this),function(a,b,c,d){function x(a){while(a&&typeof a.originalEvent!="undefined")a=a.originalEvent;return a}function y(b,c){var e=b.type,f,g,i,k,l,m,n,o,p;b=a.Event(b),b.type=c,f=b.originalEvent,g=a.event.props,e.search(/^(mouse|click)/)>-1&&(g=j);if(f)for(n=g.length,k;n;)k=g[--n],b[k]=f[k];e.search(/mouse(down|up)|click/)>-1&&!b.which&&(b.which=1);if(e.search(/^touch/)!==-1){i=x(f),e=i.touches,l=i.changedTouches,m=e&&e.length?e[0]:l&&l.length?l[0]:d;if(m)for(o=0,p=h.length;o<p;o++)k=h[o],b[k]=m[k]}return b}function z(b){var c={},d,f;while(b){d=a.data(b,e);for(f in d)d[f]&&(c[f]=c.hasVirtualBinding=!0);b=b.parentNode}return c}function A(b,c){var d;while(b){d=a.data(b,e);if(d&&(!c||d[c]))return b;b=b.parentNode}return null}function B(){r=!1}function C(){r=!0}function D(){v=0,p.length=0,q=!1,C()}function E(){B()}function F(){G(),l=setTimeout(function(){l=0,D()},a.vmouse.resetTimerDuration)}function G(){l&&(clearTimeout(l),l=0)}function H(b,c,d){var e;if(d&&d[b]||!d&&A(c.target,b))e=y(c,b),a(c.target).trigger(e);return e}function I(b){var c=a.data(b.target,f);if(a.support.touch===!0&&c===d)return;if(!q&&(!v||v!==c)){var e=H("v"+b.type,b);e&&(e.isDefaultPrevented()&&b.preventDefault(),e.isPropagationStopped()&&b.stopPropagation(),e.isImmediatePropagationStopped()&&b.stopImmediatePropagation())}}function J(b){var c=x(b).touches,d,e;if(c&&c.length===1){d=b.target,e=z(d);if(e.hasVirtualBinding){v=u++,a.data(d,f,v),G(),E(),o=!1;var g=x(b).touches[0];m=g.pageX,n=g.pageY,H("vmouseover",b,e),H("vmousedown",b,e)}}}function K(a){if(r)return;o||H("vmousecancel",a,z(a.target)),o=!0,F()}function L(b){if(r)return;var c=x(b).touches[0],d=o,e=a.vmouse.moveDistanceThreshold,f=z(b.target);o=o||Math.abs(c.pageX-m)>e||Math.abs(c.pageY-n)>e,o&&!d&&H("vmousecancel",b,f),H("vmousemove",b,f),F()}function M(a){if(r)return;C();var b=z(a.target),c;H("vmouseup",a,b);if(!o){var d=H("vclick",a,b);d&&d.isDefaultPrevented()&&(c=x(a).changedTouches[0],p.push({touchID:v,target:a.target,x:c.clientX,y:c.clientY}),q=!0)}H("vmouseout",a,b),o=!1,F()}function N(b){var c=a.data(b,e),d;if(c)for(d in c)if(c[d])return!0;return!1}function O(){}function P(b){var c=b.substr(1);return{setup:function(d,f){N(this)||a.data(this,e,{});var g=a.data(this,e);g[b]=!0,k[b]=(k[b]||0)+1,k[b]===1&&t.bind(c,I),a(this).bind(c,O),s&&(k.touchstart=(k.touchstart||0)+1,k.touchstart===1&&t.bind("touchstart",J).bind("touchend",M).bind("touchmove",L).bind("scroll",K))},teardown:function(d,f){--k[b],k[b]||t.unbind(c,I),s&&(--k.touchstart,k.touchstart||t.unbind("touchstart",J).unbind("touchmove",L).unbind("touchend",M).unbind("scroll",K));var g=a(this),h=a.data(this,e);h&&(h[b]=!1),g.unbind(c,O),N(this)||g.removeData(e)}}}var e="virtualMouseBindings",f="virtualTouchID",g="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),h="clientX clientY pageX pageY screenX screenY".split(" "),i=a.event.mouseHooks?a.event.mouseHooks.props:[],j=a.event.props.concat(i),k={},l=0,m=0,n=0,o=!1,p=[],q=!1,r=!1,s="addEventListener"in c,t=a.mobile.$document,u=1,v=0,w;a.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(var Q=0;Q<g.length;Q++)a.event.special[g[Q]]=P(g[Q]);s&&c.addEventListener("click",function(b){var c=p.length,d=b.target,e,g,h,i,j,k;if(c){e=b.clientX,g=b.clientY,w=a.vmouse.clickDistanceThreshold,h=d;while(h){for(i=0;i<c;i++){j=p[i],k=0;if(h===d&&d===j.target&&Math.abs(j.x-e)<w&&Math.abs(j.y-g)<w||a.data(h,f)===j.touchID){b.preventDefault(),b.stopPropagation();return}}h=h.parentNode}}},!0)}(a,b,c),function(a,b){var d={touch:"ontouchend"in c};a.mobile=a.mobile||{},a.mobile.support=a.mobile.support||{},a.extend(a.support,d),a.extend(a.mobile.support,d)}(a),function(a,b,c){function i(b,d,e){var f=e.type;e.type=d,e.liveFired=c,a.event.handle.call(b,e),e.type=f}a.each("touchstart touchmove touchend 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&&(a.attrFn[c]=!0)});var d=a.mobile.support.touch,e="touchmove scroll",f=d?"touchstart":"mousedown",g=d?"touchend":"mouseup",h=d?"touchmove":"mousemove";a.event.special.scrollstart={enabled:!0,setup:function(){function g(a,c){d=c,i(b,d?"scrollstart":"scrollstop",a)}var b=this,c=a(b),d,f;c.bind(e,function(b){if(!a.event.special.scrollstart.enabled)return;d||g(b,!0),clearTimeout(f),f=setTimeout(function(){g(b,!1)},50)})}},a.event.special.tap={tapholdThreshold:750,setup:function(){var b=this,c=a(b);c.bind("vmousedown",function(d){function h(){clearTimeout(g)}function j(){h(),c.unbind("vclick",k).unbind("vmouseup",h),a.mobile.$document.unbind("vmousecancel",j)}function k(a){j(),e===a.target&&i(b,"tap",a)}if(d.which&&d.which!==1)return!1;var e=d.target,f=d.originalEvent,g;c.bind("vmouseup",h).bind("vclick",k),a.mobile.$document.bind("vmousecancel",j),g=setTimeout(function(){i(b,"taphold",a.Event("taphold",{target:e}))},a.event.special.tap.tapholdThreshold)})}},a.event.special.swipe={scrollSupressionThreshold:30,durationThreshold:1e3,horizontalDistanceThreshold:30,verticalDistanceThreshold:75,setup:function(){var b=this,d=a(b);d.bind(f,function(b){function j(b){if(!f)return;var c=b.originalEvent.touches?b.originalEvent.touches[0]:b;i={time:(new Date).getTime(),coords:[c.pageX,c.pageY]},Math.abs(f.coords[0]-i.coords[0])>a.event.special.swipe.scrollSupressionThreshold&&b.preventDefault()}var e=b.originalEvent.touches?b.originalEvent.touches[0]:b,f={time:(new Date).getTime(),coords:[e.pageX,e.pageY],origin:a(b.target)},i;d.bind(h,j).one(g,function(b){d.unbind(h,j),f&&i&&i.time-f.time<a.event.special.swipe.durationThreshold&&Math.abs(f.coords[0]-i.coords[0])>a.event.special.swipe.horizontalDistanceThreshold&&Math.abs(f.coords[1]-i.coords[1])<a.event.special.swipe.verticalDistanceThreshold&&f.origin.trigger("swipe").trigger(f.coords[0]>i.coords[0]?"swipeleft":"swiperight"),f=i=c})})}},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)}}})}(a,this),function(a,c){a.extend(a.support,{orientation:"orientation"in b&&"onorientationchange"in b})}(a),function(a){a.event.special.throttledresize={setup:function(){a(this).bind("resize",c)},teardown:function(){a(this).unbind("resize",c)}};var b=250,c=function(){f=(new Date).getTime(),g=f-d,g>=b?(d=f,a(this).trigger("throttledresize")):(e&&clearTimeout(e),e=setTimeout(c,b-g))},d=0,e,f,g}(a),function(a,b){function o(){var a=g();a!==h&&(h=a,d.trigger(e))}var d=a.mobile.$window,e="orientationchange",f,g,h,i,j,k={0:!0,180:!0};if(a.support.orientation){var l=b.innerWidth||a.mobile.$window.width(),m=b.innerHeight||a.mobile.$window.height(),n=50;i=l>m&&l-m>n,j=k[b.orientation];if(i&&j||!i&&!j)k={"-90":!0,90:!0}}a.event.special.orientationchange=a.extend({},a.event.special.orientationchange,{setup:function(){if(a.support.orientation&&a.event.special.orientationchange.disabled===!1)return!1;h=g(),d.bind("throttledresize",o)},teardown:function(){if(a.support.orientation&&!a.event.special.orientationchange.disabled)return!1;d.unbind("throttledresize",o)},add:function(a){var b=a.handler;a.handler=function(a){return a.orientation=g(),b.apply(this,arguments)}}}),a.event.special.orientationchange.orientation=g=function(){var d=!0,e=c.documentElement;return a.support.orientation?d=k[b.orientation]:d=e&&e.clientWidth/e.clientHeight<1.1,d?"portrait":"landscape"},a.fn[e]=function(a){return a?this.bind(e,a):this.trigger(e)},a.attrFn&&(a.attrFn[e]=!0)}(a,this),function(a,b){var d=a.mobile.$window,e=a("html");a.mobile.media=function(){var b={},d=a("<div id='jquery-mediatest'></div>"),f=a("<body>").append(d);return function(a){if(!(a in b)){var g=c.createElement("style"),h="@media "+a+" { #jquery-mediatest { position:absolute; } }";g.type="text/css",g.styleSheet?g.styleSheet.cssText=h:g.appendChild(c.createTextNode(h)),e.prepend(f).prepend(g),b[a]=d.css("position")==="absolute",f.add(g).remove()}return b[a]}}()}(a),function(a,d){function e(a){var b=a.charAt(0).toUpperCase()+a.substr(1),c=(a+" "+h.join(b+" ")+b).split(" ");for(var e in c)if(g[c[e]]!==d)return!0}function m(a,b,d){var e=c.createElement("div"),f=function(a){return a.charAt(0).toUpperCase()+a.substr(1)},g=function(a){return"-"+a.charAt(0).toLowerCase()+a.substr(1)+"-"},i=function(c){var d=g(c)+a+": "+b+";",h=f(c),i=h+f(a);e.setAttribute("style",d),!e.style[i]||(k=!0)},j=d?[d]:h,k;for(var l=0;l<j.length;l++)i(j[l]);return!!k}function n(){var b="transform-3d";return m("perspective","10px","moz")||a.mobile.media("(-"+h.join("-"+b+"),(-")+"-"+b+"),("+b+")")}function o(){var b=location.protocol+"//"+location.host+location.pathname+"ui-dir/",c=a("head base"),d=null,e="",g,h;return c.length?e=c.attr("href"):c=d=a("<base>",{href:b}).appendTo("head"),g=a("<a href='testurl' />").prependTo(f),h=g[0].href,c[0].href=e||location.pathname,d&&d.remove(),h.indexOf(b)===0}function p(){var a=c.createElement("x"),d=c.documentElement,e=b.getComputedStyle,f;return"pointerEvents"in a.style?(a.style.pointerEvents="auto",a.style.pointerEvents="x",d.appendChild(a),f=e&&e(a,"").pointerEvents==="auto",d.removeChild(a),!!f):!1}function q(){var a=c.createElement("div");return typeof a.getBoundingClientRect!="undefined"}var f=a("<body>").prependTo("html"),g=f[0].style,h=["Webkit","Moz","O"],i="palmGetResource"in b,j=b.opera,k=b.operamini&&{}.toString.call(b.operamini)==="[object OperaMini]",l=b.blackberry&&!e("-webkit-transform");a.extend(a.mobile,{browser:{}}),a.mobile.browser.ie=function(){var a=3,b=c.createElement("div"),d=b.all||[];do b.innerHTML="<!--[if gt IE "+ ++a+"]><br><![endif]-->";while(d[0]);return a>4?a:!a}(),a.extend(a.support,{cssTransitions:"WebKitTransitionEvent"in b||m("transition","height 100ms linear")&&!j,pushState:"pushState"in history&&"replaceState"in history,mediaquery:a.mobile.media("only all"),cssPseudoElement:!!e("content"),touchOverflow:!!e("overflowScrolling"),cssTransform3d:n(),boxShadow:!!e("boxShadow")&&!l,scrollTop:("pageXOffset"in b||"scrollTop"in c.documentElement||"scrollTop"in f[0])&&!i&&!k,dynamicBaseTag:o(),cssPointerEvents:p(),boundingRect:q()}),f.remove();var r=function(){var a=b.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.gradeA=function(){return(a.support.mediaquery||a.mobile.browser.ie&&a.mobile.browser.ie>=7)&&(a.support.boundingRect||a.fn.jquery.match(/1\.[0-7+]\.[0-9+]?/)!==null)},a.mobile.ajaxBlacklist=b.blackberry&&!b.WebKitPoint||k||r,r&&a(function(){a("head link[rel='stylesheet']").attr("rel","alternate stylesheet").attr("rel","stylesheet")}),a.support.boxShadow||a("html").addClass("ui-mobile-nosupport-boxshadow")}(a),function(a,b){a.widget("mobile.page",a.mobile.widget,{options:{theme:"c",domCache:!1,keepNativeDefault:":jqmData(role='none'), :jqmData(role='nojs')"},_create:function(){var a=this;if(a._trigger("beforecreate")===!1)return!1;a.element.addClass("ui-page ui-body-"+a.options.theme).bind("pagebeforehide",function(){a.removeContainerBackground()}).bind("pagebeforeshow",function(){a.setContainerBackground()})},refresh:function(){a(this.element).children(".ui-content").trigger("updatelayout",["external"])},setToolbar:function(){a(this.element).trigger("pagebeforeshow")},removeContainerBackground:function(){a.mobile.pageContainer.removeClass("ui-overlay-"+a.mobile.getInheritedTheme(this.element.parent()))},setContainerBackground:function(b){this.options.theme&&a.mobile.pageContainer.addClass("ui-overlay-"+(b||this.options.theme))},addBackBtn:function(b){var c=a(".ui-page-active .ui-footer");b=="header"&&(c=a(".ui-page-active .ui-header")),backBtn=a("<a href='#' class='ui-btn-back' data-"+a.mobile.ns+"rel='back'></a>").buttonMarkup({icon:"header-back-btn",theme:"s"}),c.find(".ui-btn-back").length||backBtn.prependTo(c)},keepNativeSelector:function(){var b=this.options,c=b.keepNative&&a.trim(b.keepNative);return c&&b.keepNative!==b.keepNativeDefault?[b.keepNative,b.keepNativeDefault].join(", "):b.keepNativeDefault}})}(a),function(a,b,d){function k(a){return a=a||location.href,"#"+a.replace(/^[^#]*#?(.*)$/,"$1")}var e="hashchange",f=c,g,h=a.event.special,i=f.documentMode,j="on"+e in b&&(i===d||i>7);a.fn[e]=function(a){return a?this.bind(e,a):this.trigger(e)},a.fn[e].delay=50,h[e]=a.extend(h[e],{setup:function(){if(j)return!1;a(g.start)},teardown:function(){if(j)return!1;a(g.stop)}}),g=function(){function n(){var c=k(),d=m(h);c!==h?(l(h=c,d),a(b).trigger(e)):d!==h&&(location.href=location.href.replace(/#.*/,"")+d),g=setTimeout(n,a.fn[e].delay)}var c={},g,h=k(),i=function(a){return a},l=i,m=i;return c.start=function(){g||n()},c.stop=function(){g&&clearTimeout(g),g=d},a.browser.msie&&!j&&function(){var b,d;c.start=function(){b||(d=a.fn[e].src,d=d&&d+k(),b=a('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){d||l(k()),n()}).attr("src",d||"javascript:0").insertAfter("body")[0].contentWindow,f.onpropertychange=function(){try{event.propertyName==="title"&&(b.document.title=f.title)}catch(a){}})},c.stop=i,m=function(){return k(b.location.href)},l=function(c,d){var g=b.document,h=a.fn[e].domain;c!==d&&(g.title=f.title,g.open(),h&&g.write('<script>document.domain="'+h+'"</script>'),g.close(),b.location.hash=c)}}(),c}()}(a,this),function(a,b,c){var d=function(d){return d===c&&(d=!0),function(c,e,f,g){var h=new a.Deferred,i=e?" reverse":"",j=a.mobile.urlHistory.getActive(),k=j.lastScroll||a.mobile.defaultHomeScroll,l=a.mobile.getScreenHeight(),m=a.mobile.maxTransitionWidth!==!1&&a.mobile.$window.width()>a.mobile.maxTransitionWidth,n=!a.support.cssTransitions||m||!c||c==="none"||Math.max(a.mobile.$window.scrollTop(),k)>a.mobile.getMaxScrollForTransition(),o=" ui-page-pre-in",p=function(){a.mobile.pageContainer.toggleClass("ui-mobile-viewport-transitioning viewport-"+c)},q=function(){var c=a.mobile.$window.scrollTop();if(c===k||a.mobile.defaultHomeScroll===k&&c==0)return;a.event.special.scrollstart.enabled=!1,b.scrollTo(0,k),setTimeout(function(){a.event.special.scrollstart.enabled=!0},150)},r=function(){g.removeClass(a.mobile.activePageClass+" out in reverse "+c).height("")},s=function(){d?g.animationComplete(t):t(),g.height(l+a.mobile.$window.scrollTop()).addClass(c+" out"+i)},t=function(){g&&d&&r(),u()},u=function(){f.css("z-index",-10),f.addClass(a.mobile.activePageClass+o),a.mobile.focusPage(f),f.height(l+k),q(),f.css("z-index",""),n||f.animationComplete(v),f.removeClass(o).addClass(c+" in"+i),n&&setTimeout(v,0)},v=function(){d||g&&r(),f.removeClass("out in reverse "+c).height(""),p(),a.mobile.$window.scrollTop()!==k&&q(),h.resolve(c,e,f,g,!0)};return p(),g&&!n?s():t(),h.promise()}},e=d(),f=d(!1),g=function(){return a.mobile.getScreenHeight()*3};a.mobile.defaultTransitionHandler=e,a.mobile.transitionHandlers={"default":a.mobile.defaultTransitionHandler,sequential:e,simultaneous:f},a.mobile.transitionFallbacks={},a.mobile._maybeDegradeTransition=function(b){return b&&!a.support.cssTransform3d&&a.mobile.transitionFallbacks[b]&&(b=a.mobile.transitionFallbacks[b]),b},a.mobile.getMaxScrollForTransition=a.mobile.getMaxScrollForTransition||g}(a,this),function(a,d){function u(b){!!i&&(!i.closest("."+a.mobile.activePageClass).length||b)&&i.removeClass(a.mobile.activeBtnClass),i=null}function v(){m=!1,l.length>0&&a.mobile.changePage.apply(null,l.pop())}function z(b,c,d,e){c&&c.data("page")._trigger("beforehide",null,{nextPage:b}),b.data("page")._trigger("beforeshow",null,{prevPage:c||a("")}),a.mobile.hidePageLoadingMsg(),d=a.mobile._maybeDegradeTransition(d);var f=a.mobile.transitionHandlers[d||"default"]||a.mobile.defaultTransitionHandler,g=f(d,e,b,c);return g.done(function(){c&&c.data("page")._trigger("hide",null,{nextPage:b}),b.data("page")._trigger("show",null,{prevPage:c||a("")}),setTimeout(function(){a.mobile.removeEventBlocker()},0)}),g}function A(b,c){c&&b.attr("data-"+a.mobile.ns+"role",c),b.page()}function B(a){while(a){if(typeof a.nodeName=="string"&&a.nodeName.toLowerCase()==="a")break;a=a.parentNode}return a}function C(b){var c=a(b).closest(".ui-page").jqmData("url"),d=q.hrefNoHash;if(!c||!h.isPath(c))c=d;return h.makeUrlAbsolute(c,d)}var e=a.mobile.$window,f=a("html"),g=a("head"),h={urlParseRE:/^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,getLocation:function(a){var b=a?this.parseUrl(a):location,c=this.parseUrl(a||location.href).hash;return c=c==="#"?"":c,b.protocol+"//"+b.host+b.pathname+b.search+c},parseLocation:function(){return this.parseUrl(this.getLocation())},parseUrl:function(b){if(a.type(b)==="object")return b;var c=h.urlParseRE.exec(b||"")||[];return{href:c[0]||"",hrefNoHash:c[1]||"",hrefNoSearch:c[2]||"",domain:c[3]||"",protocol:c[4]||"",doubleSlash:c[5]||"",authority:c[6]||"",username:c[8]||"",password:c[9]||"",host:c[10]||"",hostname:c[11]||"",port:c[12]||"",pathname:c[13]||"",directory:c[14]||"",filename:c[15]||"",search:c[16]||"",hash:c[17]||""}},makePathAbsolute:function(a,b){if(a&&a.charAt(0)==="/")return a;a=a||"",b=b?b.replace(/^\/|(\/[^\/]*|[^\/]+)$/g,""):"";var c=b?b.split("/"):[],d=a.split("/");for(var e=0;e<d.length;e++){var f=d[e];switch(f){case".":break;case"..":c.length&&c.pop();break;default:c.push(f)}}return"/"+c.join("/")},isSameDomain:function(a,b){return h.parseUrl(a).domain===h.parseUrl(b).domain},isRelativeUrl:function(a){return h.parseUrl(a).protocol===""},isAbsoluteUrl:function(a){return h.parseUrl(a).protocol!==""},makeUrlAbsolute:function(a,b){if(!h.isRelativeUrl(a))return a;b===d&&(b=q);var c=h.parseUrl(a),e=h.parseUrl(b),f=c.protocol||e.protocol,g=c.protocol?c.doubleSlash:c.doubleSlash||e.doubleSlash,i=c.authority||e.authority,j=c.pathname!=="",k=h.makePathAbsolute(c.pathname||e.filename,e.pathname),l=c.search||!j&&e.search||"",m=c.hash;return f+g+i+k+l+m},addSearchParams:function(b,c){var d=h.parseUrl(b),e=typeof c=="object"?a.param(c):c,f=d.search||"?";return d.hrefNoSearch+f+(f.charAt(f.length-1)!=="?"?"&":"")+e+(d.hash||"")},convertUrlToDataUrl:function(a){var c=h.parseUrl(a);return h.isEmbeddedPage(c)?c.hash.split(n)[0].replace(/^#/,""):h.isSameDomain(c,q)?c.hrefNoHash.replace(q.domain,"").split(n)[0]:b.decodeURIComponent(a)},get:function(a){return a===d&&(a=h.parseLocation().hash),h.stripHash(a).replace(/[^\/]*\.[^\/*]+$/,"")},getFilePath:function(b){var c="&"+a.mobile.subPageUrlKey;return b&&b.split(c)[0].split(n)[0]},set:function(a){location.hash=a},isPath:function(a){return/\//.test(a)},clean:function(a){return a.replace(q.domain,"")},stripHash:function(a){return a.replace(/^#/,"")},cleanHash:function(a){return h.stripHash(a.replace(/\?.*$/,"").replace(n,""))},isHashValid:function(a){return/^#[^#]+$/.test(a)},isExternal:function(a){var b=h.parseUrl(a);return b
+.protocol&&b.domain!==p.domain?!0:!1},hasProtocol:function(a){return/^(:?\w+:)/.test(a)},isFirstPageUrl:function(b){var c=h.parseUrl(h.makeUrlAbsolute(b,q)),e=c.hrefNoHash===p.hrefNoHash||r&&c.hrefNoHash===q.hrefNoHash,f=a.mobile.firstPage,g=f&&f[0]?f[0].id:d;return e&&(!c.hash||c.hash==="#"||g&&c.hash.replace(/^#/,"")===g)},isEmbeddedPage:function(a){var b=h.parseUrl(a);return b.protocol!==""?b.hash&&(b.hrefNoHash===p.hrefNoHash||r&&b.hrefNoHash===q.hrefNoHash):/^#/.test(b.href)},isPermittedCrossDomainRequest:function(b,c){return a.mobile.allowCrossDomainPages&&b.protocol==="file:"&&c.search(/^https?:/)!==-1}},i=null,j={stack:[],activeIndex:0,getActive:function(){return j.stack[j.activeIndex]},getPrev:function(){return j.stack[j.activeIndex-1]},getNext:function(){return j.stack[j.activeIndex+1]},addNew:function(a,b,c,d,e){j.getNext()&&j.clearForward(),j.stack.push({url:a,transition:b,title:c,pageUrl:d,role:e}),j.activeIndex=j.stack.length-1},clearForward:function(){j.stack=j.stack.slice(0,j.activeIndex+1)},directHashChange:function(b){var c,e,f,g=this.getActive();a.each(j.stack,function(a,d){decodeURIComponent(b.currentUrl)===decodeURIComponent(d.url)&&(c=a<j.activeIndex,e=!c,f=a)}),this.activeIndex=f!==d?f:this.activeIndex,c?(b.either||b.isBack)(!0):e&&(b.either||b.isForward)(!1)},ignoreNextHashChange:!1},k="[tabindex],a,button:visible,select:visible,input",l=[],m=!1,n="&ui-state=dialog",o=g.children("base"),p=h.parseLocation(),q=o.length?h.parseUrl(h.makeUrlAbsolute(o.attr("href"),p.href)):p,r=p.hrefNoHash!==q.hrefNoHash,s=a.mobile.getScreenHeight,t=a.support.dynamicBaseTag?{element:o.length?o:a("<base>",{href:q.hrefNoHash}).prependTo(g),set:function(a){t.element.attr("href",h.makeUrlAbsolute(a,q))},reset:function(){t.element.attr("href",q.hrefNoHash)}}:d;a.mobile.back=function(){var a=b.navigator;this.phonegapNavigationEnabled&&a&&a.app&&a.app.backHistory?a.app.backHistory():b.history.back()},a.mobile.focusPage=function(a){var b=a.find("[autofocus]"),c=a.find(".ui-title:eq(0)");if(b.length){b.focus();return}c.length?c.focus():a.focus()};var w=!0,x,y;x=function(){if(!w)return;var b=a.mobile.urlHistory.getActive();if(b){var c=e.scrollTop();b.lastScroll=c<a.mobile.minScrollBack?a.mobile.defaultHomeScroll:c}},y=function(){setTimeout(x,100)},e.bind(a.support.pushState?"popstate":"hashchange",function(){w=!1}),e.one(a.support.pushState?"popstate":"hashchange",function(){w=!0}),e.one("pagecontainercreate",function(){a.mobile.pageContainer.bind("pagechange",function(){w=!0,e.unbind("scrollstop",y),e.bind("scrollstop",y)})}),e.bind("scrollstop",y),a.mobile._maybeDegradeTransition=a.mobile._maybeDegradeTransition||function(a){return a},a.fn.animationComplete=function(b){return a.support.cssTransitions?a(this).one("webkitAnimationEnd animationend",b):(setTimeout(b,0),a(this))},a.mobile.path=h,a.mobile.base=t,a.mobile.urlHistory=j,a.mobile.dialogHashKey=n,a.mobile.allowCrossDomainPages=!1,a.mobile.getDocumentUrl=function(b){return b?a.extend({},p):p.href},a.mobile.getDocumentBase=function(b){return b?a.extend({},q):q.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 e=a.Deferred(),f=a.extend({},a.mobile.loadPage.defaults,c),g=null,i=null,j=function(){var b=a.mobile.activePage&&C(a.mobile.activePage);return b||q.hrefNoHash},k=h.makeUrlAbsolute(b,j());f.data&&f.type==="get"&&(k=h.addSearchParams(k,f.data),f.data=d),f.data&&f.type==="post"&&(f.reloadPage=!0);var l=h.getFilePath(k),m=h.convertUrlToDataUrl(k);f.pageContainer=f.pageContainer||a.mobile.pageContainer,g=f.pageContainer.children("[data-"+a.mobile.ns+"url='"+m+"']"),g.length===0&&m&&!h.isPath(m)&&(g=f.pageContainer.children("#"+m).attr("data-"+a.mobile.ns+"url",m).jqmData("url",m));if(g.length===0)if(a.mobile.firstPage&&h.isFirstPageUrl(l))a.mobile.firstPage.parent().length&&(g=a(a.mobile.firstPage));else if(h.isEmbeddedPage(l))return e.reject(k,c),e.promise();if(g.length){if(!f.reloadPage)return A(g,f.role),e.resolve(k,c,g),t&&!c.prefetch&&t.set(b),e.promise();i=g}var n=f.pageContainer,o=new a.Event("pagebeforeload"),r={url:b,absUrl:k,dataUrl:m,deferred:e,options:f};n.trigger(o,r);if(o.isDefaultPrevented())return e.promise();if(f.showLoadMsg)var s=setTimeout(function(){a.mobile.showPageLoadingMsg()},f.loadMsgDelay),u=function(){clearTimeout(s),a.mobile.hidePageLoadingMsg()};return t&&typeof c.prefetch=="undefined"&&t.reset(),!a.mobile.allowCrossDomainPages&&!h.isSameDomain(p,k)?e.reject(k,c):a.ajax({url:l,type:f.type,data:f.data,dataType:"html",success:function(d,j,n){var o=a("<div></div>"),p=d.match(/<title[^>]*>([^<]*)/)&&RegExp.$1,q=new RegExp("(<[^>]+\\bdata-"+a.mobile.ns+"role=[\"']?page[\"']?[^>]*>)"),s=new RegExp("\\bdata-"+a.mobile.ns+"url=[\"']?([^\"'>]*)[\"']?");q.test(d)&&RegExp.$1&&s.test(RegExp.$1)&&RegExp.$1&&(b=l=h.getFilePath(a("<div>"+RegExp.$1+"</div>").text())),t&&typeof c.prefetch=="undefined"&&t.set(l),o.get(0).innerHTML=d,g=o.find(":jqmData(role='page'), :jqmData(role='dialog')").first(),g.length||(g=a("<div data-"+a.mobile.ns+"role='page'>"+d.split(/<\/?body[^>]*>/gmi)[1]+"</div>")),p&&!g.jqmData("title")&&(~p.indexOf("&")&&(p=a("<div>"+p+"</div>").text()),g.jqmData("title",p));if(!a.support.dynamicBaseTag){var v=h.get(l);g.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,v+c)})}g.attr("data-"+a.mobile.ns+"url",h.convertUrlToDataUrl(l)).attr("data-"+a.mobile.ns+"external-page",!0).appendTo(f.pageContainer),g.one("pagecreate",a.mobile._bindPageRemove),A(g,f.role),k.indexOf("&"+a.mobile.subPageUrlKey)>-1&&(g=f.pageContainer.children("[data-"+a.mobile.ns+"url='"+m+"']")),f.showLoadMsg&&u(),r.xhr=n,r.textStatus=j,r.page=g,f.pageContainer.trigger("pageload",r),e.resolve(k,c,g,i)},error:function(b,d,g){t&&t.set(h.get()),r.xhr=b,r.textStatus=d,r.errorThrown=g;var i=new a.Event("pageloadfailed");f.pageContainer.trigger(i,r);if(i.isDefaultPrevented())return;f.showLoadMsg&&(u(),a.mobile.showPageLoadingMsg(a.mobile.pageLoadErrorMessageTheme,a.mobile.pageLoadErrorMessage,!0),setTimeout(a.mobile.hidePageLoadingMsg,1500)),e.reject(k,c)}}),e.promise()},a.mobile.loadPage.defaults={type:"get",data:d,reloadPage:!1,role:d,showLoadMsg:!1,pageContainer:d,loadMsgDelay:50},a.mobile.changePage=function(b,e){if(m){l.unshift(arguments);return}var f=a.extend({},a.mobile.changePage.defaults,e);f.pageContainer=f.pageContainer||a.mobile.pageContainer,f.fromPage=f.fromPage||a.mobile.activePage;var g=f.pageContainer,i=new a.Event("pagebeforechange"),k={toPage:b,options:f};g.trigger(i,k);if(i.isDefaultPrevented())return;b=k.toPage,m=!0;if(typeof b=="string"){a.mobile.loadPage(b,f).done(function(b,c,d,e){m=!1,c.duplicateCachedPage=e,a.mobile.changePage(d,c)}).fail(function(a,b){m=!1,u(!0),v(),f.pageContainer.trigger("pagechangefailed",k)});return}b[0]===a.mobile.firstPage[0]&&!f.dataUrl&&(f.dataUrl=p.hrefNoHash);var o=f.fromPage,q=f.dataUrl&&h.convertUrlToDataUrl(f.dataUrl)||b.jqmData("url"),r=q,s=h.getFilePath(q),t=j.getActive(),w=j.activeIndex===0,x=0,y=c.title,B=f.role==="dialog"||a.mobile.getAttrFixed(b[0],"data-"+a.mobile.ns+"role")==="dialog";if(o&&o[0]===b[0]&&!f.allowSamePageTransition){m=!1,g.trigger("pagechange",k),f.fromHashChange&&j.directHashChange({currentUrl:q,isBack:function(){},isForward:function(){}});return}A(b,f.role),f.fromHashChange&&j.directHashChange({currentUrl:q,isBack:function(){x=-1},isForward:function(){x=1}});try{c.activeElement&&c.activeElement.nodeName.toLowerCase()!=="body"?a(c.activeElement).blur():a("input:focus, textarea:focus, select:focus").blur()}catch(C){}var D=!1;B&&t&&(t.url.indexOf(n)>-1&&!a.mobile.activePage.is(".ui-dialog")&&(f.changeHash=!1,D=!0),q=(t.url||"")+(D?"":n),j.activeIndex===0&&q===j.initialDst&&(q+=n)),f.changeHash!==!1&&q&&(j.ignoreNextHashChange=!0,h.set(q));var E=t?b.jqmData("title")||b.children(":jqmData(role='header')").find(".ui-title").getEncodedText():y;!!E&&y===c.title&&(y=E),b.jqmData("title")||b.jqmData("title",y),f.transition=f.transition||(x&&!w?t.transition:d)||(B?a.mobile.defaultDialogTransition:a.mobile.defaultPageTransition),x||(D&&(j.activeIndex=Math.max(0,j.activeIndex-1)),j.addNew(q,f.transition,y,r,f.role)),c.title=j.getActive().title,a.mobile.activePage=b,f.reverse=f.reverse||x<0,z(b,o,f.transition,f.reverse).done(function(c,d,e,h,i){u(),f.duplicateCachedPage&&f.duplicateCachedPage.remove(),i||a.mobile.focusPage(b),v(),g.trigger("pagechange",k)})},a.mobile.changePage.defaults={transition:d,reverse:!1,changeHash:!0,fromHashChange:!1,role:d,duplicateCachedPage:d,pageContainer:d,showLoadMsg:!0,dataUrl:d,fromPage:d,allowSamePageTransition:!1},a.mobile.navreadyDeferred=a.Deferred(),a.mobile.navreadyDeferred.done(function(){a.mobile.$document.delegate("form","submit",function(b){var c=a(this);if(!a.mobile.ajaxEnabled||c.is(":jqmData(ajax='false')")||!c.jqmHijackable().length)return;var d=c.attr("method"),e=c.attr("target"),f=c.attr("action");f||(f=C(c),f===q.hrefNoHash&&(f=p.hrefNoSearch)),f=h.makeUrlAbsolute(f,C(c));if(h.isExternal(f)&&!h.isPermittedCrossDomainRequest(p,f)||e)return;a.mobile.changePage(f,{type:d&&d.length&&d.toLowerCase()||"get",data:c.serialize(),transition:a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"transition"),reverse:a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"direction")==="reverse",reloadPage:!0}),b.preventDefault()}),a.mobile.$document.bind("vclick",function(b){if(b.which>1||!a.mobile.linkBindingEnabled)return;var c=B(b.target);if(!a(c).jqmHijackable().length)return;c&&h.parseUrl(c.getAttribute("href")||"#").hash!=="#"&&(u(!0),i=a(c).closest(".ui-btn").not(".ui-disabled"),i.addClass(a.mobile.activeBtnClass))}),a.mobile.$document.bind("click",function(c){if(!a.mobile.linkBindingEnabled)return;var e=B(c.target),f=a(e),g;if(!e||c.which>1||!f.jqmHijackable().length)return;g=function(){b.setTimeout(function(){u(!0)},200)};if(f.is(":jqmData(rel='back')"))return a.mobile.back(),!1;var i=C(f),j=h.makeUrlAbsolute(f.attr("href")||"#",i);if(!a.mobile.ajaxEnabled&&!h.isEmbeddedPage(j)){g();return}if(j.search("#")!==-1){j=j.replace(/[^#]*#/,"");if(!j){c.preventDefault();return}h.isPath(j)?j=h.makeUrlAbsolute(j,i):j=h.makeUrlAbsolute("#"+j,p.hrefNoHash)}var k=f.is("[rel='external']")||f.is(":jqmData(ajax='false')")||f.is("[target]"),l=k||h.isExternal(j)&&!h.isPermittedCrossDomainRequest(p,j);if(l){g();return}var m=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"transition"),n=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"direction")==="reverse"||a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"back"),o=f.attr("data-"+a.mobile.ns+"rel")||d;a.mobile.changePage(j,{transition:m,reverse:n,role:o,link:f}),c.preventDefault()}),a.mobile.$document.delegate(".ui-page","pageshow.prefetch",function(){var b=[];a(this).find("a:jqmData(prefetch)").each(function(){var c=a(this),d=c.attr("href");d&&a.inArray(d,b)===-1&&(b.push(d),a.mobile.loadPage(d,{role:c.attr("data-"+a.mobile.ns+"rel"),prefetch:!0}))})}),a.mobile._handleHashChange=function(c){var e=h.stripHash(c),f=a.mobile.urlHistory.stack.length===0?"none":d,g=new a.Event("navigate"),i={transition:f,changeHash:!1,fromHashChange:!0};0===j.stack.length&&(j.initialDst=e),a.mobile.pageContainer.trigger(g);if(g.isDefaultPrevented())return;if(!a.mobile.hashListeningEnabled||j.ignoreNextHashChange){j.ignoreNextHashChange=!1;return}if(j.stack.length>1&&e.indexOf(n)>-1&&j.initialDst!==e){if(!a.mobile.activePage.is(".ui-dialog")){j.directHashChange({currentUrl:e,isBack:function(){a.mobile.back()},isForward:function(){b.history.forward()}});return}j.directHashChange({currentUrl:e,either:function(b){var c=a.mobile.urlHistory.getActive();e=c.pageUrl,a.extend(i,{role:c.role,transition:c.transition,reverse:b})}})}e?(e=typeof e=="string"&&!h.isPath(e)?h.makeUrlAbsolute("#"+e,q):e,e===h.makeUrlAbsolute("#"+j.initialDst,q)&&j.stack.length&&j.stack[0].url!==j.initialDst.replace(n,"")&&(e=a.mobile.firstPage),a.mobile.changePage(e,i)):a.mobile.changePage(a.mobile.firstPage,i)},e.bind("hashchange",function(b,c){a.mobile._handleHashChange(h.parseLocation().hash)})})}(a),function(a,b){var e={},f=e,g=a.mobile.$window,h=a.mobile.path.parseLocation(),i=a.Deferred(),j=a.Deferred();a.mobile.$document.ready(a.proxy(j,"resolve")),a.mobile.$document.one("mobileinit",a.proxy(i,"resolve")),a.extend(e,{initialFilePath:function(){return h.pathname+h.search}(),hashChangeTimeout:200,hashChangeEnableTimer:d,initialHref:h.hrefNoHash,state:function(){return{hash:a.mobile.path.parseLocation().hash||"#"+f.initialFilePath,title:c.title,initialHref:f.initialHref}},resetUIKeys:function(b){var c=a.mobile.dialogHashKey,d="&"+a.mobile.subPageUrlKey,e=b.indexOf(c);return e>-1?b=b.slice(0,e)+"#"+b.slice(e):b.indexOf(d)>-1&&(b=b.split(d).join("#"+d)),b},nextHashChangePrevented:function(b){a.mobile.urlHistory.ignoreNextHashChange=b,f.onHashChangeDisabled=b},onHashChange:function(b){if(f.onHashChangeDisabled)return;var d,e,g=a.mobile.path.parseLocation().hash,h=a.mobile.path.isPath(g),i=h?a.mobile.path.getLocation():a.mobile.getDocumentUrl();g=h?g.replace("#",""):g,e=f.state(),d=a.mobile.path.makeUrlAbsolute(g,i),h&&(d=f.resetUIKeys(d)),history.replaceState(e,c.title,d)},onPopState:function(b){var c=b.originalEvent.state,d,e,g;c&&(clearTimeout(f.hashChangeEnableTimer),f.nextHashChangePrevented(!1),a.mobile._handleHashChange(c.hash),f.nextHashChangePrevented(!0),f.hashChangeEnableTimer=setTimeout(function(){f.nextHashChangePrevented(!1)},f.hashChangeTimeout))},init:function(){g.bind("hashchange",f.onHashChange),g.bind("popstate",f.onPopState),location.hash===""&&history.replaceState(f.state(),c.title,a.mobile.path.getLocation())}}),a.when(j,i,a.mobile.navreadyDeferred).done(function(){a.mobile.pushStateEnabled&&a.support.pushState&&e.init()})}(a,this),function(a,b,c){a.mobile.transitionFallbacks.flip="fade"}(a,this),function(a,b,c){a.mobile.transitionFallbacks.flow="fade"}(a,this),function(a,b,c){a.mobile.transitionFallbacks.pop="fade"}(a,this),function(a,b,c){a.mobile.transitionHandlers.slide=a.mobile.transitionHandlers.simultaneous,a.mobile.transitionFallbacks.slide="fade"}(a,this),function(a,b,c){a.mobile.transitionFallbacks.slidedown="fade"}(a,this),function(a,b,c){a.mobile.transitionFallbacks.slidefade="fade"}(a,this),function(a,b,c){a.mobile.transitionFallbacks.slideup="fade"}(a,this),function(a,b,c){a.mobile.transitionFallbacks.turn="fade"}(a,this),function(a,b){a.mobile.page.prototype.options.degradeInputs={color:!1,date:!1,datetime:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:"number",search:"text",tel:!1,time:!1,url:!1,week:!1},a.mobile.$document.bind("pagecreate create",function(b){var c=a.mobile.closestPageData(a(b.target)),d;if(!c)return;d=c.options,a(b.target).find("input").not(c.keepNativeSelector()).each(function(){var b=a(this),c=this.getAttribute("type"),e=d.degradeInputs[c]||"text";if(d.degradeInputs[c]){var f=a("<div>").html(b.clone()).html(),g=f.indexOf(" type=")>-1,h=g?/\s+type=["']?\w+['"]?/:/\/?>/,i=' type="'+e+'" data-'+a.mobile.ns+'type="'+c+'"'+(g?"":">");b.replaceWith(f.replace(h,i))}})})}(a),function(a,b,c){a.widget("mobile.dialog",a.mobile.widget,{options:{closeBtnText:"Close",overlayTheme:"a",initSelector:":jqmData(role='dialog')"},_create:function(){var b=this,c=this.element,d=a("<a href='#' data-"+a.mobile.ns+"icon='delete' data-"+a.mobile.ns+"iconpos='notext'>"+this.options.closeBtnText+"</a>"),e=a("<div/>",{role:"dialog","class":"ui-dialog-contain ui-corner-all ui-overlay-shadow"});c.addClass("ui-dialog ui-overlay-"+this.options.overlayTheme),c.wrapInner(e).children().find(":jqmData(role='header')").prepend(d).end().children(":first-child").addClass("ui-corner-top").end().children(":last-child").addClass("ui-corner-bottom"),d.bind("click",function(){b.close()}),c.bind("vclick submit",function(b){var c=a(b.target).closest(b.type==="vclick"?"a":"form"),d;c.length&&!a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"transition")&&(d=a.mobile.urlHistory.getActive()||{},c.attr("data-"+a.mobile.ns+"transition",d.transition||a.mobile.defaultDialogTransition).attr("data-"+a.mobile.ns+"direction","reverse"))}).bind("pagehide",function(b,c){a(this).find("."+a.mobile.activeBtnClass).not(".ui-slider-bg").removeClass(a.mobile.activeBtnClass)}).bind("pagebeforeshow",function(){b._isCloseable=!0,b.options.overlayTheme&&b.element.page("removeContainerBackground").page("setContainerBackground",b.options.overlayTheme)})},close:function(){var b;this._isCloseable&&(this._isCloseable=!1,a.mobile.hashListeningEnabled?a.mobile.back():(b=a.mobile.urlHistory.getPrev().url,a.mobile.path.isPath(b)||(b=a.mobile.path.makeUrlAbsolute("#"+b)),a.mobile.changePage(b,{changeHash:!1,fromHashChange:!0})))}}),a.mobile.$document.delegate(a.mobile.dialog.prototype.options.initSelector,"pagecreate",function(){a.mobile.dialog.prototype.enhance(this)})}(a,this),function(a,b){a.mobile.page.prototype.options.backBtnText="Back",a.mobile.page.prototype.options.addBackBtn=!1,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.mobile.$document.bind("pagecreate",function(c){var d=a(c.target),e=d.data("page").options,f="data-"+a.mobile.ns,g=d[0].getAttribute(f+"role")||b,h=e.theme;a(":jqmData(role='header'), :jqmData(role='footer'), :jqmData(role='content')",d).jqmEnhanceable().each(function(){var c=a(this),i=c[0].getAttribute(f+"role")||b,j=c[0].getAttribute(f+"theme")||b,k=j||e.contentTheme||g==="dialog"&&h,l,m,n,p=d.find(".ui-footer"),q;c.addClass("ui-"+i);if(i==="header"||i==="footer"){var r=j||(i==="header"?e.headerTheme:e.footerTheme)||h;c.addClass("ui-bar-"+r).attr("role",i==="header"?"banner":"contentinfo"),i==="header"&&(l=c.children("a, button"),m=l.hasClass("ui-btn-left"),n=l.hasClass("ui-btn-right"),m=m||l.eq(0).not(".ui-btn-right").addClass("ui-btn-left").length,n=n||l.eq(1).addClass("ui-btn-right").length,a(l.get().reverse()).each(function(b){a(this).addClass("ui-btn-right-"+b)})),e.addBackBtn&&(i==="footer"||i==="header")&&d[0].getAttribute(f+"url")!==a.mobile.path.stripHash(location.hash)&&!m&&(e.addBackBtn=="header"?p=d.find(".ui-header"):p=d.find(".ui-footer"),p.find(".ui-btn-back").length||(q=a("<a href='javascript:void(0);' class='ui-btn-back' data-"+a.mobile.ns+"rel='back'></a>").buttonMarkup({icon:"header-back-btn",theme:e.backBtnTheme||r}),q.find(".ui-btn-text").text(e.backBtnText),q.appendTo(p))),c.children("h1, h2, h3, h4, h5, h6").addClass("ui-title").attr({role:"heading","aria-level":"1","aria-label":"title",tabindex:"0"}),a(".ui-title-text-sub").attr({tabindex:"0","aria-label":"subtitle"})}else i==="content"&&(k&&c.addClass("ui-body-"+k),c.attr("role","main"))})})}(a),function(a,b){a.fn.fieldcontain=function(a){return this.addClass("ui-field-contain ui-body ui-br").contents().filter(function(){return this.nodeType===3&&!/\S/.test(this.nodeValue)}).remove()},a.mobile.$document.bind("pagecreate create",function(b){a(":jqmData(role='fieldcontain')",b.target).jqmEnhanceable().fieldcontain()})}(a),function(a,b){a.fn.grid=function(b){return this.each(function(){var c=a(this),d=a.extend({grid:null},b),e=c.children(),f={solo:1,a:2,b:3,c:4,d:5},g=d.grid,h;if(!g)if(e.length<=5)for(var i in f)f[i]===e.length&&(g=i);else g="a",c.addClass("ui-grid-duo");h=f[g],c.addClass("ui-grid-"+g),e.filter(":nth-child("+h+"n+1)").addClass("ui-block-a"),h>1&&e.filter(":nth-child("+h+"n+2)").addClass("ui-block-b"),h>2&&e.filter(":nth-child("+h+"n+3)").addClass("ui-block-c"),h>3&&e.filter(":nth-child("+h+"n+4)").addClass("ui-block-d"),h>4&&e.filter(":nth-child("+h+"n+5)").addClass("ui-block-e")})}}(a),function(a,b){a.mobile.$document.bind("pagecreate create",function(b){a(":jqmData(role='nojs')",b.target).addClass("ui-nojs")})}(a),function(a,b){function d(a){var b;while(a){b=typeof a.className=="string"&&a.className+" ";if(b&&b.indexOf("ui-btn ")>-1&&b.indexOf("ui-disabled ")<0)break;a=a.parentNode}return a}a.fn.buttonMarkup=function(d){var f=this,g="data-"+a.mobile.ns,h=function(b,c){k.setAttribute("data-"+a.mobile.ns+b,c),j.jqmData(b,c)};d=d&&a.type(d)==="object"?d:{};for(var i=0;i<f.length;i++){var j=f.eq(i),k=j[0],l=a.extend({},a.fn.buttonMarkup.defaults,{icon:d.icon!==b?d.icon:a.mobile.getAttrFixed(k,g+"icon"),iconpos:d.iconpos!==b?d.iconpos:a.mobile.getAttrFixed(k,g+"iconpos"),theme:d.theme!==b?d.theme:a.mobile.getAttrFixed(k,g+"theme")||a.mobile.getInheritedTheme(j,a.fn.buttonMarkup.defaults.theme),inline:d.inline!==b?d.inline:a.mobile.getAttrFixed(k,g+"inline"),shadow:d.shadow!==b?d.shadow:a.mobile.getAttrFixed(k,g+"shadow"),corners:d.corners!==b?d.corners:a.mobile.getAttrFixed(k,g+"corners"),iconshadow:d.iconshadow!==b?d.iconshadow:a.mobile.getAttrFixed(k,g+"iconshadow"),mini:d.mini!==b?d.mini:a.mobile.getAttrFixed(k,g+"mini")},d),m="ui-btn-inner",n="ui-btn-text",o,p,q,r,s,t;for(key in l)k.setAttribute(g+key,l[key]);a.mobile.getAttrFixed(k,g+"rel")==="popup"&&j.attr("href")&&(k.setAttribute("aria-haspopup",!0),k.setAttribute("aria-owns",k.getAttribute("href"))),k.tagName!=="LI"&&k.tagName!=="LABEL"&&(k.setAttribute("role","button"),k.setAttribute("tabindex","0")),t=a.data(k.tagName==="INPUT"||k.tagName==="BUTTON"?k.parentNode:k,"buttonElements"),t?(k=t.outer,j=a(k),q=t.inner,r=t.text,a(t.icon).remove(),t.icon=null):(q=c.createElement(l.wrapperEls),r=c.createElement(l.wrapperEls)),s=l.icon?c.createElement("span"):null,e&&!t&&e(),l.theme||(l.theme=a.mobile.getInheritedTheme(j,"c")),o="ui-btn ui-btn-up-"+l.theme,o+=l.shadow?" ui-shadow":"",o+=l.corners?" ui-btn-corner-all":"";if(a.mobile.getAttrFixed(k,g+"role")=="button"||k.tagName=="BUTTON"||k.tagName=="DIV")o+=" ui-btn-box-"+l.theme;buttonStyle=a.mobile.getAttrFixed(k,g+"style");if(buttonStyle!="circle"||a(j).text().length>0){if(buttonStyle=="nobg")o+=" ui-btn-icon-nobg",o+=" ui-btn-icon_only";else if(buttonStyle=="edit")o+=" ui-btn-edit";else if(buttonStyle=="round"||buttonStyle=="circle"&&a(j).text().length>0)o+=" ui-btn-round"}else o+=" ui-btn-corner-circle",o+=" ui-btn-icon_only";if(l.icon)if(a(j).text().length>0){switch(l.iconpos){case"right":case"left":case"top":case"bottom":n+=" ui-btn-text-padding-"+l.iconpos;break;default:n+=" ui-btn-text-padding-left"}m+=" ui-btn-hastxt"}else buttonStyle=="circle"?m+=" ui-btn-corner-circle":buttonStyle=="nobg"&&(m+=" ui-btn-icon-nobg"),o+=" ui-btn-icon_only",m+=" ui-btn-icon-only",k.tagName!=="LABEL"&&a(j).text(l.icon.replace("naviframe-",""));else a(j).text().length>0?m+=" ui-btn-hastxt":buttonStyle=="circle"&&(o+=" ui-btn-round");l.mini!==b&&(o+=l.mini===!0?" ui-mini":" ui-fullsize"),l.inline!==b&&(o+=l.inline===!0?" ui-btn-inline":" ui-btn-block"),l.icon&&(l.icon="ui-icon-"+l.icon,l.iconpos=l.iconpos||"left",p="ui-icon "+l.icon,l.iconshadow&&(p+=" ui-icon-shadow")),l.iconpos&&(o+=" ui-btn-icon-"+l.iconpos,l.iconpos==="notext"&&!j.attr("title")&&j.attr("title",j.getEncodedText())),m+=l.corners?" ui-btn-corner-all":"",l.iconpos&&l.iconpos==="notext"&&!j.attr("title")&&j.attr("title",j.getEncodedText()),t&&j.removeClass(t.bcls||""),j.removeClass("ui-link").addClass(o),q.className=m,r.className=n,t||q.appendChild(r);if(s){s.className=p;if(!t||!t.icon)s.innerHTML="&#160;",q.appendChild(s)}while(k.firstChild&&!t)r.appendChild(k.firstChild);t||k.appendChild(q),t={bcls:o,outer:k,inner:q,text:r,icon:s},a.data(k,"buttonElements",t),a.data(q,"buttonElements",t),a.data(r,"buttonElements",t),s&&a.data(s,"buttonElements",t)}return this},a.fn.buttonMarkup.defaults={theme:"c",corners:!0,shadow:!0,iconshadow:!0,wrapperEls:"span"};var e=function(){var b=a.mobile.buttonMarkup.hoverDelay,c,f;a.mobile.$document.bind({"vmousedown vmousecancel vmouseup vmouseover vmouseout focus blur scrollstart touchend touchcancel":function(e){var g,h=a(d(e.target)),i=e.originalEvent&&/^touch/.test(e.originalEvent.type),j=e.type;if(h.length){g=h.attr("data-"+a.mobile.ns+"theme");if(j==="vmousedown")i?c=setTimeout(function(){h.removeClass("ui-btn-up-"+g).addClass("ui-btn-down-"+g)},b):h.removeClass("ui-btn-up-"+g).addClass("ui-btn-down-"+g);else if(j==="vmousecancel"||j==="vmouseup"||j==="touchend"||j==="touchcancel")h.removeClass("ui-btn-down-"+g).addClass("ui-btn-up-"+g);else if(j==="vmouseover"||j==="focus")i?f=setTimeout(function(){h.removeClass("ui-btn-up-"+g).addClass("ui-btn-hover-"+g)},b):h.removeClass("ui-btn-up-"+g).addClass("ui-btn-hover-"+g);else if(j==="vmouseout"||j==="blur"||j==="scrollstart")h.removeClass("ui-btn-hover-"+g+" ui-btn-down-"+g).addClass("ui-btn-up-"+g),c&&clearTimeout(c),f&&clearTimeout(f)}},"focusin focus":function(b){a(d(b.target)).addClass(a.mobile.focusClass)},"focusout blur":function(b){a(d(b.target)).removeClass(a.mobile.focusClass)}}),e=null};a.mobile.$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).jqmEnhanceable().not("button, input, .ui-btn, :jqmData(role='none'), :jqmData(role='nojs')").buttonMarkup()})}(a),function(a,b){a.widget("mobile.collapsible",a.mobile.widget,{options:{expandCueText:" Expandable list, tap to open list",collapseCueText:" Expandable list, tap to close list",collapsed:!0,heading:"h1,h2,h3,h4,h5,h6,legend",theme:null,contentTheme:null,inset:!0,mini:!1,initSelector:":jqmData(role='collapsible')"},_create:function(){var c=this.element,d=this.options,e=c.addClass("ui-collapsible"),f=c.children(d.heading).first(),g=a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"collapsed-icon")||d.collapsedIcon,h=a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"expanded-icon")||d.expandedIcon,i=e.wrapInner("<div class='ui-collapsible-content'></div>").children(".ui-collapsible-content"),j=c.closest(":jqmData(role='collapsible-set')").addClass("ui-collapsible-set");f.is("legend")&&(f=a("<div role='heading'>"+f.html()+"</div>").insertBefore(f),f.next().remove()),j.length?(d.theme||(d.theme=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"theme")||a.mobile.getInheritedTheme(j,"c")),d.contentTheme||(d.contentTheme=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"content-theme")),d.collapsedIcon||(d.collapsedIcon=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"collapsed-icon")),d.expandedIcon||(d.expandedIcon=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"expanded-icon")),d.iconPos||(d.iconPos=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"iconpos")),a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"inset")!==b?d.inset=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"inset"):d.inset=!0,d.mini||(d.mini=a.mobile.getAttrFixed(j[0],"data-"+a.mobile.ns+"mini"))):d.theme||(d.theme=a.mobile.getInheritedTheme(c,"c")),!d.inset||e.addClass("ui-collapsible-inset"),i.addClass(d.contentTheme?"ui-body-"+d.contentTheme:""),g=a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"collapsed-icon")||d.collapsedIcon||"plus",h=a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"expanded-icon")||d.expandedIcon||"minus",f.insertBefore(i).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:!1,corners:!1,iconpos:a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"iconpos")||d.iconPos||"left",icon:g,mini:d.mini,theme:d.theme}).attr("role",""),!d.inset||f.find("a").first().add(".ui-btn-inner",c).addClass("ui-corner-top ui-corner-bottom"),e.bind("expand collapse",function(b){if(!b.isDefaultPrevented()){var c=a(this),k=b.type==="collapse",l=d.contentTheme;b.preventDefault(),d.customEventHandler&&d.customEventHandler.call(this,k),f.toggleClass("ui-collapsible-heading-collapsed",k).find(".ui-collapsible-heading-status").text(k?d.expandCueText:d.collapseCueText).end().find(".ui-icon").toggleClass("ui-icon-"+h,!k).toggleClass("ui-icon-"+g,k||h===g).end().find("a").first().removeClass(a.mobile.activeBtnClass),c.toggleClass("ui-collapsible-collapsed",k),i.toggleClass("ui-collapsible-content-collapsed",k).attr("aria-hidden",k),i.children("li").not("ui-collapsible-content").attr("tabindex",k?"":"0"),l&&!!d.inset&&(!j.length||e.jqmData("collapsible-last"))&&(f.find("a").first().add(f.find(".ui-btn-inner")).toggleClass("ui-corner-bottom",k),i.toggleClass("ui-corner-bottom",!k)),i.trigger("updatelayout")}}).trigger(d.collapsed?"collapse":"expand"),f.bind("tap",function(b){f.find("a").first().addClass(a.mobile.activeBtnClass)}).bind("click",function(a){var b=f.is(".ui-collapsible-heading-collapsed")?"expand":"collapse";e.trigger(b),a.preventDefault(),a.stopPropagation()})}}),a.delegateSelfInitWithSingleSelector(a.mobile.collapsible)}(a),function(a,b){a.widget("mobile.collapsibleset",a.mobile.widget,{options:{initSelector:":jqmData(role='collapsible-set')"},_create:function(){var c=this.element.addClass("ui-collapsible-set"),d=this.options;d.theme||(d.theme=a.mobile.getInheritedTheme(c,"c")),d.contentTheme||(d.contentTheme=a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"content-theme")),a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"inset")!==b&&(d.inset=a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"inset")),d.inset=d.inset!==b?d.inset:!0,c.jqmData("collapsiblebound")||c.jqmData("collapsiblebound",!0).bind("expand collapse",function(b){var c=b.type==="collapse",e=a(b.target).closest(".ui-collapsible"),f=e.data("collapsible");e.jqmData("collapsible-last")&&!!d.inset&&(e.find(".ui-collapsible-heading").first().find("a").first().toggleClass("ui-corner-bottom",c).find(".ui-btn-inner").toggleClass("ui-corner-bottom",c),e.find(".ui-collapsible-content").toggleClass("ui-corner-bottom",!c))}).bind("expand",function(b){var c=a(b.target).closest(".ui-collapsible");c.parent().is(":jqmData(role='collapsible-set')")&&c.siblings(".ui-collapsible").trigger("collapse")})},_init:function(){var a=this.element,b=a.children(":jqmData(role='collapsible')"),c=b.filter(":jqmData(collapsed='false')");this.refresh(),c.trigger("expand")},refresh:function(){var b=this.element,c=this.options,d=b.children(":jqmData(role='collapsible')");a.mobile.collapsible.prototype.enhance(d.not(".ui-collapsible")),!c.inset||(d.each(function(){a(this).jqmRemoveData("collapsible-last").find(".ui-collapsible-heading").find("a").first().removeClass("ui-corner-top ui-corner-bottom").find(".ui-btn-inner").removeClass("ui-corner-top ui-corner-bottom")}),d.first().find("a").first().addClass("ui-corner-top").find(".ui-btn-inner").addClass("ui-corner-top"),d.last().jqmData("collapsible-last",!0).find("a").first().addClass("ui-corner-bottom").find(".ui-btn-inner").addClass("ui-corner-bottom"))}}),a.delegateSelfInitWithSingleSelector(a.mobile.collapsibleset)}(a),function(a,b){a.widget("mobile.navbar",a.mobile.widget,{options:{iconpos:"top",grid:null,initSelector:":jqmData(role='navbar')"},_create:function(){var c=this.element,d=c.find("a"),e=d.filter(":jqmData(icon)").length?this.options.iconpos:b;c.addClass("ui-navbar ui-mini").attr("role","navigation").find("ul").jqmEnhanceable().grid({grid:this.options.grid}),d.buttonMarkup({corners:!1,shadow:!1,inline:!0,iconpos:e}),c.delegate("a","vclick",function(b){a(b.target).hasClass("ui-disabled")||(d.removeClass(a.mobile.activeBtnClass),a(this).addClass(a.mobile.activeBtnClass))}),c.closest(".ui-page").bind("pagebeforeshow",function(){d.filter(".ui-state-persist").addClass(a.mobile.activeBtnClass)})}}),a.delegateSelfInitWithSingleSelector(a.mobile.navbar)}(a),function(a,b){var d={};a.widget("mobile.listview",a.mobile.widget,{options:{theme:null,countTheme:"c",headerTheme:"b",dividerTheme:"b",splitIcon:"arrow-r",splitTheme:"b",inset:!1,initSelector:":jqmData(role='listview')"},_create:function(){var a=this,b="";b+=a.options.inset?" ui-listview-inset ui-corner-all ui-shadow ":"",a.element.addClass(function(a,c){return c+" ui-listview "+b}),a.refresh(!0)},_removeCorners:function(a,b){var c="ui-corner-top ui-corner-tr ui-corner-tl",d="ui-corner-bottom ui-corner-br ui-corner-bl";a=a.add(a.find(".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb")),b==="top"?a.removeClass(c):b==="bottom"?a.removeClass(d):a.removeClass(c+" "+d)},_refreshCorners:function(a){var b,c,d,e;b=this.element.children("li"),c=a||b.filter(":visible").length===0?b.not(".ui-screen-hidden"):b.filter(":visible"),b.filter(".ui-li-last").removeClass("ui-li-last"),this.options.inset?(this._removeCorners(b),d=c.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"),e=c.last().addClass("ui-corner-bottom ui-li-last"),e.add(e.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")):c.last().addClass("ui-li-last"),a||this.element.trigger("updatelayout")},_findFirstElementByTagName:function(a,b,c,d){var e={};e[c]=e[d]=!0;while(a){if(e[a.nodeName])return a;a=a[b]}return null},_getChildrenByTagName:function(b,c,d){var e=[],f={};f[c]=f[d]=!0,b=b.firstChild;while(b)f[b.nodeName]&&e.push(b),b=b.nextSibling;return a(e)},_addThumbClasses:function(b){var c,d,e=b.length;for(c=0;c<e;c++)d=a(this._findFirstElementByTagName(b[c].firstChild,"nextSibling","img","IMG")),d.length&&(d.addClass("ui-li-thumb").attr({role:"","aria-label":"icon"}),a(this._findFirstElementByTagName(d[0].parentNode,"parentNode","li","LI")).addClass(d.is(".ui-li-icon")?"ui-li-has-icon":"ui-li-has-thumb"))},_addCheckboxRadioClasses:function(b){var c,d,e=b.length;for(c=0;c<e;c++)d=a(b[c]).find("input"),d.attr("type")=="checkbox"?a(b[c]).addClass("ui-li-has-checkbox"):d.attr("type")=="radio"&&a(b[c]).addClass("ui-li-has-radio")},_addRightBtnClasses:function(b){var c,d,e=b.length;for(c=0;c<e;c++)d=a(b[c]).find(":jqmData(role='button'),input[type='button'],select:jqmData(role='slider')"),d.length&&(d.jqmData("style")=="circle"?a(b[c]).addClass("ui-li-has-right-circle-btn"):a(b[c]).addClass("ui-li-has-right-btn"))},refresh:function(d){this.parentPage=this.element.closest(".ui-page"),this._createSubPages();var e=this.options,f=this.element,g=this,h=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"dividertheme")||e.dividerTheme,i=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"splittheme"),j=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"spliticon"),k=this._getChildrenByTagName(f[0],"li","LI"),l=!!a.nodeName(f[0],"ol"),m=!a.support.cssPseudoElement,n=f.attr("start"),o={},p,q,r,s,t,u,v,w,x,y,z,A,B,C;l&&m&&f.find(".ui-li-dec").remove(),l&&(n||n===0?m?v=parseFloat(n):(w=parseFloat(n)-1,f.css("counter-reset","listnumbering "+w)):m&&(v=1)),e.theme||(e.theme=a.mobile.getInheritedTheme(this.element,"c"));for(var D=0,E=k.length;D<E;D++){p=k.eq(D),q="ui-li";if(d||!p.hasClass("ui-li")){r=a.mobile.getAttrFixed(p[0],"data-"+a.mobile.ns+"theme")||e.theme,s=this._getChildrenByTagName(p[0],"a","A").attr({role:"",tabindex:"0"});var F=a.mobile.getAttrFixed(p[0],"data-"+a.mobile.ns+"role")==="list-divider";(p.hasClass("ui-li-has-checkbox")||p.hasClass("ui-li-has-radio"))&&p.on("vclick",function(b){var c=a(b.target),d=c.find(".ui-checkbox");d.length||(d=c.find(".ui-radio")),d.length&&d.children("label").trigger("vclick")}),s.length&&!F?(z=a.mobile.getAttrFixed(p[0],"data-"+a.mobile.ns+"icon"),z===b&&(z=!1),p.buttonMarkup({wrapperEls:"div",shadow:!1,corners:!1,iconpos:"right",icon:s.length>1||z===!1?!1:z||"arrow-r",theme:r}),z!==!1&&s.length===1&&p.addClass("ui-li-has-arrow"),s.first().removeClass("ui-link").addClass("ui-link-inherit"),s.length>1&&(q+=" ui-li-has-alt",t=s.last(),u=i||a.mobile.getAttrFixed(t[0],"data-"+a.mobile.ns+"theme")||e.splitTheme,C=a.mobile.getAttrFixed(t[0],"data-"+a.mobile.ns+"icon"),t.appendTo(p).attr("title",t.getEncodedText()).addClass("ui-li-link-alt").empty().buttonMarkup({shadow:!1,corners:!1,theme:r,icon:!1,iconpos:"notext"}).find(".ui-btn-inner").append(a(c.createElement("span")).buttonMarkup({shadow:!0,corners:!0,theme:u,iconpos:"notext",icon:C||z||j||e.splitIcon})))):F?(q+=" ui-li-divider ui-bar-"+h,p.attr({role:"heading",tabindex:"0"}),l&&(n||n===0?m?v=parseFloat(n):(x=parseFloat(n)-1,p.css("counter-reset","listnumbering "+x)):m&&(v=1))):(q+=" ui-li-static ui-btn-up-"+r,p.attr("tabindex","0"))}l&&m&&q.indexOf("ui-li-divider")<0&&(y=q.indexOf("ui-li-static")>0?p:p.find(".ui-link-inherit"),y.addClass("ui-li-jsnumbering").prepend("<span class='ui-li-dec'>"+v++ +". </span>")),o[q]||(o[q]=[]),o[q].push(p[0])}for(q in o)a(o[q]).addClass(q).children(".ui-btn-inner").addClass(q);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-"+(a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"counttheme")||this.options.countTheme)+" ui-btn-corner-all"),this._addThumbClasses(k),this._addThumbClasses(f.find(".ui-link-inherit")),this._addCheckboxRadioClasses(k),this._addCheckboxRadioClasses(f.find(".ui-link-inherit")),this._addRightBtnClasses(k),this._addRightBtnClasses(f.find(".ui-link-inherit")),this._refreshCorners(d),this._trigger("afterrefresh")},_idStringEscape:function(a){return a.replace(/[^a-zA-Z0-9]/g,"-")},_createSubPages:function(){var b=this.element,c=b.closest(".ui-page"),e=c.jqmData("url"),f=e||c[0][a.expando],g=b.attr("id"),h=this.options,i="data-"+a.mobile.ns,j=this,k=c.find(":jqmData(role='footer')").jqmData("id"),l;typeof d[f]=="undefined"&&(d[f]=-1),g=g||++d[f],a(b.find("li>ul, li>ol").toArray().reverse()).each(function(c){var d=this,f=a(this),j=f.attr("id")||g+"-"+c,m=f.parent(),n=a(f.prevAll().toArray().reverse()),p=n.length?n:a("<span>"+a.trim(m.contents()[0].nodeValue)+"</span>"),q=p.first().getEncodedText(),r=(e||"")+"&"+a.mobile.subPageUrlKey+"="+j,s=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"theme")||h.theme,t=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"counttheme")||a.mobile.getAttrFixed(b[0],"data-"+a.mobile.ns+"counttheme")||h.countTheme,u,v;l=!0,u=f.detach().wrap("<div "+i+"role='page' "+i+"url='"+r+"' "+i+"theme='"+s+"' "+i+"count-theme='"+t+"'><div "+i+"role='content'></div></div>").parent().before("<div "+i+"role='header' "+i+"theme='"+h.headerTheme+"'><div class='ui-title'>"+q+"</div></div>").after(k?a("<div "+i+"role='footer' "+i+"id='"+k+"'>"):"").parent().appendTo(a.mobile.pageContainer),u.page(),v=m.find("a:first"),v.length||(v=a("<a/>").html(p||q).prependTo(m.empty())),v.attr("href","#"+r)}).listview();if(l&&c.is(":jqmData(external-page='true')")&&c.data("page").options.domCache===!1){var m=function(b,d){var f=d.nextPage,g,h=new a.Event("pageremove");d.nextPage&&(g=f.jqmData("url"),g.indexOf(e+"&"+a.mobile.subPageUrlKey)!==0&&(j.childPages().remove(),c.trigger(h),h.isDefaultPrevented()||c.removeWithDependents()))};c.unbind("pagehide.remove").bind("pagehide.remove",m)}},addItem:function(b,c){var d=a(b),e,f=this;e=f.element.children("li"),d.css({opacity:0,display:"none"}),e.length==0||e.length<=c?a(f.element).append(d):a(e.get(c)).before(d),a(f.element).trigger("create").listview("refresh"),d.css("min-height","0px"),d.slideDown("fast",function(){d.addClass("addli"),d.css({opacity:1})})},removeItem:function(b){var c,d,e=this;d=e.element.children("li");if(d.length<=0||d.length<b)return;c=a(d.get(b)),c.addClass("removeli"),c.slideUp("normal",function(){a(this).remove()})},childPages:function(){var b=this.parentPage.jqmData("url");return a(":jqmData(url^='"+b+"&"+a.mobile.subPageUrlKey+"')")}}),a.delegateSelfInitWithSingleSelector(a.mobile.listview)}(a),function(a,b){a.mobile.listview.prototype.options.autodividers=!1,a.mobile.listview.prototype.options.autodividersSelector=function(a){var b=a.text()||null;return b?(b=b.trim().slice(0,1).toUpperCase(),b):null},a.mobile.$document.delegate("ul,ol","listviewcreate",function(){var b=a(this),d=b.data("listview");if(!d||!d.options.autodividers)return;var e=function(){b.find("li:jqmData(role='list-divider')").remove();var e=b.find("li"),f=null,g,h;for(var i=0;i<e.length;i++){g=e[i],h=d.options.autodividersSelector(a(g));if(h&&f!==h){var j=c.createElement("li");j.appendChild(c.createTextNode(h)),j.setAttribute("data-"+a.mobile.ns+"role","list-divider"),g.parentNode.insertBefore(j,g)}f=h}},f=function(){b.unbind("listviewafterrefresh",f),e(),d.refresh(),b.bind("listviewafterrefresh",f)};f()})}(a),function(a,b){a.widget("mobile.checkboxradio",a.mobile.widget,{options:{theme:null,initSelector:"input[type='checkbox'],input[type='radio']"},_create:function(){var d=this,e=this.element,f=function(a,b){return a.jqmData(b)||a.closest("form, fieldset").jqmData(b)},g=a(e).closest("label"),h=g.length?g:e[0].id?a(e).closest("form, fieldset, :jqmData(role='page'), :jqmData(role='dialog')").find("label").filter("[for='"+e[0].id+"']"):[],i=e[0].type,j=f(e,"mini"),k=i+"-on",l=i+"-off",m=e.parents(":jqmData(type='horizontal')").length?b:l,n=f(e,"iconpos"),o=m?"":" "+a.mobile.activeBtnClass,p="ui-"+k+o,q="ui-"+l,r="ui-icon-"+k,s="ui-icon-"+l,t="";if(i!=="checkbox"&&i!=="radio")return;t=i==="checkbox"?"aria-checked":"aria-selected",h.length==0&&(h=a("<label for='"+e[0].id+"'></label>")),a.extend(this,{label:h,inputtype:i,checkedClass:p,uncheckedClass:q,checkedicon:r,uncheckedicon:s,ariaCheckedAttr:t}),this.options.theme||(this.options.theme=a.mobile.getInheritedTheme(this.element,"c")),h.buttonMarkup({theme:this.options.theme,icon:m,shadow:!1,mini:j,iconpos:n});var u=c.createElement("div");u.className="ui-"+i,u.setAttribute("role",i),e.hasClass("favorite")&&(u.className+=" favorite"),e.add(h).wrapAll(u),h.bind({vmouseover:function(b){a(this).parent().is(".ui-disabled")&&b.stopPropagation()},vclick:function(a){if(e.is(":disabled")){a.preventDefault();return}return d._cacheVals(),e.prop("checked",i==="radio"&&!0||!e.prop("checked")),e.triggerHandler("click"),d._getInputSet().not(e).prop("checked",!1),d._updateAll(),!1}}),e.bind({vmousedown:function(){d._cacheVals()},vclick:function(){var b=a(this);b.is(":checked")?(b.prop("checked",!0),d._getInputSet().not(b).prop("checked",!1)):b.prop("checked",!1),d._updateAll()},focus:function(){h.addClass(a.mobile.focusClass)},blur:function(){h.removeClass(a.mobile.focusClass)}}),this.refresh()},_cacheVals:function(){this._getInputSet().each(function(){a(this).jqmData("cacheVal",this.checked)})},_getInputSet:function(){return this.inputtype==="checkbox"?this.element:this.element.closest("form, fieldset, :jqmData(role='page'), :jqmData(role='dialog')").find("input[name='"+this.element[0].name+"'][type='"+this.inputtype+"']")},_updateAll:function(){var b=this;this._getInputSet().each(function(){var c=a(this);(this.checked||b.inputtype==="checkbox")&&c.trigger("change"),c.focus()}).checkboxradio("refresh")},refresh:function(){var a=this.element[0],b=this.label,c=a.parentNode,d=b.find(".ui-icon");a.checked?(b.addClass(this.checkedClass).removeClass(this.uncheckedClass),d.addClass(this.checkedicon).removeClass(this.uncheckedicon),c.setAttribute(this.ariaCheckedAttr,!0)):(b.removeClass(this.checkedClass).addClass(this.uncheckedClass),d.removeClass(this.checkedicon).addClass(this.uncheckedicon),c.setAttribute(this.ariaCheckedAttr,!1)),a.disabled?this.disable():this.enable()},disable:function(){this.element.prop("disabled",!0).parent().addClass("ui-disabled")},enable:function(){this.element.prop("disabled",!1).parent().removeClass("ui-disabled")}}),a.mobile.$document.bind("pagecreate create",function(b){a.mobile.checkboxradio.prototype.enhanceWithin(b.target,!0)})}(a),function(a,b){a.widget("mobile.button",a.mobile.widget,{options:{theme:null,icon:null,iconpos:null,corners:!0,shadow:!0,iconshadow:!0,initSelector:"button, [type='button'], [type='submit'], [type='reset']"},_create:function(){var c=this.element,d,e=this.options,f,g,h=e.inline||a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"inline"),i=e.mini||a.mobile.getAttrFixed(c[0],"data-"+a.mobile.ns+"mini"),j="",k;if(c[0].tagName==="A"){c.hasClass("ui-btn")||c.buttonMarkup();return}this.options.theme||(this.options.theme=a.mobile.getInheritedTheme(this.element,"c")),!~c[0].className.indexOf("ui-btn-left")||(j="ui-btn-left"),!~c[0].className.indexOf("ui-btn-right")||(j="ui-btn-right");if(c.attr("type")==="submit"||c.attr("type")==="reset")j?j+=" ui-submit":j="ui-submit";a("label[for='"+c.attr("id")+"']").addClass("ui-submit"),this.button=a("<div></div>")[c.html()?"html":"text"](c.html()||c.val()).insertBefore(c).buttonMarkup({theme:e.theme,icon:e.icon,iconpos:e.iconpos,inline:h,corners:e.corners,shadow:e.shadow,iconshadow:e.iconshadow,mini:i}).addClass(j).append(c.addClass("ui-btn-hidden")),d=this.button,f=c.attr("type"),g=c.attr("name"),f!=="button"&&f!=="reset"&&g&&c.bind("vclick",function(){k===b&&(k=a("<input>",{type:"hidden",name:c.attr("name"),value:c.attr("value")}).insertBefore(c),a.mobile.$document.one("submit",function(){k.remove(),k=b}))}),c.bind({focus:function(){d.addClass(a.mobile.focusClass)},blur:function(){d.removeClass(a.mobile.focusClass)}}),this.refresh()},enable:function(){return this.element.attr("disabled",!1),this.button.removeClass("ui-disabled").attr("aria-disabled",!1),this._setOption("disabled",!1)},disable:function(){return this.element.attr("disabled",!0),this.button.addClass("ui-disabled").attr("aria-disabled",!0),this._setOption("disabled",!0)},refresh:function(){var b=this.element;b.prop("disabled")?this.disable():this.enable(),a(this.button.data("buttonElements").text)[b.html()?"html":"text"](b.html()||b.val())}}),a.mobile.$document.bind("pagecreate create",function(b){a.mobile.button.prototype.enhanceWithin(b.target,!0)})}(a),function(a,b){a.fn.controlgroup=function(b){function c(a,b){a.removeClass("ui-btn-corner-all ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-controlgroup-last ui-shadow").eq(0).addClass(b[0]).end().last().addClass(b[1]).addClass("ui-controlgroup-last")}return this.each(function(){var d=a(this),e=a.extend({direction:a.mobile.getAttrFixed(d[0],"data-"+a.mobile.ns+"type")||"vertical",shadow:!1,excludeInvisible:!0,mini:a.mobile.getAttrFixed(d[0],"data-"+a.mobile.ns+"mini")},b),f=d.children("legend"),g=d.children(".ui-controlgroup-label"),h=d.children(".ui-controlgroup-controls"),i=e.direction==="horizontal"?["ui-corner-left","ui-corner-right"]:["ui-corner-top","ui-corner-bottom"],j=d.find("input").first().attr("type");h.length&&h.contents().unwrap(),d.wrapInner("<div class='ui-controlgroup-controls'></div>"),f.length?(a("<div role='heading' class='ui-controlgroup-label'>"+f.html()+"</div>").insertBefore(d.children(0)),f.remove()):g.length&&d.prepend(g),d.addClass("ui-corner-all ui-controlgroup ui-controlgroup-"+e.direction),c(d.find(".ui-btn"+(e.excludeInvisible?":visible":"")).not(".ui-slider-handle"),i),c(d.find(".ui-btn-inner"),i),e.shadow&&d.addClass("ui-shadow"),e.mini&&d.addClass("ui-mini")})}}(a),function(a,b){a.mobile.$document.bind("pagecreate create",function(b){a(b.target).find("a").jqmEnhanceable().not(".ui-btn, .ui-link-inherit, :jqmData(role='none'), :jqmData(role='nojs')").addClass("ui-link")})}(a),function(a,d){function e(a,b,c,d){var e=d;return a<b?e=c+(a-b)/2:e=Math.min(Math.max(c,d-b/2),c+a-b),e}function f(){var c=a.mobile.$window;return{x:c.scrollLeft(),y:c.scrollTop(),cx:b.innerWidth||c.width(),cy:b.innerHeight||c.height()}}a.widget("mobile.popup",a.mobile.widget,{options:{theme:null,overlayTheme:null,shadow:!0,corners:!0,transition:"pop",positionTo:"origin",tolerance:null,initSelector:":jqmData(role='popup')",closeLinkSelector:"a:jqmData(rel='back')",closeLinkEvents:"click.popup",navigateEvents:"navigate.popup",closeEvents:"navigate.popup pagebeforechange.popup",history:!1},_eatEventAndClose:function(a){return a.preventDefault(),a.stopImmediatePropagation(),this.close(),!1},_resizeScreen:function(){var a=this._ui.container.outerHeight(!0);this._ui.screen.removeAttr("style"),a>this._ui.screen.height()&&this._ui.screen.height(a)},_handleWindowKeyUp:function(b){if(this._isOpen&&b.keyCode===a.mobile.keyCode.ESCAPE)return this._eatEventAndClose(b)},_maybeRefreshTimeout:function(){var b=f();if(this._resizeData){if(b.x===this._resizeData.winCoords.x&&b.y===this._resizeData.winCoords.y&&b.cx===this._resizeData.winCoords.cx&&b.cy===this._resizeData.winCoords.cy)return!1;clearTimeout(this._resizeData.timeoutId)}return this._resizeData={timeoutId:setTimeout(a.proxy(this,"_resizeTimeout"),200),winCoords:b},!0},_resizeTimeout:function(){!this._maybeRefreshTimeout()&&this.positionTo==="window"&&(this._trigger("beforeposition"),this._ui.container.removeClass("ui-selectmenu-hidden").offset(this._placementCoords(this._desiredCoords(d,d,"window"))),this._resizeScreen(),this._resizeData=null,this._orientationchangeInProgress=!1)},_handleWindowResize:function(a){if(this._isOpen){if(this.positionTo!=="window")return this.close(),!1;this._maybeRefreshTimeout()}},_handleWindowOrientationchange:function(a){this._orientationchangeInProgress||(this._ui.container.addClass("ui-selectmenu-hidden").removeAttr("style"),this._orientationchangeInProgress=!0)},_create:function(){var b={screen:a("<div class='ui-screen-hidden ui-popup-screen'></div>"),placeholder:a("<div style='display: none;'><!-- placeholder --></div>"),container:a("<div class='ui-popup-container ui-selectmenu-hidden'></div>"),arrow:a("<div class='ui-arrow'></div>")},c=this.element.closest(".ui-page"),e=this.element.attr("id"),f=this;this.options.history=this.options.history&&a.mobile.ajaxEnabled&&a.mobile.hashListeningEnabled,c.length===0&&(c=a("body")),this.options.container=this.options.container||a.mobile.pageContainer,c.append(b.screen),b.container.insertAfter(b.screen),b.placeholder.insertAfter(this.element),e&&(b.screen.attr("id",e+"-screen"),b.container.attr("id",e+"-popup"),b.placeholder.html("<!-- placeholder for "+e+" -->")),b.container.append(this.element),b.container.append(b.arrow),this.element.addClass("ui-popup"),a.extend(this,{_page:c,_ui:b,_fallbackTransition:"",_currentTransition:!1,_prereqs:null,_isOpen:!1,_tolerance:null,_resizeData:null,_orientationchangeInProgress:!1,_globalHandlers:[{src:a.mobile.$window,handler:{orientationchange:a.proxy(this,"_handleWindowOrientationchange"),resize:a.proxy(this,"_handleWindowResize"),keyup:a.proxy(this,"_handleWindowKeyUp")}}]}),a.each(this.options,function(a,b){f.options[a]=d,f._setOption(a,b,!0)}),b.screen.bind("vclick",a.proxy(this,"_eatEventAndClose")),a.each(this._globalHandlers,function(a,b){b.src.bind(b.handler)})},_applyTheme:function(a,b,c){var d=(a.attr("class")||"").split(" "),e=!0,f=null,g,h=String(b);while(d.length>0){f=d.pop(),g=(new RegExp("^ui-"+c+"-([a-z])$")).exec(f);if(g&&g.length>1){f=g[1];break}f=null}b!==f&&(a.removeClass("ui-"+c+"-"+f),b!==null&&b!=="none"&&a.addClass("ui-"+c+"-"+h))},_setTheme:function(a){this._applyTheme(this.element,a,"body")},_setOverlayTheme:function(a){this._applyTheme(this._ui.screen,a,"overlay"),this._isOpen&&this._ui.screen.addClass("in")},_setShadow:function(a){this.element.toggleClass("ui-overlay-shadow",a)},_setCorners:function(a){this.element.toggleClass("ui-corner-all",a)},_applyTransition:function(b){this._ui.container.removeClass(this._fallbackTransition),b&&b!=="none"&&(this._fallbackTransition=a.mobile._maybeDegradeTransition(b),this._ui.container.addClass(this._fallbackTransition))},_setTransition:function(a){this._currentTransition||this._applyTransition(a)},_setTolerance:function(b){var c={t:5,r:5,b:5,l:5};if(b){var d=String(b).split(",");a.each(d,function(a,b){d[a]=parseInt(b,10)});switch(d.length){case 1:isNaN(d[0])||(c.t=c.r=c.b=c.l=d[0]);break;case 2:isNaN(d[0])||(c.t=c.b=d[0]),isNaN(d[1])||(c.l=c.r=d[1]);break;case 4:isNaN(d[0])||(c.t=d[0]),isNaN(d[1])||(c.r=d[1]),isNaN(d[2])||(c.b=d[2]),isNaN(d[3])||(c.l=d[3]);break;default:}}this._tolerance=c},_setOption:function(b,c){var e,f="_set"+b.charAt(0).toUpperCase()+b.slice(1);this[f]!==d&&this[f](c),e=["initSelector","closeLinkSelector","closeLinkEvents","navigateEvents","closeEvents","history","container"],a.mobile.widget.prototype._setOption.apply(this,arguments),a.inArray(b,e)===-1&&this.element.attr("data-"+(a.mobile.ns||"")+b.replace(/([A-Z])/,"-$1").toLowerCase(),c)},_placementCoords:function(d){var g=f(),h={x:this._tolerance.l,y:g.y+this._tolerance.t,cx:g.cx-this._tolerance.l-this._tolerance.r,cy:g.cy-this._tolerance.t-this._tolerance.b},i,j,k=a(this.link).offset(),l=[],m=[0,0],n;this._ui.container.css("max-width",h.cx),i={cx:this._ui.container.outerWidth(!0),cy:this._ui.container.outerHeight(!0)},j={x:e(h.cx,i.cx,h.x,d.x),y:e(h.cy,i.cy,h.y,d.y)},j.y=Math.max(0,j.y);var o=c.documentElement,p=c.body,q=Math.max(o.clientHeight,p.scrollHeight,p.offsetHeight,o.scrollHeight,o.offsetHeight);j.y-=Math.min(j.y,Math.max(0,j.y+i.cy-q));if(this.positionTo!=="origin")return{left:j.x,top:j.y,arrowleft:0,arrowtop:0};l=[k.left,k.top,o.clientHeight-(k.top+a(this.link).height()),o.clientWidth-(k.left+a(this.link).width())],n=l.indexOf(Math.max.apply(b,l));switch(n){case 0:m=[-a(this.link).width(),0],arrowtop=k.top-j.y+a(this.link).height()/2-parseInt(a(this._ui.arrow).css("border-width")),arrowleft=i.cx,a(this._ui.arrow).attr("class","").addClass("ui-arrow left");break;case 1:m=[0,-(j.y+i.cy-k.top)],arrowtop=i.cy-2,arrowleft=k.left-j.x+m[0]+a(this.link).width()/2-parseInt(a(this._ui.arrow).css("border-width"))/2,a(this._ui.arrow).attr("class","").addClass("ui-arrow bottom");break;case 2:m=[0,k.top+a(this.link).height()-j.y],arrowtop=-parseInt(a(this._ui.arrow).css("border-width"))*2+1,arrowleft=k.left-j.x+m[0]+a(this.link).width()/2-parseInt(a(this._ui.arrow).css("border-width"))/2,a(this._ui.arrow).attr("class","").addClass("ui-arrow top");break;case 3:m=[i.cx<a(this.link).width()?a(this.link).width()/2+i.cx/2:a(this.link).width(),0],arrowtop=k.top-j.y+a(this.link).height()/2-parseInt(a(this._ui.arrow).css("border-width")),arrowleft=-parseInt(a(this._ui.arrow).css("border-width"))*2,a(this._ui.arrow).attr("class","").addClass("ui-arrow right")}return{left:j.x+m[0],top:j.y+m[1],arrowleft:arrowleft,arrowtop:arrowtop}},_createPrereqs:function(b,c,d){var e=this,f;f={screen:a.Deferred(),container:a.Deferred()},f.screen.then(function(){f===e._prereqs&&b()}),f.container.then(function(){f===e._prereqs&&c()}),a.when(f.screen,f.container).done(function(){f===e._prereqs&&(e._prereqs=null,d())}),e._prereqs=f},_animate:function(b){this._ui.screen.removeClass(b.classToRemove).addClass(b.screenClassToAdd),b.prereqs.screen.resolve(),b.transition&&b.transition!=="none"?(b.applyTransition&&this._applyTransition(b.transition),this._ui.container.animationComplete(a.proxy(b.prereqs.container,"resolve")).addClass(b.containerClassToAdd).removeClass(b.classToRemove)):b.prereqs.container.resolve()},_desiredCoords:function(b,c,d){var e=null,g,h=f();if(d&&d!=="origin")if(d==="window")b=h.cx/2+h.x,c=h.cy/2+h.y;else{try{e=a(d)}catch(i){e=null}e&&(e.filter(":visible"),e.length===0&&(e=null))}e&&(g=e.offset(),b=g.left+e.outerWidth()/2,c=g.top+e.outerHeight()/2);if(a.type(b)!=="number"||isNaN(b))b=h.cx/2+h.x;if(a.type(c)!=="number"||isNaN(c))c=h.cy/2+h.y;return{x:b,y:c}},_openPrereqsComplete:function(){var a=this;a._ui.container.addClass("ui-popup-active"),a._isOpen=!0,a._resizeScreen(),setTimeout(function(){a._ui.container.attr("tabindex","0").focus(),a._trigger("afteropen")})},_open:function(c){var d,e,f=function(){var a=b,c=navigator.userAgent,d=c.match(/AppleWebKit\/([0-9\.]+)/),e=!!d&&d[1],f=c.match(/Android (\d+(?:\.\d+))/),g=!!f&&f[1],h=c.indexOf("Chrome")>-1;return f!==null&&g==="4.0"&&e&&e>534.13&&!h?!0:!1}();c=c||{},e=c.transition||this.options.transition,this._trigger("beforeposition"),d=this._placementCoords(this._desiredCoords(c.x,c.y,c.positionTo||this.options.positionTo||"origin")),this._createPrereqs(a.noop,a.noop,a.proxy(this,"_openPrereqsComplete")),e?(this._currentTransition=e,this._applyTransition(e)):e=this.options.transition,this.options.theme||this._setTheme(this._page.jqmData("theme")||a.mobile.getInheritedTheme(this._page,"c")),this._ui.screen.removeClass("ui-screen-hidden"),this._ui.container.removeClass("ui-selectmenu-hidden").offset(d),this._ui.arrow.css({top:d.arrowtop,left:d.arrowleft}),this.options.overlayTheme&&f&&this.element.closest(".ui-page").addClass("ui-popup-open"),this._animate({additionalCondition:!0,transition:e,classToRemove:"",screenClassToAdd:"in",containerClassToAdd:"in",applyTransition:!1,prereqs:this._prereqs})},_closePrereqScreen:function(){this._ui.screen.removeClass("out").addClass("ui-screen-hidden")},_closePrereqContainer:function(){this._ui.container.removeClass("reverse out").addClass("ui-selectmenu-hidden").removeAttr("style")},_closePrereqsDone:function(){var b=this,c=b.options;b._ui.container.removeAttr("tabindex"),c.container.unbind(c.closeEvents),b.element.undelegate(c.closeLinkSelector,c.closeLinkEvents),a.mobile.popup.active=d,b._trigger("afterclose")},_close:function(){this._ui.container.removeClass("ui-popup-active"),this._page.removeClass("ui-popup-open"),this._isOpen=!1,this.element.find("input").blur(),this._createPrereqs(a.proxy(this,"_closePrereqScreen"),a.proxy(this,"_closePrereqContainer"),a.proxy(this,"_closePrereqsDone")),this._animate({additionalCondition:this._ui.screen.hasClass("in"),transition:this._currentTransition||this.options.transition,classToRemove:"in",screenClassToAdd:"out",containerClassToAdd:"reverse out",applyTransition:!0,prereqs:this._prereqs})},_destroy:function(){var b=this;b._close(),b._setTheme("none"),b.element.insertAfter(b._ui.placeholder).removeClass("ui-popup ui-overlay-shadow ui-corner-all"),b._ui.screen.remove(),b._ui.container.remove(),b._ui.placeholder.remove(),a.each(b._globalHandlers,function(b,c){a.each(c.handler,function(a,b){c.src.unbind(a,b)})})},_bindContainerClose:function(){var b=this;b.options.container.one(b.options.closeEvents,a.proxy(b._close,b))},open:function(b){var c=this,e=this.options,f,g,h,i,j,k;if(a.mobile.popup.active)return;a.mobile.popup.active=this,b||(b=[]),b.link?c.link=b.link:event?c.link=a(event.target).closest("a")[0]||a(event.target).closest("div")[0]:c.positionTo="window",event&&(c.positionTo=b!=null&&b.positionTo!=null?b.positionTo:"origin"),a(c.link).jqmData("position-to")!=="window"&&c.positionTo!=="window"?(a(c.element).addClass("ui-ctxpopup"),a(c._ui.container).removeClass("ui-popup-container").addClass("ui-ctxpopup-container"),c.positionTo!=="origin"?a(c._ui.arrow).hide():a(c._ui.arrow).show()):(a(c._ui.arrow).hide(),this._setOverlayTheme("dim")),!b.x&&c.positionTo==="origin"&&(b.x=a(c.link).offset().left+a(c.link).outerWidth()/2),!b.y&&c.positionTo==="origin"&&(b.y=a(c.link).offset().top+a(c.link).outerHeight()/2);if(!e.history){c._open(b),c._bindContainerClose(),c.element.delegate(e.closeLinkSelector,e.closeLinkEvents,function(a){return c._close(),!1});return}g=a.mobile.dialogHashKey,h=a.mobile.activePage,i=h.is(".ui-dialog"),f=a.mobile.urlHistory.getActive().url,j=f.indexOf(g)>-1&&!i,k=a.mobile.urlHistory;if(j){c._open(b),c._bindContainerClose();return}f.indexOf(g)===-1&&!i?f+=g:f=a.mobile.path.parseLocation().hash+g,k.activeIndex===0&&f===k.initialDst&&(f+=g),e.container.one(e.navigateEvents,function(a){a.preventDefault(),c._open(b),c._bindContainerClose()}),k.ignoreNextHashChange=i,k.addNew(f,d,d,d,"dialog"),a.mobile.path.set(f)},close:function(){if(!a.mobile.popup.active)return;this.options.history?a.mobile.back():this._close()}}),a.mobile.popup.handleLink=function(b){var c=b.closest(":jqmData(role='page')"),d=c.length===0?a("body"):c,e=a(a.mobile.path.parseUrl(b.attr("href")).hash,d[0]),f;e.data("popup")&&(f=b.offset(),e.popup("open",{x:f.left+b.outerWidth()/2,y:f.top+b.outerHeight()/2,transition:a.mobile.getAttrFixed(b[0],"data-"+a.mobile.ns+"transition"),positionTo:a.mobile.getAttrFixed(b[0],"data-"+a.mobile.ns+"position-to"),link:b})),setTimeout(function(){b.removeClass(a.mobile.activeBtnClass)},300)},a.mobile.$document.bind("pagebeforechange",function(b,c){c.options.role==="popup"&&(a.mobile.popup.handleLink(c.options.link),b.preventDefault())}),a.mobile.$document.bind("pagecreate create",function(b){a.mobile.popup.prototype.enhanceWithin(b.target,!0)})}(a),function(a){var b=a("meta[name=viewport]"),c=b.attr("content"),d=c+",maximum-scale=1, user-scalable=no",e=c+",maximum-scale=10, user-scalable=yes",f=/(user-scalable[\s]*=[\s]*no)|(maximum-scale[\s]*=[\s]*1)[$,\s]/.test(c);a.mobile.zoom=a.extend({},{enabled:!f,locked:!1,disable:function(c){!f&&!a.mobile.zoom.locked&&(b.attr("content",d),a.mobile.zoom.enabled=!1,a.mobile.zoom.locked=c||!1)},enable:function(c){!f&&(!a.mobile.zoom.locked||c===!0)&&(b.attr("content",e),a.mobile.zoom.enabled=!0,a.mobile.zoom.locked=!1)},restore:function(){f||(b.attr("content",c),a.mobile.zoom.enabled=!0)}})}(a),function(a,c){a.widget("mobile.textinput",a.mobile.widget,{options:{theme:null,preventFocusZoom:/iPhone|iPad|iPod/.test(navigator.platform)&&navigator.userAgent.indexOf("AppleWebKit")>-1,initSelector:"input[type='text'], 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])",disabled:!1},_create:function(){function l(){setTimeout(function(){k.toggleClass("ui-input-clear-hidden",!d.val())},0)}var c=this,d=this.element,e=this.options,f=e.theme||a.mobile.getInheritedTheme(this.element,"c"),g=" ui-body-"+f,h=a.mobile.getAttrFixed(d[0],"data-"+a.mobile.ns+"mini")===!0,i=h?" ui-mini":"",j,k;a("label[for='"+d.attr("id")+"']").addClass("ui-input-text"),j=d.addClass("ui-input-text ui-body-"+f);switch(d.attr("type")){case"text":case"password":case"number":case"email":case"url":case"tel":d.attr({role:"textbox","aria-label":"Keyboard opened"});break;default:d.prop("tagName").toLowerCase()==="textarea"&&d.attr({role:"textbox","aria-label":"Keyboard opened"})}typeof d[0].autocorrect!="undefined"&&!a.support.touchOverflow&&(d[0].setAttribute("autocorrect","off"),d[0].setAttribute("autocomplete","off")),d.focus(function(){j.addClass(a.mobile.focusClass)}).blur(function(){j.removeClass(a.mobile.focusClass)}).bind("focus",function(){e.preventFocusZoom&&a.mobile.zoom.disable(!0)}).bind("blur",function(){e.preventFocusZoom&&a.mobile.zoom.enable(!0)});if(d.is("textarea")){var m=15,n=100,o;this._keyup=function(){var a=d[0].scrollHeight,c=d[0].clientHeight;c<a&&b.innerHeight/2>a&&d.height(a+m)},d.keyup(function(){clearTimeout(o),o=setTimeout(c._keyup,n)}),this._on(a.mobile.$document,{pagechange:"_keyup"}),a.trim(d.val())&&this._on(a.mobile.$window,{load:"_keyup"})}d.attr("disabled")&&this.disable()},disable:function(){var a;if(!this.element.attr("disabled",!0))return;return a=this.element,a.addClass("ui-disabled"),this._setOption("disabled",!0)},enable:function(){var a;if(!this.element.attr("disabled",!1))return;return a=this.element,a.removeClass("ui-disabled"),this._setOption("disabled",!1)}}),a.mobile.$document.bind("pagecreate create",function(b){a.mobile.textinput.prototype.enhanceWithin(b.target,!0)})}(a),function(a,b){a.mobile.listview.prototype.options.filter=!1,a.mobile.listview.prototype.options.filterPlaceholder="",a.mobile.listview.prototype.options.filterTheme="c";var c=function(a,b,c){return a.toString().toLowerCase().indexOf(b)===-1};a.mobile.listview.prototype.options.filterCallback=c,a.mobile.$document.delegate(":jqmData(role='listview')","listviewcreate",function(){var b=a(this),d=b.data("listview");if(!d.options.filter)return;var e=a("<form>",{"class":"ui-listview-filter ui-bar-"+d.options.filterTheme,role:"search"}),f=a("<input>",{placeholder:d.options.filterPlaceholder}).attr("data-"+a.mobile.ns+"type","search").jqmData("lastval","").bind("keyup change",function(){var e=a(this),f=this.value.toLowerCase(),g=null,h=e.jqmData("lastval")+"",i=!1,j="",k,l=d.options.filterCallback!==c;d._trigger("beforefilter","beforefilter",{input:this}),e.jqmData("lastval",f),l||f.length<h.length||f.indexOf(h)!==0?g=b.children():g=b.children(":not(.ui-screen-hidden)");if(f){for(var m=g.length-1;m>=0;m--)k=a(g[m]),j=a.mobile.getAttrFixed(k[0],"data-"+a.mobile.ns+"filtertext")||k.text(),k.is("li:jqmData(role=list-divider)")?(k.toggleClass("ui-filter-hidequeue",!i),i=!1):d.options.filterCallback(j,f,k)?k.toggleClass("ui-filter-hidequeue",!0):i=!0;g.filter(":not(.ui-filter-hidequeue)").toggleClass("ui-screen-hidden",!1),g.filter(".ui-filter-hidequeue").toggleClass("ui-screen-hidden",!0).toggleClass("ui-filter-hidequeue",!1)}else g.toggleClass("ui-screen-hidden",!1);d._refreshCorners()}).appendTo(e).textinput();d.options.inset&&e.addClass("ui-listview-filter-inset"),e.bind("submit",function(){return!1}).insertBefore(b)})}(a),function(a,d){a.widget("mobile.slider",a.mobile.widget,{widgetEventPrefix:"slide",options:{theme:null,trackTheme:null,disabled:!1,initSelector:"input[type='range'], :jqmData(type='range'), :jqmData(role='slider')",mini:!1},_create:function(){var e=this,f=this.element,g=a.mobile.getInheritedTheme(f,"c"),h=this.options.theme||g,i=this.options.trackTheme||g,j=f[0].nodeName.toLowerCase(),k=j==="select"?"ui-slider-switch":"",l=f.attr("id"),m=
+a("[for='"+l+"']"),n=m.attr("id")||l+"-label",o=m.attr("id",n),p=function(){return j==="input"?parseFloat(f.val()):f[0].selectedIndex},q=j==="input"?parseFloat(f.attr("min")):0,r=j==="input"?parseFloat(f.attr("max")):f.find("option").length-1,s=b.parseFloat(f.attr("step")||1),t=this.options.inline||a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"inline")===!0?" ui-slider-inline":"",u=this.options.mini||a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"min")?" ui-slider-mini":"",v=c.createElement("a"),w=a(v),x=c.createElement("div"),y=a(x),z=a.mobile.getAttrFixed(f[0],"data-"+a.mobile.ns+"highlight")!==!1&&j!=="select"?function(){var b=c.createElement("div");return b.className="ui-slider-bg "+a.mobile.activeBtnClass+" ui-btn-corner-all",a(b).prependTo(y)}():!1,A;this._type=j,v.setAttribute("href","#"),x.setAttribute("role","application"),x.className=["ui-slider ",k," ui-btn-down-",i," ui-btn-corner-all",t,u].join(""),v.className="ui-slider-handle",x.appendChild(v),a(f).find("option").length&&a(f).find("option").text()===""&&a(x).addClass("ui-toggle-switch"),w.buttonMarkup({corners:!0,theme:h,shadow:!0}).attr({role:"slider","aria-valuemin":q,"aria-valuemax":r,"aria-valuenow":p(),"aria-valuetext":p(),title:p(),"aria-labelledby":n}),a.extend(this,{slider:y,handle:w,valuebg:z,dragging:!1,beforeStart:null,userModified:!1,mouseMoved:!1});if(j==="select"){var B=c.createElement("div");B.className="ui-slider-inneroffset";for(var C=0,D=x.childNodes.length;C<D;C++)B.appendChild(x.childNodes[C]);x.appendChild(B),w.addClass("ui-slider-handle-snapping"),A=f.find("option");for(var E=0,F=A.length;E<F;E++){var G=E?"a":"b",H=E?" "+a.mobile.activeBtnClass:" ui-btn-down-"+i,I=c.createElement("div"),J=c.createElement("span");J.className=["ui-slider-label ui-slider-label-",G,H," ui-btn-corner-all"].join(""),J.setAttribute("role","img"),J.appendChild(c.createTextNode(A[E].innerHTML)),a(J).html()?a(J).html(a(J).text()):a(J).html(),a(J).prependTo(y)}e._labels=a(".ui-slider-label",y)}o.addClass("ui-slider"),f.addClass(j==="input"?"ui-slider-input":"ui-slider-switch").change(function(){e.mouseMoved||e.refresh(p(),!0)}).keyup(function(){e.refresh(p(),!0,!0)}).blur(function(){e.refresh(p(),!0)}),this._preventDocumentDrag=function(a){if(e.dragging&&!e.options.disabled)return e.mouseMoved=!0,j==="select"&&w.removeClass("ui-slider-handle-snapping"),e.refresh(a),e.userModified=e.beforeStart!==f[0].selectedIndex,!1},this._on(a.mobile.$document,{vmousemove:this._preventDocumentDrag}),f.bind("vmouseup",a.proxy(e._checkedRefresh,e)),y.bind("vmousedown",function(a){return e.options.disabled?!1:(e.dragging=!0,e.userModified=!1,e.mouseMoved=!1,j==="select"&&(e.beforeStart=f[0].selectedIndex),e.refresh(a),e._trigger("start"),!1)}).bind("vclick",!1),this._sliderMouseUp=function(){if(e.dragging)return e.dragging=!1,j==="select"&&(w.addClass("ui-slider-handle-snapping"),e.mouseMoved?e.userModified?e.refresh(e.beforeStart===0?1:0):e.refresh(e.beforeStart):e.refresh(e.beforeStart===0?1:0)),e.mouseMoved=!1,e._trigger("stop"),!1},this._on(y.add(c),{vmouseup:this._sliderMouseUp}),y.insertAfter(f),j==="select"&&this.handle.bind({focus:function(){y.addClass(a.mobile.focusClass)},blur:function(){y.removeClass(a.mobile.focusClass)}}),this.handle.bind({vmousedown:function(){a(this).focus()},vclick:!1,keydown:function(b){var c=p();if(e.options.disabled)return;switch(b.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:b.preventDefault(),e._keySliding||(e._keySliding=!0,a(this).addClass("ui-state-active"))}switch(b.keyCode){case a.mobile.keyCode.HOME:e.refresh(q);break;case a.mobile.keyCode.END:e.refresh(r);break;case a.mobile.keyCode.PAGE_UP:case a.mobile.keyCode.UP:case a.mobile.keyCode.RIGHT:e.refresh(c+s);break;case a.mobile.keyCode.PAGE_DOWN:case a.mobile.keyCode.DOWN:case a.mobile.keyCode.LEFT:e.refresh(c-s)}},keyup:function(b){e._keySliding&&(e._keySliding=!1,a(this).removeClass("ui-state-active"))}}),this.refresh(d,d,!0)},_checkedRefresh:function(){this.value!=this._value()&&this.refresh(this._value())},_value:function(){return this._type==="input"?parseFloat(this.element.val()):this.element[0].selectedIndex},refresh:function(b,c,d){var e=!1,f;a(this.handle).parents().is(".ui-toggle-switch")&&(e=!0),(this.options.disabled||this.element.attr("disabled"))&&this.disable(),this.value=this._value();var g=this.element,h,i=g[0].nodeName.toLowerCase(),j=i==="input"?parseFloat(g.attr("min")):0,k=i==="input"?parseFloat(g.attr("max")):g.find("option").length-1,l=i==="input"&&parseFloat(g.attr("step"))>0?parseFloat(g.attr("step")):1;if(typeof b=="object"){var m=b,n=8;if(!this.dragging||m.pageX<this.slider.offset().left-n||m.pageX>this.slider.offset().left+this.slider.width()+n)return;h=Math.round((m.pageX-this.slider.offset().left)/this.slider.width()*100)}else b==null&&(b=i==="input"?parseFloat(g.val()||0):g[0].selectedIndex),h=(parseFloat(b)-j)/(k-j)*100;if(isNaN(h))return;h<0&&(h=0),h>100&&(h=100);var o=h/100*(k-j)+j,p=(o-j)%l,q=o-p;Math.abs(p)*2>=l&&(q+=p>0?l:-l),o=parseFloat(q.toFixed(5)),o<j&&(o=j),o>k&&(o=k),this.handle.css("left",h+"%"),this.handle.attr({"aria-valuenow":i==="input"?o:g.find("option").eq(o).attr("value"),"aria-valuetext":i==="input"?o:g.find("option").eq(o).getEncodedText(),title:i==="input"?o:g.find("option").eq(o).getEncodedText()}),e||this.valuebg&&this.valuebg.css("width",h+"%");if(e)f=a(this.handle).parents(".ui-slider"),a(this.handle).attr("aria-valuenow")==="on"?(f.children("span.ui-slider-label-a").show(),f.children("span.ui-slider-label-b").hide()):(f.children("span.ui-slider-label-b").show(),f.children("span.ui-slider-label-a").hide());else if(this._labels){var r=this.handle.width()/this.slider.width()*100,s=h&&r+(100-r)*h/100,t=h===100?0:Math.min(r+100-s,100);this._labels.each(function(){var b=a(this).is(".ui-slider-label-a");a(this).width((b?s:t)+"%")})}if(!d){var u=!1;i==="input"?(u=g.val()!==o,g.val(o)):(u=g[0].selectedIndex!==o,g[0].selectedIndex=o),!c&&u&&g.trigger("change")}},enable:function(){return this.element.attr("disabled",!1),this.slider.removeClass("ui-disabled").attr("aria-disabled",!1),this._setOption("disabled",!1)},disable:function(){return this.element.attr("disabled",!0),this.slider.addClass("ui-disabled").attr("aria-disabled",!0),this._setOption("disabled",!0)}}),a.mobile.$document.bind("pagecreate create",function(b){a.mobile.slider.prototype.enhanceWithin(b.target,!0)})}(a),function(a,d){a.widget("mobile.selectmenu",a.mobile.widget,{options:{theme:null,disabled:!1,icon:"arrow-d",iconpos:"right",inline:!1,corners:!0,shadow:!0,iconshadow:!0,overlayTheme:"a",hidePlaceholderMenuItems:!0,closeText:"Close",nativeMenu:!0,preventFocusZoom:/iPhone|iPad|iPod/.test(navigator.platform)&&navigator.userAgent.indexOf("AppleWebKit")>-1,initSelector:"select:not( :jqmData(role='slider') )",mini:!1},_button:function(){return a("<div/>")},_setDisabled:function(a){return this.element.attr("disabled",a),this.button.attr("aria-disabled",a),this._setOption("disabled",a)},_focusButton:function(){var a=this;setTimeout(function(){a.button.focus()},40)},_selectOptions:function(){return this.select.find("option")},_preExtension:function(){var b="";!~this.element[0].className.indexOf("ui-btn-left")||(b=" ui-btn-left"),!~this.element[0].className.indexOf("ui-btn-right")||(b=" ui-btn-right"),this.select=this.element.wrap("<div class='ui-select"+b+"'>"),this.selectID=this.select.attr("id"),this.label=a("label[for='"+this.selectID+"']").addClass("ui-select"),this.isMultiple=this.select[0].multiple,this.options.theme||(this.options.theme=a.mobile.getInheritedTheme(this.select,"c"))},_create:function(){this._preExtension(),this._trigger("beforeCreate"),this.button=this._button();var c=this,d=this.options,e=d.inline||a.mobile.getAttrFixed(this.select[0],"data-"+a.mobile.ns+"inline"),f=d.mini||a.mobile.getAttrFixed(this.select[0],"data-"+a.mobile.ns+"mini"),g=d.icon?d.iconpos||a.mobile.getAttrFixed(this.select[0],"data-"+a.mobile.ns+"iconpos"):!1,h=this.select[0].selectedIndex===-1?0:this.select[0].selectedIndex,i=this.button.insertBefore(this.select).buttonMarkup({theme:d.theme,icon:d.icon,iconpos:g,inline:e,corners:d.corners,shadow:d.shadow,iconshadow:d.iconshadow,mini:f});this.setButtonText(),i.children(".ui-btn-inner").removeClass("ui-btn-icon-only"),d.nativeMenu&&b.opera&&b.opera.version&&i.addClass("ui-select-nativeonly"),this.isMultiple&&(this.buttonCount=a("<span>").addClass("ui-li-count ui-btn-up-c ui-btn-corner-all").hide().appendTo(i.addClass("ui-li-has-count"))),(d.disabled||this.element.attr("disabled"))&&this.disable(),this.select.change(function(){c.refresh()}),this.build()},build:function(){var b=this;this.select.appendTo(b.button).bind("vmousedown",function(){b.button.addClass(a.mobile.activeBtnClass)}).bind("focus",function(){b.button.addClass(a.mobile.focusClass)}).bind("blur",function(){b.button.removeClass(a.mobile.focusClass)}).bind("focus vmouseover",function(){b.button.trigger("vmouseover")}).bind("vmousemove",function(){b.button.removeClass(a.mobile.activeBtnClass)}).bind("change blur vmouseout",function(){b.button.trigger("vmouseout").removeClass(a.mobile.activeBtnClass)}).bind("change blur",function(){b.button.removeClass("ui-btn-down-"+b.options.theme)}),b.button.bind("vmousedown",function(){b.options.preventFocusZoom&&a.mobile.zoom.disable(!0)}).bind("mouseup",function(){b.options.preventFocusZoom&&setTimeout(function(){a.mobile.zoom.enable(!0)},0)})},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 b=this,d=this.selected(),e=this.placeholder,f=a(c.createElement("span"));this.button.find(".ui-btn-text").html(function(){return d.length?e=d.map(function(){return a(this).text()}).get().join(", "):e=b.placeholder,f.text(e).addClass(b.select.attr("class")).addClass(d.attr("class"))})},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(!0),this.button.addClass("ui-disabled")},enable:function(){this._setDisabled(!1),this.button.removeClass("ui-disabled")}}),a.mobile.$document.bind("pagecreate create",function(b){a.mobile.selectmenu.prototype.enhanceWithin(b.target,!0)})}(a),function(a,b){var d=function(b){var d=b.select,e=b.selectID,f=b.label,g=b.select.closest(".ui-page"),h=b._selectOptions(),i=b.isMultiple=b.select[0].multiple,j=e+"-button",k=e+"-menu",l=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>"),m=a("<div>",{"class":"ui-selectmenu"}).insertAfter(b.select).popup({theme:"a"}),n=a("<ul>",{"class":"ui-selectmenu-list",id:k,role:"listbox","aria-labelledby":j}).attr("data-"+a.mobile.ns+"theme",b.options.theme).appendTo(m),o=a("<div>",{"class":"ui-header ui-bar-"+b.options.theme}).prependTo(m),p=a("<h1>",{"class":"ui-title"}).appendTo(o),q,r,s;b.isMultiple&&(s=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(o).buttonMarkup()),a.extend(b,{select:b.select,selectID:e,buttonId:j,menuId:k,thisPage:g,menuPage:l,label:f,selectOptions:h,isMultiple:i,theme:b.options.theme,listbox:m,list:n,header:o,headerTitle:p,headerClose:s,menuPageContent:q,menuPageClose:r,placeholder:"",build:function(){var c=this;c.refresh(),c.select.attr("tabindex","-1").focus(function(){a(this).blur(),c.button.focus()}),c.button.bind("vclick keydown",function(b){if(b.type==="vclick"||b.keyCode&&(b.keyCode===a.mobile.keyCode.ENTER||b.keyCode===a.mobile.keyCode.SPACE))c.open(),b.preventDefault()}),c.list.attr("role","listbox").bind("focusin",function(b){a(b.target).attr("tabindex","0").trigger("vmouseover")}).bind("focusout",function(b){a(b.target).attr("tabindex","-1").trigger("vmouseout")}).delegate("li:not(.ui-disabled, .ui-li-divider)","click",function(d){var e=c.select[0].selectedIndex,f=c.list.find("li:not(.ui-li-divider)").index(this),g=c._selectOptions().eq(f)[0];g.selected=c.isMultiple?!g.selected:!0,c.isMultiple&&a(this).find(".ui-icon").toggleClass("ui-icon-checkbox-on",g.selected).toggleClass("ui-icon-checkbox-off",!g.selected),(c.isMultiple||e!==f)&&c.select.trigger("change"),c.isMultiple?c.list.find("li:not(.ui-li-divider)").eq(f).addClass("ui-btn-down-"+b.options.theme).find("a").first().focus():c.close(),d.preventDefault()}).keydown(function(c){var d=a(c.target),e=d.closest("li"),f,g;switch(c.keyCode){case 38:return f=e.prev().not(".ui-selectmenu-placeholder"),f.is(".ui-li-divider")&&(f=f.prev()),f.length&&(d.blur().attr("tabindex","-1"),f.addClass("ui-btn-down-"+b.options.theme).find("a").first().focus()),!1;case 40:return g=e.next(),g.is(".ui-li-divider")&&(g=g.next()),g.length&&(d.blur().attr("tabindex","-1"),g.addClass("ui-btn-down-"+b.options.theme).find("a").first().focus()),!1;case 13:case 32:return d.trigger("click"),!1}}),c.menuPage.bind("pagehide",function(){c.list.appendTo(c.listbox),c._focusButton(),a.mobile._bindPageRemove.call(c.thisPage)}),c.listbox.bind("popupafterclose",function(a){c.close()}),c.isMultiple&&c.headerClose.click(function(){if(c.menuType==="overlay")return c.close(),!1}),c.thisPage.addDependents(this.menuPage)},_isRebuildRequired:function(){var a=this.list.find("li"),b=this._selectOptions();return b.text()!==a.text()},selected:function(){return this._selectOptions().filter(":selected:not( :jqmData(placeholder='true') )")},refresh:function(b,c){var d=this,e=this.element,f=this.isMultiple,g;(b||this._isRebuildRequired())&&d._buildList(),g=this.selectedIndices(),d.setButtonText(),d.setButtonCount(),d.list.find("li:not(.ui-li-divider)").removeClass(a.mobile.activeBtnClass).attr("aria-selected",!1).each(function(b){if(a.inArray(b,g)>-1){var c=a(this);c.attr("aria-selected",!0),d.isMultiple?c.find(".ui-icon").removeClass("ui-icon-checkbox-off").addClass("ui-icon-checkbox-on"):c.is(".ui-selectmenu-placeholder")?c.next().addClass(a.mobile.activeBtnClass):c.addClass(a.mobile.activeBtnClass)}})},close:function(){if(this.options.disabled||!this.isOpen)return;var b=this;b.menuType==="page"?a.mobile.back():(b.listbox.popup("close"),b.list.appendTo(b.listbox),b._focusButton()),b.isOpen=!1},open:function(){function n(){var d=c.list.find("."+a.mobile.activeBtnClass+" a");d.length===0&&(d=c.list.find("li.ui-btn:not( :jqmData(placeholder='true') ) a")),d.first().focus().closest("li").addClass("ui-btn-down-"+b.options.theme)}if(this.options.disabled)return;var c=this,d=a.mobile.$window,e=c.list.parent(),f=e.outerHeight(),g=e.outerWidth(),h=a("."+a.mobile.activePageClass),i=d.scrollTop(),j=c.button.offset().top,k=d.height(),m=d.width();c.button.addClass(a.mobile.activeBtnClass),setTimeout(function(){c.button.removeClass(a.mobile.activeBtnClass)},300),f>k-80||!a.support.scrollTop?(c.menuPage.appendTo(a.mobile.pageContainer).page(),c.menuPageContent=l.find(".ui-content"),c.menuPageClose=l.find(".ui-header a"),c.thisPage.unbind("pagehide.remove"),i===0&&j>k&&c.thisPage.one("pagehide",function(){a(this).jqmData("lastScroll",j)}),c.menuPage.one("pageshow",function(){n(),c.isOpen=!0}),c.menuType="page",c.menuPageContent.append(c.list),c.menuPage.find("div .ui-title").text(c.label.text()),a.mobile.changePage(c.menuPage,{transition:a.mobile.defaultDialogTransition})):(c.menuType="overlay",c.listbox.one("popupafteropen",n).popup("open",{x:c.button.offset().left+c.button.outerWidth()/2,y:c.button.offset().top+c.button.outerHeight()/2}),c.isOpen=!0)},_buildList:function(){var b=this,d=this.options,e=this.placeholder,f=!0,g=[],h=[],i=b.isMultiple?"checkbox-off":"false";b.list.empty().filter(".ui-listview").listview("destroy");var j=b.select.find("option"),k=j.length,l=this.select[0],m="data-"+a.mobile.ns,n=m+"option-index",o=m+"icon",p=m+"role",q=m+"placeholder",r=c.createDocumentFragment(),s=!1,t;for(var u=0;u<k;u++,s=!1){var v=j[u],w=a(v),x=v.parentNode,y=w.text(),z=c.createElement("a"),A=[];z.setAttribute("href","#"),z.appendChild(c.createTextNode(y));if(x!==l&&x.nodeName.toLowerCase()==="optgroup"){var B=x.getAttribute("label");if(B!==t){var C=c.createElement("li");C.setAttribute(p,"list-divider"),C.setAttribute("role","option"),C.setAttribute("tabindex","-1"),C.appendChild(c.createTextNode(B)),r.appendChild(C),t=B}}f&&(!v.getAttribute("value")||y.length===0||w.jqmData("placeholder"))&&(f=!1,s=!0,v.setAttribute(q,!0),d.hidePlaceholderMenuItems&&A.push("ui-selectmenu-placeholder"),e||(e=b.placeholder=y));var D=c.createElement("li");v.disabled&&(A.push("ui-disabled"),D.setAttribute("aria-disabled",!0)),D.setAttribute(n,u),D.setAttribute(o,i),s&&D.setAttribute(q,!0),D.className=A.join(" "),D.setAttribute("role","option"),z.setAttribute("tabindex","-1"),D.appendChild(z),r.appendChild(D)}b.list[0].appendChild(r),!this.isMultiple&&!e.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.mobile.$document.bind("selectmenubeforecreate",function(b){var c=a(b.target).data("selectmenu");!c.options.nativeMenu&&c.element.parents(":jqmData(role='popup')").length===0&&d(c)})}(a),function(a,c){a.widget("mobile.fixedtoolbar",a.mobile.widget,{options:{visibleOnPageShow:!0,disablePageZoom:!0,transition:"slide",fullscreen:!1,tapToggle:!0,tapToggleBlacklist:"a, button, input, select, textarea, .ui-header-fixed, .ui-footer-fixed, .ui-popup",hideDuringFocus:"input, textarea, select",updatePagePadding:!0,trackPersistentToolbars:!0,supportBlacklist:function(){var a=b,c=navigator.userAgent,d=navigator.platform,e=c.match(/AppleWebKit\/([0-9]+)/),f=!!e&&e[1],g=c.match(/Fennec\/([0-9]+)/),h=!!g&&g[1],i=c.match(/Opera Mobi\/([0-9]+)/),j=!!i&&i[1];return(d.indexOf("iPhone")>-1||d.indexOf("iPad")>-1||d.indexOf("iPod")>-1)&&f&&f<534||a.operamini&&{}.toString.call(a.operamini)==="[object OperaMini]"||i&&j<7458||c.indexOf("Android")>-1&&f&&f<533||h&&h<6||"palmGetResource"in b&&f&&f<534||c.indexOf("MeeGo")>-1&&c.indexOf("NokiaBrowser/8.5.0")>-1?!0:!1},initSelector:":jqmData(position='dummy')"},_create:function(){var a=this,b=a.options,c=a.element,d=c.is(":jqmData(role='header')")?"header":"footer",e=c.closest(".ui-page");if(b.supportBlacklist()){a.destroy();return}c.addClass("ui-"+d+"-fixed"),b.fullscreen?(c.addClass("ui-"+d+"-fullscreen"),e.addClass("ui-page-"+d+"-fullscreen")):e.addClass("ui-page-"+d+"-fixed"),a._addTransitionClass(),a._bindPageEvents(),a._bindToggleHandlers()},_addTransitionClass:function(){var a=this.options.transition;a&&a!=="none"&&(a==="slide"&&(a=this.element.is(".ui-header")?"slidedown":"slideup"),this.element.addClass(a))},_bindPageEvents:function(){var b=this,c=b.options,d=b.element;d.closest(".ui-page").bind("pagebeforeshow",function(){c.disablePageZoom&&a.mobile.zoom.disable(!0),c.visibleOnPageShow||b.hide(!0)}).bind("webkitAnimationStart animationstart updatelayout",function(){var a=this;c.updatePagePadding&&b.updatePagePadding(a)}).bind("pageshow",function(){var d=this;b.updatePagePadding(d),c.updatePagePadding&&a.mobile.$window.bind("throttledresize."+b.widgetName,function(){b.updatePagePadding(d)})}).bind("pagebeforehide",function(d,e){c.disablePageZoom&&a.mobile.zoom.enable(!0),c.updatePagePadding&&a.mobile.$window.unbind("throttledresize."+b.widgetName);if(c.trackPersistentToolbars){var f=a(".ui-footer-fixed:jqmData(id)",this),g=a(".ui-header-fixed:jqmData(id)",this),h=f.length&&e.nextPage&&a(".ui-footer-fixed:jqmData(id='"+f.jqmData("id")+"')",e.nextPage)||a(),i=g.length&&e.nextPage&&a(".ui-header-fixed:jqmData(id='"+g.jqmData("id")+"')",e.nextPage)||a();if(h.length||i.length)h.add(i).appendTo(a.mobile.pageContainer),e.nextPage.one("pageshow",function(){h.add(i).appendTo(this)})}})},_visible:!0,updatePagePadding:function(b){var c=this.element,d=c.is(".ui-header");if(this.options.fullscreen)return;b=b||c.closest(".ui-page"),a(b).css("padding-"+(d?"top":"bottom"),c.outerHeight())},_useTransition:function(b){var c=a.mobile.$window,d=this.element,e=c.scrollTop(),f=d.height(),g=d.closest(".ui-page").height(),h=a.mobile.getScreenHeight(),i=d.is(":jqmData(role='header')")?"header":"footer";return!b&&(this.options.transition&&this.options.transition!=="none"&&(i==="header"&&!this.options.fullscreen&&e>f||i==="footer"&&!this.options.fullscreen&&e+h<g-f)||this.options.fullscreen)},show:function(a){var b="ui-fixed-hidden",c=this.element;this._useTransition(a)?c.removeClass("out "+b).addClass("in"):c.removeClass(b),this._visible=!0},hide:function(a){var b="ui-fixed-hidden",c=this.element,d="out"+(this.options.transition==="slide"?" reverse":"");this._useTransition(a)?c.addClass(d).removeClass("in").animationComplete(function(){c.addClass(b).removeClass(d)}):c.addClass(b).removeClass(d),this._visible=!1},toggle:function(){this[this._visible?"hide":"show"]()},_bindToggleHandlers:function(){var b=this,c=b.options,d=b.element;d.closest(".ui-page").bind("vclick",function(d){c.tapToggle&&!a(d.target).closest(c.tapToggleBlacklist).length&&b.toggle()}).bind("focusin focusout",function(d){screen.width<500&&a(d.target).is(c.hideDuringFocus)&&!a(d.target).closest(".ui-header-fixed, .ui-footer-fixed").length&&b[d.type==="focusin"&&b._visible?"hide":"show"]()})},destroy:function(){this.element.removeClass("ui-header-fixed ui-footer-fixed ui-header-fullscreen ui-footer-fullscreen in out fade slidedown slideup ui-fixed-hidden"),this.element.closest(".ui-page").removeClass("ui-page-header-fixed ui-page-footer-fixed ui-page-header-fullscreen ui-page-footer-fullscreen")}}),a.mobile.$document.bind("pagecreate create",function(b){a(b.target).jqmData("fullscreen")&&a(a.mobile.fixedtoolbar.prototype.options.initSelector,b.target).not(":jqmData(fullscreen)").jqmData("fullscreen",!0),a.mobile.fixedtoolbar.prototype.enhanceWithin(b.target)})}(a),function(a,b){function i(a){d=a.originalEvent,h=d.accelerationIncludingGravity,e=Math.abs(h.x),f=Math.abs(h.y),g=Math.abs(h.z),!b.orientation&&(e>7||(g>6&&f<8||g<8&&f>6)&&e>5)?c.enabled&&c.disable():c.enabled||c.enable()}if(!(/iPhone|iPad|iPod/.test(navigator.platform)&&navigator.userAgent.indexOf("AppleWebKit")>-1))return;var c=a.mobile.zoom,d,e,f,g,h;a.mobile.$window.bind("orientationchange.iosorientationfix",c.enable).bind("devicemotion.iosorientationfix",i)}(a,this),function(a,b,d){function h(){e.removeClass("ui-mobile-rendering")}var e=a("html"),f=a("head"),g=a.mobile.$window;a(b.document).trigger("mobileinit");if(!a.mobile.gradeA())return;a.mobile.ajaxBlacklist&&(a.mobile.ajaxEnabled=!1),e.addClass("ui-mobile ui-mobile-rendering"),setTimeout(h,5e3),a.extend(a.mobile,{addEventBlocker:function(){e.addClass("ui-blocker"),e.bind("touchstart touchend vclick mousedown mouseup click",function(){return!1})},removeEventBlocker:function(){e.removeClass("ui-blocker"),e.unbind("touchstart touchend vclick mousedown mouseup click")},initializePage:function(){var b=a(":jqmData(role='page'), :jqmData(role='dialog')"),d=a.mobile.path.parseLocation().hash.replace("#",""),e=c.getElementById(d);b.length||(b=a("body").wrapInner("<div data-"+a.mobile.ns+"role='page'></div>").children(0)),b.each(function(){var b=a(this);b[0].getAttribute("data-"+a.mobile.ns+"url")||b.attr("data-"+a.mobile.ns+"url",b.attr("id")||location.pathname+location.search)}),a.mobile.firstPage=b.first(),a.mobile.pageContainer=a.mobile.firstPage.parent().addClass("ui-mobile-viewport"),g.trigger("pagecontainercreate"),a.mobile.showPageLoadingMsg(),a.mobile.addEventBlocker(),h(),!a.mobile.hashListeningEnabled||!a.mobile.path.isHashValid(location.hash)||!a(e).is(':jqmData(role="page")')&&!a.mobile.path.isPath(d)&&d!==a.mobile.dialogHashKey?(a.mobile.path.isHashValid(location.hash)&&(a.mobile.urlHistory.initialDst=d.replace("#","")),a.mobile.changePage(a.mobile.firstPage,{transition:"none",reverse:!0,changeHash:!1,fromHashChange:!0})):g.trigger("hashchange",[!0])}}),a.mobile.navreadyDeferred.resolve(),a(function(){b.scrollTo(0,1),a.mobile.defaultHomeScroll=!a.support.scrollTop||a.mobile.$window.scrollTop()===1?0:1,a.fn.controlgroup&&a.mobile.$document.bind("pagecreate create",function(b){a(":jqmData(role='controlgroup')",b.target).jqmEnhanceable().controlgroup({excludeInvisible:!1})}),a.mobile.autoInitializePage&&a.mobile.initializePage(),g.load(a.mobile.silentScroll),a.support.cssPointerEvents||a.mobile.$document.delegate(".ui-disabled","vclick",function(a){a.preventDefault(),a.stopImmediatePropagation()})})}(a,this)});
 /*!
  * Globalize
  *
index 2d63d3e..4703445 100644 (file)
                align_type: null,
                direction: 1,
                container: null,
+               orientationEventFire: false,
 
                _resize: function ( index ) {
                        var img = this.images[index],
 
                        obj.css( "display", "block" );
                        obj.append( this.images[index] );
-
                        loading();
                },
 
                        this.container.unbind( 'vmouseup' );
                        this.container.unbind( 'vmouseout' );
                },
+               _setTranslateposition : function ( $ele, value ) {
+                       var translate,
+                               cssArray = null;
+
+                       if ( $.support.cssTransform3d ) {
+                               translate = "translate3d(" + value + ", 0px, 0px)";
+                       } else {
+                               translate = "translate(" + value + ", 0px)";
+                       }
+                       cssArray = {"-moz-transform": translate,
+                                       "-webkit-transform": translate,
+                                       "-ms-transform": translate,
+                                       "-o-transform": translate,
+                                       "transform": translate};
+
+                       $ele.css(cssArray);
+                       return $ele;
+               },
                _moveLeft : function ( $ele , value , duration) {
                        var translate,
                                transition = "",
                        } else {
                                translate = "translate(" + value + ", 0px)";
                        }
-                       if( !duration ||  duration !== undefined ) {
+                       if( duration !== undefined ) {
                                transition =  "-webkit-transform " + (duration / 1000)+ "s ease";
                        }
                        cssArray = {"-moz-transform": translate,
                        this._attach( this.index + 1, this.next_img );
 
                        if ( this.prev_img.length ) {
-                               this._moveLeft( this.prev_img, -this.window_width + 'px');
+                               this._setTranslateposition( this.prev_img, -this.window_width + 'px');
                        }
 
                        this._moveLeft( this.cur_img, '0px');
                        if ( this.next_img.length ) {
-                               this._moveLeft( this.next_img, this.window_width + 'px' );
+                               this._setTranslateposition( this.next_img, this.window_width + 'px' );
                        }
                },
 
 
                        this.align_type = $( this.element ).jqmData( 'vertical-align' );
 
-                       $( window ).bind( 'resize', function () {
-                               self.refresh();
+                       $.extend( this, {
+                               _globalHandlers: [
+                                       {
+                                               src: $( window ),
+                                               handler: {
+                                                       orientationchange: $.proxy( this, "_orientationHandler" ),
+                                                       resize: $.proxy( this, "_resizeHandler" )
+                                               }
+                                       }
+                               ]
+                       });
+
+                       $.each( this._globalHandlers, function( idx, value ) {
+                               value.src.bind( value.handler );
                        });
                },
 
 
                        this._detach_all();
                },
-
+               _resizeHandler: function() {
+                       var self = this;
+                       if( self.orientationEventFire ) {
+                               self.refresh();
+                               self.orientationEventFire = false;
+                       }
+               },
+               _orientationHandler: function() {
+                       var self = this;
+                       self.refresh();
+                       self.orientationEventFire = true;
+               },
                refresh: function ( start_index ) {
                        this._update();
 
                                        this.cur_img = this.prev_img;
                                        this.prev_img = this.prev_img.prev();
                                        if ( this.prev_img.length ) {
-                                               this._moveLeft( this.prev_img, -this.window_width);
+                                               this._moveLeft( this.prev_img, -this.window_width + 'px' );
                                                this._attach( index - 2, this.prev_img );
                                        }
                                        this.index--;
                                        this.cur_img = this.next_img;
                                        this.next_img = this.next_img.next();
                                        if ( this.next_img.length ) {
-                                               this._moveLeft( this.next_img, this.window_width);
+                                               this._moveLeft( this.next_img, this.window_width + 'px' );
                                                this._attach( index + 2, this.next_img );
                                        }
                                }
                                temp_img = this.prev_img;
                                this.prev_img = this.prev_img.prev();
                                if ( this.prev_img.length ) {
-                                       this._moveLeft( this.prev_img, -this.window_width);
+                                       this._moveLeft( this.prev_img, -this.window_width + 'px' );
                                        this._attach( index - 1, this.prev_img );
                                }
                                this.index--;
                                temp_img = this.next_img;
                                this.next_img = this.next_img.next();
                                if ( this.next_img.length ) {
-                                       this._moveLeft( this.next_img, this.window_width);
+                                       this._moveLeft( this.next_img, this.window_width + 'px' );
                                        this._attach( index + 1, this.next_img );
                                }
 
                        }
 
                        this.refresh( index );
+               },
+
+               destory: function() {
+                       $( window ).unbind( 'resize', this._resizeHandler );
+                       $( window ).unbind( 'orientationchange' , this._orientationHandler );
                }
+
        }); /* End of widget */
 
        // auto self-init widgets
  * DEALINGS IN THE SOFTWARE.
  * ***************************************************************************
  *
- * Authors: Yonghwi Park <yonghwi0324.park@samsung.com>
- *              Wonseop Kim <wonseop.kim@samsung.com>
+ *  Author: Sanghee Lee <sang-hee.lee@samsung.com>
 */
 
 /**
+ *  Splitview is a widget which can show different HTML contents at the same time on each divided pane.
+ *  A user can place Splitview controls on JQuery Mobile's Content area and arrange two panes on the widget.
+ *  And HTML fragments or another Splitview also can be placed on the pane.
+ *  The number of panes inside of Splitview is restricted as two.
+ *  If a user define only one pane in Splitview, a empty pane will be added automatically,
+ *  on the other hand, if 3 or more panes are defined in Splitview, the panes after two will be ignored and removed from the DOM tree.
+ *  The HTML fragments of a pane should be composed of elements describing a part of Web page (e.g. <div>…</div>).
+ *  Also widgets can be included in the HTML fragments.
  *
- * MultiMediaView is a widget that lets the user view and handle multimedia contents.
- * Video and audio elements are coded as standard HTML elements and enhanced by the 
- * MultiMediaview to make them attractive and usable on a mobile device.
- *
- * HTML Attributes:
- *                     data-theme : Set a theme of widget.
- *                             If this value is not defined, widget will use parent`s theme. (optional)
- *                     data-controls : If this value is 'true', widget will use belonging controller.
- *                             If this value is 'false', widget will use browser`s controller.
- *                             Default value is 'true'.
- *                     data-full-screen : Set a status that full-screen when inital start.
- *                             Default value is 'false'.
- *
- * APIs:
- *                     width( [number] )
- *                                     : Get or set the width of widget.
- *                                     The first argument is the width of widget.
- *                                     If no first argument is specified, will act as a getter.
- *                     height( [number] )
- *                                     : Get or set the height of widget.
- *                                     The first argument is the height of widget.
- *                                     If no first argument is specified, will act as a getter.
- *                     fullScreen( [boolean] )
- *                                     : Get or Set the status of full-screen.
- *                                     If no first argument is specified, will act as a getter.
+ *  HTML Attributes:
  *
- * Events:
+ *      data-fixed : The resizing mode of panes - fixed and flexible mode.
+ *              If the value is true, the panes' sizes will be fixed, or if not, it will be flexible. (Default : false)
+ *      data-divider-vertical : The direction of dividers.
+ *              If the value is true, the panes will be placed in horizontal direction,
+ *              or if not, it will be placed in vertical direction. (Default : "true")
+ *      data-ratio : The ratio of two panes' widths or heights. (Default : [ 1/2, 1/2 ]
  *
- *                     create :  triggered when a multimediaview is created.
+ *  APIs:
  *
- * Examples:
+ *      pane ( id [ , element ] )
+ *          : This method replaces child contents of a pane indicated by id attribute with contents of inputted element.
+ *            If second argument is not specified, it will act as a getter method.
+ *            The string of id has to be started with "#" which means "id" of CSS selectors.
+ *      maximize ( id )
+ *          : This method maximizes a pane's size indicated by id.
+ *            The string of id has to be started with "#" which means "id" of CSS selectors.
+ *      restore ()
+ *          : This method restores all panes' sizes to the ratio prior to maximization.
  *
- *                     VIDEO :
- *                             <video data-controls="true" style="width:100%;">
- *                                     <source src="media/oceans-clip.mp4" type="video/mp4" />
- *                                     Your browser does not support the video tag.
- *                             </video>
+ *  Examples:
  *
- *                     AUDIO :
- *                             <audio data-controls="true" style="width:100%;">
- *                                     <source src="media/Over the horizon.mp3" type="audio/mp3" />
- *                                     Your browser does not support the audio tag.
- *                             </audio>
+ *      <div data-role="splitview" data-fixed="false" data-divider-vertical="true" data-ratio="0.5, 0.5">
+ *          <div class="ui-pane">pane0</div>
+ *          <div class="ui-pane">pane1</div>
+ *      </div>
  *
  */
+
+
 /**
-       @class MutimediaView
-       The multimedia view widget shows a player control that you can use to view and handle multimedia content. This widget uses the standard HTML video and audio elements, which have been enhanced for use on a mobile device.
+       @class Splitview
+       Splitview widget enables a user to place and arrange several panes. Each divided pane can show repective HTML contents.
 
-       To add a multimedia view widget to the application, use the following code:
-       
-               // Video player control
-               <video data-controls="true" style="width:100%;">
-               <source src="<VIDEO_FILE_URL>" type="video/mp4" /> Your browser does not support the video tag. </video>
-               // Audio player control
-               <audio data-controls="true" style="width:100%;"> <source src="<AUDIO_FILE_URL>" type="audio/mp3" /> Your browser does not support the audio tag.
-               </audio>
+       To add a Splitview widget to the application, use the following code:
 
-       The multimedia view can define a callback for the create event, which is fired when the widget is created.
-               $('.selector').multimediaview({
-                       create:function(event, u){...}
-               });
-               $(".selector").bind("create", function(event, ui)
-               {
-                       // Respond to the multimedia view widget creation
-               });
+               <div data-role="splitview" data-fixed="false" data-divider-vertical="true" data-ratio="0.5, 0.5">
+                       <div class="ui-pane">pane0</div>
+                       <div class="ui-pane">pane1</div>
+               </div>
 */
+
 /**
-       @property {Boolean} data-control
-       Sets the controls for the widget.
-       The default value is true. If the value is set to true, the widget uses its own player controls. If the value is set to false, the widget uses the browser's player controls.
+       @property {Boolean} data-fixed
+       The resizing mode of panes - fixed and flexible mode.
 */
+
 /**
-       @property {Boolean} data-full-screen
-       Defines whether the widget opens in the fullscreen view mode.
-       The default value is false.
-*/
+       @property {Boolean} data-divider-vertical
+       The direction of dividers - horizontal or vertical.
+ */
+
 /**
-       @property {String} data-theme
-       Sets the widget theme.
-       If the value is not set, the parent control's theme is used
+       @property {Array} data-ratio
+       The ratio of two panes' widths or heights.
 */
+
 /**
-       @method width
-       The width method is used to get (if no value is defined) or set the multimedia view widget width:
-               <video>
-                        <source src="test.mp4" type="video/mp4" />
-               </video>
-               $(".selector").multimediaview("width", [value]);
+       @method pane
+       This method replaces child contents of a pane indicated by id attribute with contents of inputted element.
+       If second argument is not specified, it will act as a getter method.
+
+               <div data-role="splitview">
+                       <div class="ui-pane" id="pane0">pane0</div>
+                       <div class="ui-pane" id="pane1">pane1</div>
+               </div>
+               $(".selector").splitview("pane", id, element);
 */
+
 /**
-       @method height
-       The height method is used to get (if no value is defined) or set the multimedia view widget height:
-               <video>
-                       <source src="test.mp4" type="video/mp4" />
-               </video>
-               $(".selector").multimediaview("height", [value]);
+       @method maximize
+       This method maximizes a pane's size indicated by id.
+
+               <div data-role="splitview">
+                       <div class="ui-pane" id="pane0">pane0</div>
+                       <div class="ui-pane" id="pane1">pane1</div>
+               </div>
+               $(".selector").splitview("maximize", id);
 */
+
 /**
-       @method fullScreen
-       The fullScreen method is used to get (if no value is defined) or set the full-screen mode of the multimedia view widget. If the value is true, the full-screen mode is used; otherwise the multimedia view widget runs in the normal mode.
+       @method restore
+       This method restores all panes' sizes to the ratio prior to maximization.
 
-               <video>
-                       <source src="test.mp4" type="video/mp4" />
-               </video>
-               $(".selector").multimediaview("fullScreen", [value]);
+               <div data-role="splitview">
+                       <div class="ui-pane" id="pane0">pane0</div>
+                       <div class="ui-pane" id="pane1">pane1</div>
+               </div>
+               $(".selector").splitview("restore");
 */
-( function ( $, document, window, undefined ) {
-       $.widget( "tizen.multimediaview", $.mobile.widget, {
-               options: {
-                       theme: null,
-                       controls: true,
-                       fullScreen: false,
-                       initSelector: "video, audio"
+
+( function ( $, window, document, undefined ) {
+       $.widget( "tizen.splitview", $.mobile.widget, {
+               options : {
+                       fixed : false,
+                       dividerVertical : true,
+                       ratio : [],
+                       initSelector : ":jqmData(role='splitview')"
                },
 
-               _create: function () {
+               _create : function () {
                        var self = this,
-                               view = self.element,
-                               viewElement = view[0],
-                               isVideo = ( viewElement.nodeName === "VIDEO" ),
-                               option = self.options,
-                               parentTheme = $.mobile.getInheritedTheme( view, "s" ),
-                               theme = option.theme || parentTheme,
-                               width = viewElement.style.getPropertyValue( "width" ) || "",
-                               wrap = $( "<div class='ui-multimediaview-wrap ui-multimediaview-" + theme + "'>" ),
-                               control = null;
+                               $el = self.element,
+                               opt = self.options,
+                               $panes = $el.children( ".ui-pane" ),
+                               panesLength = $panes.length,
+                               spliters = [],
+                               spliterBars = [],
+                               ratioAttr = this.element.attr( "data-ratio" ),
+                               containerSize = [ 0, 0 ],
+                               resizeTimer = null,
+                               i = 0;
 
-                       $.extend( this, {
-                               role: null,
-                               controlTimer: null,
-                               isVolumeHide: true,
-                               backupView: null,
-                               _reserveVolume: -1,
-                               _isVideo: isVideo
-                       });
+                       if ( panesLength !== 2 ) {
+                               if ( panesLength < 2 ) {
+                                       for ( i = panesLength ; i < 2 ; ++i ) {
+                                               self._addEmptyPanes();
+                                       }
+                               } else {
+                                       $panes.slice( 2 ).remove();
+                               }
 
-                       view.addClass( "ui-multimediaview" );
-                       control = self._createControl();
-                       control.hide();
+                               $panes = $el.children( ".ui-pane" );
+                               panesLength = $panes.length;
+                       }
 
-                       control.find( ".ui-button" ).each( function ( index ) {
-                               $( this ).buttonMarkup( { corners: true, theme: theme, shadow: true } );
-                       });
+                       spliters[ 0 ] = $( "<a href='#' class='ui-spliter' aria-label='Drag scroll, double tap and move to adjust split area'></a>" ).insertAfter( $panes[ 0 ] );
+                       spliterBars[ 0 ] = $( "<div class='ui-spliter-bar'></div>" ).appendTo( spliters[ 0 ] );
+                       $( "<div class='ui-spliter-handle'></div>" ).appendTo( spliterBars[ 0 ] );
 
-                       view.wrap( wrap ).after( control );
+                       $.extend( this, {
+                               moveTarget : null,
+                               moveData : {},
+                               spliters : spliters,
+                               spliterBars : spliterBars,
+                               panes : $panes,
+                               containerSize : containerSize,
+                               touchStatus : false,
+                               minPaneWidth : 50,
+                               savedRatio : []
+                       });
 
-                       if ( isVideo ) {
-                               control.addClass( "ui-multimediaview-video" );
-                       } else {
-                               self.width( width );
-                               self.options.fullScreen = false;
-                       }
+                       self._bindTouchEvents();
+                       self._convertRatio( ratioAttr, $panes.length );
 
-                       if ( option.controls && view.attr( "controls" ) ) {
-                               view.removeAttr( "controls" );
+                       $el.addClass( "ui-splitview ui-direction-" + self._direction( opt.dividerVertical ) );
+
+                       if ( $el.parent().closest( ".ui-splitview" ).length ) {
+                               if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
+                                       self._layout();
+                               }
                        }
 
-                       self._addEvent();
-               },
+                       $( window ).bind( "pagechange", function ( e ) {
+                               if ( !$el.parent().closest( ".ui-splitview" ).length ) {
+                                       if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
+                                               self._layout();
+                                       }
+                               }
+                       }).resize( function () {
+                               if ( resizeTimer ) {
+                                       clearTimeout( resizeTimer );
+                               }
 
-               _resize: function () {
-                       this._resizeFullscreen( this.options.fullScreen );
-                       this._resizeControl();
-                       this._updateSeekBar();
-                       this._updateVolumeState();
+                               resizeTimer = setTimeout( function () {
+                                       if ( !$el.parent().closest( ".ui-splitview" ).length ) {
+                                               if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
+                                                       self._layout();
+                                               }
+                                       }
+                               }, 250);
+                       });
                },
 
-               _resizeControl: function () {
+               _addEmptyPanes : function () {
                        var self = this,
-                               view = self.element,
-                               viewElement = view[0],
-                               isVideo = self._isVideo,
-                               wrap = view.parent( ".ui-multimediaview-wrap" ),
-                               control = wrap.find( ".ui-multimediaview-control" ),
-                               buttons = control.find( ".ui-button" ),
-                               playpauseButton = control.find( ".ui-playpausebutton" ),
-                               seekBar = control.find( ".ui-seekbar" ),
-                               durationLabel = control.find( ".ui-durationlabel" ),
-                               timestampLabel = control.find( ".ui-timestamplabel" ),
-                               volumeControl = control.find( ".ui-volumecontrol" ),
-                               volumeBar = volumeControl.find( ".ui-volumebar" ),
-                               width = ( isVideo ? view.width() : wrap.width() ),
-                               height = ( isVideo ? view.height() : control.height() ),
-                               offset = view.offset(),
-                               controlHeight = control.height(),
-                               availableWidth = 0,
-                               controlOffset = null;
+                               $el = self.element,
+                               opt = self.options,
+                               $panes = $el.children( ".ui-pane" ),
+                               scrollAttribute = ( $.support.scrollview ) ? "data-scroll='y'" : "",
+                               pane = $( "<div class='ui-pane' " + scrollAttribute + "></div>" );
 
-                       if ( control ) {
-                               if ( isVideo ) {
-                                       controlOffset = control.offset();
-                                       controlOffset.left = offset.left;
-                                       controlOffset.top = offset.top + height - controlHeight;
-                                       control.offset( controlOffset );
-                               }
-                               control.width( width );
+                       if ( scrollAttribute.length ) {
+                               pane.scrollview( { direction: "y" } );
                        }
 
-                       if ( seekBar ) {
-                               availableWidth = control.width() - ( buttons.outerWidth( true ) * buttons.length );
-                               availableWidth -= ( parseInt( buttons.eq( 0 ).css( "margin-left" ), 10 ) + parseInt( buttons.eq( 0 ).css( "margin-right" ), 10 ) ) * buttons.length;
-                               if ( !self.isVolumeHide ) {
-                                       availableWidth -= volumeControl.outerWidth( true );
-                               }
-                               seekBar.width( availableWidth );
+                       if ( !$panes.length ) {
+                               $el.append( pane );
+                       } else {
+                               $panes.last().after( pane );
                        }
+               },
 
-                       if ( durationLabel && !isNaN( viewElement.duration ) ) {
-                               durationLabel.find( "p" ).text( self._convertTimeFormat( viewElement.duration ) );
-                       }
+               _direction : function ( isHorizontal ) {
+                       return isHorizontal ? "horizontal" : "vertical";
+               },
 
-                       if ( viewElement.autoplay && viewElement.paused === false ) {
-                               playpauseButton.removeClass( "ui-play-icon" ).addClass( "ui-pause-icon" );
-                       }
+               _isStyleSpecified : function ( cssString ) {
+                       return ( typeof cssString !== "undefined" && cssString.length );
+               },
 
-                       if ( seekBar.width() < ( volumeBar.width() + timestampLabel.width() + durationLabel.width() ) ) {
-                               durationLabel.hide();
-                       } else {
-                               durationLabel.show();
+               _getContainerSize : function ( widthString, heightString ) {
+                       var self = this,
+                               $el = self.element,
+                               widthSpecified = self._isStyleSpecified( widthString ),
+                               heightSpecified = self._isStyleSpecified( heightString );
+
+                       self.containerSize[ 0 ] = ( widthSpecified ) ? $el.outerWidth( true ) : self._parentWidth();
+                       self.containerSize[ 1 ] = ( heightSpecified ) ? $el.outerHeight( true ) : self._parentHeight();
+
+                       if ( !self.containerSize[ 0 ] || !self.containerSize[ 1 ] ) {
+                               return false;
                        }
+
+                       return true;
                },
 
-               _resizeFullscreen: function ( isFullscreen ) {
-                       if ( !this._isVideo ) {
-                               return;
-                       }
+               _parentWidth : function () {
+                       var $parent = this.element.parent();
 
-                       var self = this,
-                               view = self.element,
-                               viewElement = view[0],
-                               wrap = view.parent( ".ui-multimediaview-wrap" ),
-                               control = wrap.find( ".ui-multimediaview-control" ),
-                               fullscreenButton = control.find( ".ui-fullscreenbutton" ),
-                               currentPage = $( ".ui-page-active" ),
-                               playpauseButton = control.find( ".ui-playpausebutton" ),
-                               timestampLabel = control.find( ".ui-timestamplabel" ),
-                               seekBar = control.find( ".ui-seekbar" ),
-                               durationBar = seekBar.find( ".ui-duration" ),
-                               currenttimeBar = seekBar.find( ".ui-currenttime" ),
-                               body = $( "body" )[0],
-                               header = currentPage.children( ".ui-header" ),
-                               footer = currentPage.children( ".ui-footer" ),
-                               docWidth = 0,
-                               docHeight = 0;
+                       if ( !$parent && typeof $parent === "undefined" && !$parent.length ) {
+                               return $( window ).width();
+                       }
 
-                       if ( isFullscreen ) {
-                               if ( !self.backupView ) {
-                                       self.backupView = {
-                                               width: viewElement.style.getPropertyValue( "width" ) || "",
-                                               height: viewElement.style.getPropertyValue( "height" ) || "",
-                                               position: view.css( "position" ),
-                                               zindex: view.css( "z-index" ),
-                                               wrapHeight: wrap[0].style.getPropertyValue( "height" ) || ""
-                                       };
-                               }
-                               docWidth = body.clientWidth;
-                               docHeight = body.clientHeight;
+                       return $parent.width();
+               },
 
-                               header.hide();
-                               footer.hide();
-                               view.parents().each( function ( e ) {
-                                       var element = $( this );
-                                       element.addClass( "ui-fullscreen-parents" )
-                                               .siblings()
-                                               .addClass( "ui-multimediaview-siblings-off" );
-                               });
-                               this._fitContentArea( currentPage );
-                               fullscreenButton.removeClass( "ui-fullscreen-on" ).addClass( "ui-fullscreen-off" );
+               _parentHeight : function () {
+                       var $parent = this.element.parent(),
+                               heightString = "",
+                               heightSpecified = false,
+                               parentHeight = 0;
 
-                               view.width( docWidth ).height( docHeight - 1 );
-                               wrap.height( docHeight - 1 );
-                               view.offset( {
-                                       top: 0,
-                                       left: 0
-                               }).addClass( "ui-multimediaview-fullscreen" );
-                       } else {
-                               if ( !self.backupView ) {
-                                       return;
+                       while ( $parent && typeof $parent !== "undefined" && $parent.length ) {
+                               if ( typeof $parent[ 0 ].style !== "undefined" ) {
+                                       heightString = $parent[ 0 ].style.height;
+                                       heightSpecified = ( typeof heightString !== "undefined" && heightString.length );
+                                       if ( heightSpecified ) {
+                                               parentHeight = $parent.height();
+                                               break;
+                                       }
                                }
 
-                               header.show();
-                               footer.show();
-                               view.parents().each( function ( e ) {
-                                       var element = $( this );
-                                       element.removeClass( "ui-fullscreen-parents" )
-                                               .siblings()
-                                               .removeClass( "ui-multimediaview-siblings-off" );
-                               });
-                               this._fitContentArea( currentPage );
-                               fullscreenButton.removeClass( "ui-fullscreen-off" ).addClass( "ui-fullscreen-on" );
+                               $parent = $parent.parent();
+                       }
 
-                               wrap.css( "height", self.backupView.wrapHeight );
-                               view.css( {
-                                       "width": self.backupView.width,
-                                       "height": self.backupView.height,
-                                       "position": self.backupView.position,
-                                       "z-index": self.backupView.zindex
-                               }).removeClass( "ui-multimediaview-fullscreen" );
-                               self.backupView = null;
+                       if ( !heightSpecified ) {
+                               parentHeight = $(window).height();
                        }
+
+                       return parentHeight;
                },
 
-               _addEvent: function () {
+               _convertRatio : function ( ratioParam, panesLength ) {
                        var self = this,
-                               view = self.element,
-                               option = self.options,
-                               viewElement = view[0],
-                               isVideo = self._isVideo,
-                               control = view.parent( ".ui-multimediaview-wrap" ).find( ".ui-multimediaview-control" ),
-                               playpauseButton = control.find( ".ui-playpausebutton" ),
-                               timestampLabel = control.find( ".ui-timestamplabel" ),
-                               durationLabel = control.find( ".ui-durationlabel" ),
-                               volumeButton = control.find( ".ui-volumebutton" ),
-                               volumeControl = control.find( ".ui-volumecontrol" ),
-                               volumeBar = volumeControl.find( ".ui-volumebar" ),
-                               volumeGuide = volumeControl.find( ".ui-guide" ),
-                               volumeHandle = volumeControl.find( ".ui-handle" ),
-                               fullscreenButton = control.find( ".ui-fullscreenbutton" ),
-                               seekBar = control.find( ".ui-seekbar" ),
-                               durationBar = seekBar.find( ".ui-duration" ),
-                               currenttimeBar = seekBar.find( ".ui-currenttime" ),
-                               $document = $( document );
+                               ratio = [],
+                               loop = 0,
+                               type = typeof ratioParam,
+                               ratioArray = null,
+                               i;
 
-                       $document.unbind( ".multimediaview" ).bind( "pagechange.multimediaview", function ( e ) {
-                               var $page = $( e.target );
-                               if ( $page.find( view ).length > 0 && viewElement.autoplay ) {
-                                       viewElement.play();
-                               }
+                       for ( i = 0; i < panesLength; ++i ) {
+                               ratio.push( 0 );
+                       }
 
-                               if ( option.controls ) {
-                                       self._resize();
-                               }
-                       }).bind( "pagebeforechange.multimediaview", function ( e ) {
-                               if ( option.fullScreen ) {
-                                       self.fullScreen( !option.fullScreen );
+                       switch ( type ) {
+                       case "number":
+                               if ( panesLength ) {
+                                       ratio[ 0 ] = ratioParam;
                                }
+                               break;
 
-                               if ( viewElement.played.length !== 0 ) {
-                                       viewElement.pause();
-                               }
-                       });
-
-                       $( window ).unbind( ".multimediaview" ).bind( "resize.multimediaview orientationchange.multimediaview", function ( e ) {
-                               if ( !option.controls ) {
-                                       return;
+                       case "string":
+                               ratioArray = ratioParam.split( "," );
+                               loop = Math.min( ratioArray.length, panesLength );
+                               for ( i = 0; i < loop; ++i ) {
+                                       ratio[ i ] = parseFloat( ratioArray[ i ] );
                                }
-                               var $page = $( e.target ),
-                                       $scrollview = view.parents( ".ui-scrollview-clip" );
-
-                               $scrollview.each( function ( i ) {
-                                       if ( $.data( this, "scrollview" ) ) {
-                                               $( this ).scrollview( "scrollTo", 0, 0 );
-                                       }
-                               });
+                               break;
 
-                               // for maintaining page layout
-                               if ( !option.fullScreen ) {
-                                       $( ".ui-footer:visible" ).show();
-                               } else {
-                                       $( ".ui-footer" ).hide();
-                                       self._fitContentArea( $page );
+                       case "object":
+                               if ( !$.isArray( ratioParam ) ) {
+                                       break;
                                }
 
-                               if ( control.css( "display" ) !== "none" ) {
-                                       self._resize();
+                               loop = Math.min( ratioParam.length, panesLength );
+                               for ( i = 0; i < loop; ++i ) {
+                                       type = typeof ratioParam[ i ];
+                                       ratio[ i ] = ( type === "string" ) ? parseFloat( ratioParam[ i ] ) :
+                                                               ( type === "number" ) ? ratioParam[ i ] : 0;
                                }
-                       });
+                               break;
+                       }
 
-                       view.bind( "loadedmetadata.multimediaview", function ( e ) {
-                               if ( !isNaN( viewElement.duration ) ) {
-                                       durationLabel.find( "p" ).text( self._convertTimeFormat( viewElement.duration ) );
-                               }
-                               self._resize();
-                       }).bind( "timeupdate.multimediaview", function ( e ) {
-                               self._updateSeekBar();
-                       }).bind( "play.multimediaview", function ( e ) {
-                               playpauseButton.removeClass( "ui-play-icon" ).addClass( "ui-pause-icon" );
-                       }).bind( "pause.multimediaview", function ( e ) {
-                               playpauseButton.removeClass( "ui-pause-icon" ).addClass( "ui-play-icon" );
-                       }).bind( "ended.multimediaview", function ( e ) {
-                               if ( typeof viewElement.loop == "undefined" || viewElement.loop === "" ) {
-                                       self.stop();
-                               }
-                       }).bind( "volumechange.multimediaview", function ( e ) {
-                               if ( viewElement.muted && viewElement.volume > 0.1 ) {
-                                       volumeButton.removeClass( "ui-volume-icon" ).addClass( "ui-mute-icon" );
-                                       self._reserveVolume = viewElement.volume;
-                                       viewElement.volume = 0;
-                               } else if ( self._reserveVolume !== -1 && !viewElement.muted ) {
-                                       volumeButton.removeClass( "ui-mute-icon" ).addClass( "ui-volume-icon" );
-                                       viewElement.volume = self._reserveVolume;
-                                       self._reserveVolume = -1;
-                               } else if ( viewElement.volume < 0.1 ) {
-                                       volumeButton.removeClass( "ui-volume-icon" ).addClass( "ui-mute-icon" );
-                               } else {
-                                       volumeButton.removeClass( "ui-mute-icon" ).addClass( "ui-volume-icon" );
-                               }
+                       self.options.ratio = ratio;
+                       self._adjustRatio( panesLength );
+               },
 
-                               if ( !self.isVolumeHide ) {
-                                       self._updateVolumeState();
-                               }
-                       }).bind( "durationchange.multimediaview", function ( e ) {
-                               if ( !isNaN( viewElement.duration ) ) {
-                                       durationLabel.find( "p" ).text( self._convertTimeFormat( viewElement.duration ) );
-                               }
-                               self._resize();
-                       }).bind( "click.multimediaview", function ( e ) {
-                               if ( !self.options.controls ) {
-                                       return;
-                               }
+               _adjustRatio : function ( panesLength ) {
+                       var self = this,
+                               ratio = self.options.ratio,
+                               sum = 0,
+                               remain = 0,
+                               value = 0,
+                               subValue = 0,
+                               subRemain = 0,
+                               i;
 
-                               control.fadeToggle( "fast" );
-                               self._resize();
-                       }).bind( "multimediaviewinit", function ( e ) {
-                               if ( option.controls ) {
-                                       control.show();
-                               }
-                               self._resize();
-                       });
+                       if ( !panesLength ) {
+                               self.options.ratio = [];
+                               return;
+                       }
 
-                       playpauseButton.bind( "click.multimediaview", function () {
-                               self._endTimer();
+                       for ( i in ratio ) {
+                               sum += ratio[ i ];
+                       }
 
-                               if ( viewElement.paused ) {
-                                       viewElement.play();
-                               } else {
-                                       viewElement.pause();
-                               }
+                       if ( sum !== 1 ) {
+                               remain = 1 - sum;
+                               value = remain / panesLength;
 
-                               if ( isVideo ) {
-                                       self._startTimer();
+                               for ( i in ratio ) {
+                                       if ( value >= 0 ) {
+                                               ratio[ i ] += value;
+                                               remain = Math.max( 0, remain - value );
+                                       } else {
+                                               subRemain += value;
+                                               subValue = Math.max( subRemain, ratio[ i ] * -1 );
+                                               ratio[ i ] = Math.max( 0, ratio[ i ] + subValue );
+                                               remain = Math.min( 0, remain - subValue );
+                                               subRemain -= subValue;
+                                       }
                                }
-                       });
-
-                       fullscreenButton.bind( "click.multimediaview", function ( e ) {
-                               e.preventDefault();
-                               self.fullScreen( !self.options.fullScreen );
-                               control.fadeIn( "fast", function () {
-                                       self._resize();
-                               });
-                               self._endTimer();
-                               e.stopPropagation();
-                       });
-
-                       seekBar.bind( "vmousedown.multimediaview", function ( e ) {
-                               var x = e.clientX,
-                                       duration = viewElement.duration,
-                                       durationOffset = durationBar.offset(),
-                                       durationWidth = durationBar.width(),
-                                       timerate = ( x - durationOffset.left ) / durationWidth,
-                                       time = duration * timerate;
 
-                               if ( !viewElement.played.length ) {
-                                       return;
+                               if ( remain ) {
+                                       if ( remain > 0 ) {
+                                               ratio[ ratio.length - 1 ] += remain;
+                                       } else {
+                                               for ( i = ratio.length - 1; i >= 0; --i ) {
+                                                       subValue = Math.max( remain, ratio[ i ] * -1 );
+                                                       ratio[ i ] = Math.max( 0, ratio[ i ] + subValue );
+                                                       remain = Math.min( 0, remain - subValue );
+                                                       if ( !remain ) {
+                                                               break;
+                                                       }
+                                               }
+                                       }
                                }
 
-                               viewElement.currentTime = time;
+                               self.options.ratio = ratio;
+                       }
+               },
 
-                               self._endTimer();
+               _setOption : function ( key, value ) {
+                       var self = this,
+                               orgValue = self.options[ key ];
 
-                               e.preventDefault();
+                       if ( orgValue === value ) {
+                               return;
+                       }
 
-                               $document.bind( "vmousemove.multimediaview", function ( e ) {
-                                       var x = e.clientX,
-                                               timerate = ( x - durationOffset.left ) / durationWidth;
+                       $.Widget.prototype._setOption.apply( this, arguments );
 
-                                       viewElement.currentTime = duration * timerate;
+                       switch ( key ) {
+                       case "fixed":
+                               self._fixed( value );
+                               break;
 
-                                       e.preventDefault();
-                               }).bind( "vmouseup.multimediaview", function () {
-                                       $document.unbind( "vmousemove.multimediaview vmouseup.multimediaview" );
-                                       if ( viewElement.paused ) {
-                                               viewElement.pause();
-                                       } else {
-                                               viewElement.play();
-                                       }
-                               });
-                       });
+                       case "dividerVertical":
+                               self._dividerVertical( value );
+                               break;
 
-                       volumeButton.bind( "click.multimediaview", function () {
-                               if ( self.isVolumeHide ) {
-                                       var view = self.element,
-                                               volume = viewElement.volume;
+                       case "ratio":
+                               self._ratio( value );
+                               break;
+                       }
+               },
 
-                                       self.isVolumeHide = false;
-                                       volumeControl.fadeIn( "fast", function () {
-                                               self._updateVolumeState();
-                                               self._updateSeekBar();
-                                       });
-                                       self._resize();
-                               } else {
-                                       self.isVolumeHide = true;
-                                       volumeControl.fadeOut( "fast", function () {
-                                               self._resize();
-                                       });
-                               }
-                       });
+               _subtractDiffWidth : function ( width, diff ) {
+                       var self = this;
 
-                       volumeBar.bind( "vmousedown.multimediaview", function ( e ) {
-                               var baseX = e.clientX,
-                                       volumeGuideLeft = volumeGuide.offset().left,
-                                       volumeGuideWidth = volumeGuide.width(),
-                                       volumeBase = volumeGuideLeft + volumeGuideWidth,
-                                       handlerOffset = volumeHandle.offset(),
-                                       volumerate = ( baseX - volumeGuideLeft ) / volumeGuideWidth,
-                                       currentVolume = ( baseX - volumeGuideLeft ) / volumeGuideWidth;
+                       if ( width <= self.minPaneWidth ) {
+                               return {
+                                       width: width,
+                                       diff: diff
+                               };
+                       }
 
-                               self._endTimer();
-                               self._setVolume( currentVolume.toFixed( 2 ) );
+                       width += diff;
+                       if ( width >= self.minPaneWidth ) {
+                               return {
+                                       width: width,
+                                       diff: 0
+                               };
+                       }
 
-                               e.preventDefault();
+                       return {
+                               width: self.minPaneWidth,
+                               diff: width - self.minPaneWidth
+                       };
+               },
 
-                               $document.bind( "vmousemove.multimediaview", function ( e ) {
-                                       var currentX = e.clientX,
-                                               currentVolume = ( currentX - volumeGuideLeft ) / volumeGuideWidth;
+               _initRatio : function ( fromFirstPane, panes, isHorizontal, availableWidth ) {
+                       var self = this,
+                               sum = 0,
+                               widths = [],
+                               diff = 0,
+                               panesLength = panes.length,
+                               ret,
+                               i;
 
-                                       self._setVolume( currentVolume.toFixed( 2 ) );
+                       panes.each( function ( i ) {
+                               var pane = $( this );
+                               widths.push( isHorizontal ? pane.width() : pane.height() );
+                               sum += widths[ i ];
+                       });
 
-                                       e.preventDefault();
-                               }).bind( "vmouseup.multimediaview", function () {
-                                       $document.unbind( "vmousemove.multimediaview vmouseup.multimediaview" );
-                               });
-                       });
-               },
-
-               _removeEvent: function () {
-                       var view = this.element,
-                               control = view.parent( ".ui-multimediaview-wrap" ).find( ".ui-multimediaview-control" ),
-                               playpauseButton = control.find( ".ui-playpausebutton" ),
-                               fullscreenButton = control.find( ".ui-fullscreenbutton" ),
-                               seekBar = control.find( ".ui-seekbar" ),
-                               volumeControl = control.find( ".ui-volumecontrol" ),
-                               volumeBar = volumeControl.find( ".ui-volumebar" ),
-                               volumeHandle = volumeControl.find( ".ui-handle" );
-
-                       view.unbind( ".multimediaview" );
-                       playpauseButton.unbind( ".multimediaview" );
-                       fullscreenButton.unbind( ".multimediaview" );
-                       seekBar.unbind( ".multimediaview" );
-                       volumeBar.unbind( ".multimediaview" );
-                       volumeHandle.unbind( ".multimediaview" );
-               },
-
-               _createControl: function () {
-                       var view = this.element,
-                               viewElement = view[0],
-                               control = $( "<span></span>" ).addClass( "ui-multimediaview-control" ),
-                               playpauseButton = $( "<span></span>" ).addClass( "ui-playpausebutton ui-button" ),
-                               seekBar = $( "<span></span>" ).addClass( "ui-seekbar ui-multimediaview-bar" ),
-                               timestampLabel = $( "<span><p>00:00:00</p></span>" ).addClass( "ui-timestamplabel" ),
-                               durationLabel = $( "<span><p>00:00:00</p></span>" ).addClass( "ui-durationlabel" ),
-                               volumeButton = $( "<span></span>" ).addClass( "ui-volumebutton ui-button" ),
-                               volumeControl = $( "<span></span>" ).addClass( "ui-volumecontrol" ),
-                               volumeBar = $( "<div></div>" ).addClass( "ui-volumebar ui-multimediaview-bar" ),
-                               volumeGuide = $( "<span></span>" ).addClass( "ui-guide ui-multimediaview-bar-bg" ),
-                               volumeValue = $( "<span></span>" ).addClass( "ui-value ui-multimediaview-bar-highlight" ),
-                               volumeHandle = $( "<span></span>" ).addClass( "ui-handle" ),
-                               fullscreenButton = $( "<span></span>" ).addClass( "ui-fullscreenbutton ui-button" ),
-                               durationBar = $( "<span></span>" ).addClass( "ui-duration ui-multimediaview-bar-bg" ),
-                               currenttimeBar = $( "<span></span>" ).addClass( "ui-currenttime ui-multimediaview-bar-highlight" );
-
-                       seekBar.append( durationBar ).append( currenttimeBar ).append( durationLabel ).append( timestampLabel );
-
-                       playpauseButton.addClass( "ui-play-icon" );
-                       volumeButton.addClass( viewElement.muted ? "ui-mute-icon" : "ui-volume-icon" );
-                       volumeBar.append( volumeGuide ).append( volumeValue ).append( volumeHandle );
-                       volumeControl.append( volumeBar );
-
-                       control.append( playpauseButton ).append( seekBar ).append( volumeControl ).append( volumeButton );
-
-                       if ( this._isVideo ) {
-                               $( fullscreenButton ).addClass( "ui-fullscreen-on" );
-                               control.append( fullscreenButton );
+                       diff = availableWidth - sum;
+                       if ( !diff ) {
+                               return widths;
                        }
-                       volumeControl.hide();
-
-                       return control;
-               },
-
-               _startTimer: function ( duration ) {
-                       this._endTimer();
 
-                       if ( !duration ) {
-                               duration = 3000;
+                       if ( diff > 0 ) {
+                               widths[ fromFirstPane ? 0 : panesLength - 1 ] += diff;
+                       } else {
+                               if ( fromFirstPane ) {
+                                       for ( i = 0; i < panesLength; ++i ) {
+                                               ret = self._subtractDiffWidth( widths[ i ], diff );
+                                               widths[ i ] = ret.width;
+                                               diff = ret.diff;
+                                               if ( !diff ) {
+                                                       break;
+                                               }
+                                       }
+                               } else {
+                                       for ( i = panesLength - 1; i >= 0; --i ) {
+                                               diff = self._subtractDiffWidth( widths[ i ], diff );
+                                               widths[ i ] = ret.width;
+                                               diff = ret.diff;
+                                               if ( !diff ) {
+                                                       break;
+                                               }
+                                       }
+                               }
                        }
 
-                       var self = this,
-                               view = self.element,
-                               control = view.parent( ".ui-multimediaview-wrap" ).find( ".ui-multimediaview-control" ),
-                               volumeControl = control.find( ".ui-volumecontrol" );
-
-                       self.controlTimer = setTimeout( function () {
-                               self.isVolumeHide = true;
-                               self.controlTimer = null;
-                               volumeControl.hide();
-                               control.fadeOut( "fast" );
-                       }, duration );
-               },
-
-               _endTimer: function () {
-                       if ( this.controlTimer ) {
-                               clearTimeout( this.controlTimer );
-                               this.controlTimer = null;
+                       sum = 0;
+                       for ( i in widths ) {
+                               sum += widths[ i ];
                        }
-               },
 
-               _convertTimeFormat: function ( systime ) {
-                       if ( !$.isNumeric( systime ) ) {
-                               return "Playback Error";
+                       for ( i in self.options.ratio ) {
+                               self.options.ratio[ i ] = widths[ i ] / sum;
                        }
 
-                       var ss = parseInt( systime % 60, 10 ).toString(),
-                               mm = parseInt( ( systime / 60 ) % 60, 10 ).toString(),
-                               hh = parseInt( systime / 3600, 10 ).toString(),
-                               time =  ( ( hh.length < 2  ) ? "0" + hh : hh ) + ":" +
-                                               ( ( mm.length < 2  ) ? "0" + mm : mm ) + ":" +
-                                               ( ( ss.length < 2  ) ? "0" + ss : ss );
-
-                       return time;
-               },
-
-               _updateSeekBar: function ( currenttime ) {
-                       var view = this.element,
-                               viewElement = view[0],
-                               duration = viewElement.duration,
-                               control = view.parent( ".ui-multimediaview-wrap" ).find( ".ui-multimediaview-control" ),
-                               seekBar = control.find(  ".ui-seekbar"  ),
-                               durationBar = seekBar.find( ".ui-duration" ),
-                               currenttimeBar = seekBar.find( ".ui-currenttime" ),
-                               timestampLabel = control.find( ".ui-timestamplabel" ),
-                               durationOffset = durationBar.offset(),
-                               durationWidth = durationBar.width(),
-                               durationHeight = durationBar.height(),
-                               timebarWidth = 0;
-
-                       if ( typeof currenttime === "undefined" ) {
-                               currenttime = viewElement.currentTime;
-                       }
-                       timebarWidth = parseInt( currenttime / duration * durationWidth, 10 );
-                       durationBar.offset( durationOffset );
-                       currenttimeBar.offset( durationOffset ).width( timebarWidth );
-                       timestampLabel.find( "p" ).text( this._convertTimeFormat( currenttime ) );
+                       return widths;
                },
 
-               _updateVolumeState: function () {
-                       var view = this.element,
-                               control = view.parent( ".ui-multimediaview-wrap" ).find( ".ui-multimediaview-control" ),
-                               volumeControl = control.find( ".ui-volumecontrol" ),
-                               volumeButton = control.find( ".ui-volumebutton" ),
-                               volumeBar = volumeControl.find( ".ui-volumebar" ),
-                               volumeGuide = volumeControl.find( ".ui-guide" ),
-                               volumeValue = volumeControl.find( ".ui-value" ),
-                               volumeHandle = volumeControl.find( ".ui-handle" ),
-                               handlerWidth = volumeHandle.width(),
-                               handlerHeight = volumeHandle.height(),
-                               volumeGuideHeight = volumeGuide.height(),
-                               volumeGuideWidth = volumeGuide.width(),
-                               volumeGuideTop = 0,
-                               volumeGuideLeft = 0,
-                               volumeBase = 0,
-                               handlerOffset = null,
-                               volume = view[0].volume;
+               _horizontalBoundary : function () {
+                       var self = this,
+                               $el = self.element;
 
-                       volumeGuideTop = parseInt( volumeGuide.offset().top, 10 );
-                       volumeGuideLeft = parseInt( volumeGuide.offset().left, 10 );
-                       volumeBase = volumeGuideLeft;
-                       handlerOffset = volumeHandle.offset();
-                       handlerOffset.top = volumeGuideTop - parseInt( ( handlerHeight - volumeGuideHeight ) / 2, 10 );
-                       handlerOffset.left = volumeBase + parseInt( volumeGuideWidth * volume, 10 ) - parseInt( handlerWidth / 2, 10 );
-                       volumeHandle.offset( handlerOffset );
-                       volumeValue.offset( volumeGuide.offset() ).width( parseInt( volumeGuideWidth * ( volume ), 10 ) );
+                       return $el.outerWidth( true ) - $el.width();
                },
 
-               _setVolume: function ( value ) {
-                       var viewElement = this.element[0];
-
-                       if ( value < 0.0 || value > 1.0 ) {
-                               return;
-                       }
+               _verticalBoundary : function () {
+                       var self = this,
+                               $el = self.element;
 
-                       viewElement.volume = value;
+                       return $el.outerHeight( true ) - $el.height();
                },
 
-               _fitContentArea: function ( page, parent ) {
-                       if ( typeof parent === "undefined" ) {
-                               parent = window;
-                       }
-
-                       var $page = $( page ),
-                               $content = $( ".ui-content:visible:first" ),
-                               hh = $( ".ui-header:visible" ).outerHeight() || 0,
-                               fh = $( ".ui-footer:visible" ).outerHeight() || 0,
-                               pt = parseFloat( $content.css( "padding-top" ) ),
-                               pb = parseFloat( $content.css( "padding-bottom" ) ),
-                               wh = ( ( parent === window ) ? window.innerHeight : $( parent ).height() ),
-                               height = wh - ( hh + fh ) - ( pt + pb );
+               _boundary : function ( type ) {
+                       var self = this,
+                               $el = self.element,
+                               computedStyle = window.getComputedStyle( $el[ 0 ], null ),
+                               margin = parseFloat( computedStyle[ "margin" + type ] ),
+                               border = parseFloat( computedStyle[ "border" + type + "Width" ] ),
+                               padding = parseFloat( computedStyle[ "padding" + type ] );
 
-                       $content.offset( {
-                               top: ( hh + pt )
-                       }).height( height );
+                       return {
+                               margin: margin,
+                               border: border,
+                               padding: padding
+                       };
                },
 
-               width: function ( value ) {
-                       if ( this.options.fullScreen ) {
-                               return;
-                       }
-
-                       var view = this.element,
-                               wrap = view.parent( ".ui-multimediaview-wrap" );
+               _layout : function ( initRatio, fromFirstPane ) {
+                       var self = this,
+                               $el = self.element,
+                               opt = self.options,
+                               isHorizontal = opt.dividerVertical,
+                               $panes = self.panes,
+                               spliters = self.spliters,
+                               spliterBars = self.spliterBars,
+                               spliterBar = self.spliterBars.length ? $( spliterBars[ 0 ] ) : null,
+                               spliterWidth = !spliterBar ? 0 :
+                                                               isHorizontal ? spliterBar.outerWidth() :
+                                                                                               spliterBar.outerHeight(),
+                               spliterBarMargin = !spliterBar ? 0 :
+                                                                       isHorizontal ?
+                                                                               spliterBar.outerWidth( true ) - spliterBar.outerWidth() :
+                                                                               spliterBar.outerHeight( true ) - spliterBar.outerHeight(),
+                               panesLength = $panes.length,
+                               currentAvailable = 0,
+                               spliterSize = spliterWidth * ( panesLength - 1 ),
+                               parentWidth = self.containerSize[ 0 ],
+                               parentHeight = self.containerSize[ 1 ],
+                               width = parentWidth - self._horizontalBoundary(),
+                               height = parentHeight - self._verticalBoundary(),
+                               innerSize = isHorizontal ? height : width,
+                               availableWidth = isHorizontal ? width - spliterSize :
+                                                                                               height - spliterSize,
+                               initializedWidth = [],
+                               widthSum = 0,
+                               childSplitview = null;
 
-                       if ( arguments.length === 0 ) {
-                               return view.width();
+                       if ( typeof initRatio === "undefined" ) {
+                               initRatio = false;
                        }
 
-                       if ( !this._isVideo ) {
-                               wrap.width( value );
+                       if ( initRatio && typeof fromFirstPane === "undefined" ) {
+                               fromFirstPane = false;
                        }
 
-                       view.width( value );
-                       this._resize();
-               },
+                       $el.css( {
+                               "min-width" : width,
+                               "min-height" : height
+                       });
 
-               height: function ( value ) {
-                       if ( !this._isVideo || this.options.fullScreen ) {
-                               return;
+                       if ( initRatio ) {
+                               initializedWidth = self._initRatio( fromFirstPane, $panes, isHorizontal, availableWidth );
                        }
 
-                       var view = this.element;
-
-                       if ( arguments.length === 0 ) {
-                               return view.height();
-                       }
+                       currentAvailable = availableWidth;
+                       $panes.each( function ( i ) {
+                               var $pane = $( this ),
+                                       paneWidth = initRatio ? initializedWidth[ i ] :
+                                                                               Math.floor( availableWidth * self.options.ratio[i] ),
+                                       prevPane = ( ( i ) ? $panes.eq( i - 1 ) : null ),
+                                       posValue = 0,
+                                       widthValue = 0,
+                                       heightValue = 0,
+                                       boundary = 0;
 
-                       view.height( value );
-                       this._resize();
-               },
+                               currentAvailable -= paneWidth;
+                               if ( i === ( panesLength - 1 ) ) {
+                                       paneWidth = Math.max( Math.min( paneWidth, self.minPaneWidth ), paneWidth + currentAvailable );
+                               }
 
-               fullScreen: function ( value ) {
-                       if ( !this._isVideo ) {
-                               return;
-                       }
+                               widthSum += paneWidth;
 
-                       var view = this.element,
-                               option = this.options;
+                               if ( !prevPane ) {
+                                       boundary = self._boundary( isHorizontal ? "Left" : "Top" );
+                                       posValue = boundary.padding;
+                               } else {
+                                       posValue = parseInt( prevPane.css( isHorizontal ? "left" : "top" ), 10 );
+                                       posValue += isHorizontal ? prevPane.width() : prevPane.height();
+                                       posValue += spliterWidth;
+                               }
 
-                       if ( arguments.length === 0 ) {
-                               return option.fullScreen;
-                       }
+                               widthValue = isHorizontal ? paneWidth : innerSize;
+                               heightValue = isHorizontal ? innerSize : paneWidth;
 
-                       view.parents( ".ui-scrollview-clip" ).scrollview( "scrollTo", 0, 0 );
+                               $pane.css( {
+                                       "width" : widthValue ,
+                                       "height" : heightValue
+                               } );
 
-                       this.options.fullScreen = value;
+                               $pane.css( ( isHorizontal ? "left" : "top" ), posValue );
+                       });
 
-                       this._resize();
-               },
+                       $panes.each( function ( i ) {
+                               var $pane = $( this ),
+                                       paneWidth = isHorizontal ? $pane.width() : $pane.height();
 
-               refresh: function () {
-                       this._resize();
-               }
-       });
+                               self.options.ratio[ i ] = paneWidth / widthSum;
+                       });
 
-       $( document ).bind( "pagecreate create", function ( e ) {
-               $.tizen.multimediaview.prototype.enhanceWithin( e.target );
-       });
-} ( jQuery, document, window ) );
+                       $.each( spliters, function ( i ) {
+                               var spliter = $( this ),
+                                       prevPane = $panes.eq( i ),
+                                       bar = spliter.children( ".ui-spliter-bar" ),
+                                       handle = bar.children( ".ui-spliter-handle" ),
+                                       posValue = 0;
 
+                               if ( isHorizontal ) {
+                                       posValue = parseInt( prevPane.css( "left" ), 10 ) + prevPane.width() - spliterBarMargin;
+                                       spliter.outerHeight( innerSize ).css( "left", posValue );
+                               } else {
+                                       posValue = parseInt( prevPane.css( "top" ), 10 ) + prevPane.height() - spliterBarMargin;
+                                       spliter.outerWidth( innerSize ).css( "top", posValue );
+                               }
 
+                               if ( typeof bar !== "undefined" && bar ) {
+                                       if ( isHorizontal ) {
+                                               bar.outerHeight( innerSize );
+                                       } else {
+                                               bar.outerWidth( innerSize );
+                                       }
+                               }
+                               if ( typeof handle !== "undefined" && handle ) {
+                                       if ( isHorizontal ) {
+                                               handle.css( "top", ( innerSize - spliterWidth ) / 2 );
+                                       } else {
+                                               handle.css( "left", ( innerSize - spliterWidth ) / 2 );
+                                       }
+                               }
+                       });
 
-/*
- * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL licenses
- * http://phpjs.org/functions/range
- * original by: Waldo Malqui Silva
- * version: 1107.2516
- */
-function range( low, high, step ) {
-    // Create an array containing the range of integers or characters
-    // from low to high (inclusive)  
-    // 
-    // version: 1107.2516
-    // discuss at: http://phpjs.org/functions/range
-    // +   original by: Waldo Malqui Silva
-    // *     example 1: range ( 0, 12 );
-    // *     returns 1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
-    // *     example 2: range( 0, 100, 10 );
-    // *     returns 2: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
-    // *     example 3: range( 'a', 'i' );
-    // *     returns 3: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
-    // *     example 4: range( 'c', 'a' );
-    // *     returns 4: ['c', 'b', 'a']
-       var matrix = [],
-               inival,
-               endval,
-               plus,
-               walker = step || 1,
-               chars = false;
+                       childSplitview = $el.find( ":jqmData(role='splitview'):first" );
+                       if ( !childSplitview.length ) {
+                               return;
+                       }
 
-    if (!isNaN(low) && !isNaN(high)) {
-        inival = low;
-        endval = high;
-    } else if (isNaN(low) && isNaN(high)) {
-        chars = true;
-        inival = low.charCodeAt(0);
-        endval = high.charCodeAt(0);
-    } else {
-        inival = (isNaN(low) ? 0 : low);
-        endval = (isNaN(high) ? 0 : high);
-    }
+                       childSplitview = childSplitview.data( "splitview" );
+                       if ( childSplitview ) {
+                               childSplitview._refresh();
+                       }
+               },
 
-    plus = ((inival > endval) ? false : true);
-    if (plus) {
-        while (inival <= endval) {
-            matrix.push(((chars) ? String.fromCharCode(inival) : inival));
-            inival += walker;
-        }
-    } else {
-        while (inival >= endval) {
-            matrix.push(((chars) ? String.fromCharCode(inival) : inival));
-            inival -= walker;
-        }
-    }
+               _bindTouchEvents : function () {
+                       var self = this,
+                               $el = self.element,
+                               $panes = self.panes,
+                               spliters = self.spliters;
 
-    return matrix;
-}
+                       $.each( spliters, function ( i ) {
+                               var spliter = $( this );
+                               self._bindSpliterTouchEvents( spliter );
+                       });
 
+                       $el.mouseleave( function () {
+                               if ( self.touchStatus ) {
+                                       $el.children( ".ui-spliter" ).trigger( "vmouseup" );
+                               }
+                       });
 
+                       $panes.bind( "vmousedown", function () {
+                               $el.find( ".ui-spliter" ).trigger( "vmouseup" );
+                       });
+               },
 
-/*
- * set TIZEN specific configures
- */
+               _bindSpliterTouchEvents : function ( spliter ) {
+                       var self = this,
+                               $el = self.element,
+                               opt = self.options;
 
-( function( $, window, undefined ) {
+                       spliter.bind( "vmousedown", { e : spliter }, function ( event ) {
+                               if ( self.options.fixed ) {
+                                       return;
+                               }
 
-       /* set default transition */
-       $.mobile.defaultPageTransition = "none";
+                               var targetSpliter = event.data.e,
+                                       prevPane = targetSpliter.prev(),
+                                       nextPane = targetSpliter.next(),
+                                       splitviewInPrev = prevPane.find( ":jqmData(role='splitview'):first" ),
+                                       splitviewInNext = nextPane.find( ":jqmData(role='splitview'):first" ),
+                                       isHorizontal = opt.dividerVertical,
+                                       spliterWidth = isHorizontal ?
+                                                                       $( self.spliterBars[0] ).outerWidth() :
+                                                                       $( self.spliterBars[0] ).outerHeight();
 
-       /* depth transition */
-       $.mobile.transitionHandlers.depth = $.mobile.transitionHandlers.simultaneous;
-       $.mobile.transitionFallbacks.depth = "fade";
+                               $el.closest( ".ui-page" ).find( ".ui-spliter" ).trigger( "vmouseup" );
 
-       /* Button data-corners default value */
-       $.fn.buttonMarkup.defaults.corners = false;
+                               self.moveTarget = targetSpliter;
+                               self.moveData = {
+                                       spliterWidth : spliterWidth || 0,
+                                       prevPane : prevPane,
+                                       nextPane : nextPane,
+                                       splitviewInPrev : splitviewInPrev,
+                                       splitviewInNext : splitviewInNext,
+                                       prevPanePos : parseInt( prevPane.css( isHorizontal ? "left" : "top" ), 10 ) || 0,
+                                       prevPaneWidth : parseInt( prevPane.css( isHorizontal ? "width" : "height" ), 10 ) || 0,
+                                       nextPanePos : parseInt( nextPane.css( isHorizontal ? "left" : "top" ), 10 ) || 0,
+                                       nextPaneWidth : parseInt( nextPane.css( isHorizontal ? "width" : "height" ), 10 ) || 0,
+                                       targetPos : parseInt( targetSpliter.css( isHorizontal ? "left" : "top" ), 10 ) || 0,
+                                       pagePos : isHorizontal ? event.pageX : event.pageY
+                               };
 
-       /* button hover delay */
-       $.mobile.buttonMarkup.hoverDelay = 0;
+                               targetSpliter.addClass( "ui-spliter-active" );
 
-})( jQuery, this );
+                               $( document ).bind( "vmousemove.splitview", function ( event ) {
+                                       if ( !self.touchStatus ) {
+                                               return;
+                                       }
 
+                                       self._drag( event );
 
+                                       event.preventDefault();
+                                       event.stopPropagation();
+                               }).bind( "vmouseup.splitview", function ( event ) {
+                                       if ( !self.touchStatus ) {
+                                               return;
+                                       }
 
+                                       self._stop( event );
 
-(function($, undefined) {
+                                       event.preventDefault();
+                                       event.stopPropagation();
 
-ensureNS("jQuery.mobile.tizen");
+                                       self.touchStatus = false;
+                               });
 
-jQuery.extend( jQuery.mobile.tizen,
-{
-    _widgetPrototypes: {},
+                               event.preventDefault();
+                               event.stopPropagation();
 
-    /*
-     * load the prototype for a widget.
-     *
-     * If @widget is a string, the function looks for @widget.prototype.html in the proto-html/ subdirectory of the
-     * framework's current theme and loads the file via AJAX into a string. Note that the file will only be loaded via
-     * AJAX once. If two widget instances based on the same @widget value are to be constructed, the second will be
-     * constructed from the cached copy of the prototype of the first instance.
-     *
-     * If @widget is not a string, it is assumed to be a hash containing at least one key, "proto", the value of which is
-     * the string to be used for the widget prototype. if another key named "key" is also provided, it will serve as the
-     * key under which to cache the prototype, so it need not be rendered again in the future.
-     *
-     * Given the string for the widget prototype, the following patterns occurring in the string are replaced:
-     *
-     *   "${FRAMEWORK_ROOT}" - replaced with the path to the root of the framework
-     *
-     * The function then creates a jQuery $("<div>") object containing the prototype from the string.
-     *
-     * If @ui is not provided, the jQuery object containing the prototype is returned.
-     *
-     * If @ui is provided, it is assumed to be a (possibly multi-level) hash containing CSS selectors. For every level of
-     * the hash and for each string-valued key at that level, the CSS selector specified as the value is sought in the
-     * prototype jQuery object and, if found, the value of the key is replaced with the jQuery object resulting from the
-     * search. Additionally, if the CSS selector is of the form "#widgetid", the "id" attribute will be removed from the
-     * elements contained within the resulting jQuery object. The resulting hash is returned.
-     *
-     * Examples:
-     *
-     * 1.
-     * $.mobile.tizen.loadPrototype("mywidget") => Returns a <div> containing the structure from the file
-     * mywidget.prototype.html located in the current theme folder of the current framework.
-     *
-     * 2. $.mobile.tizen.loadPrototype("mywidget", ui):
-     * where ui is a hash that looks like this:
-     * ui = {
-     *   element1: "<css selector 1>",
-     *   element2: "<css selector 2>",
-     *   group1: {
-     *     group1element1: "<css selector 3>",
-     *     group1element1: "<css selector 4>"
-     *   }
-     *  ...
-     * }
-     *
-     * In this case, after loading the prototype as in Example 1, loadPrototype will traverse @ui and replace the CSS
-     * selector strings with the result of the search for the selector string upon the prototype. If any of the CSS
-     * selectors are of the form "#elementid" then the "id" attribute will be stripped from the elements selected. This
-     * means that they will no longer be accessible via the selector used initially. @ui is then returned thus modified.
-     */
+                               self.touchStatus = true;
+                       });
+               },
 
-    loadPrototype: function(widget, ui) {
-        var ret = undefined,
-            theScriptTag = $("script[data-framework-version][data-framework-root][data-framework-theme]"),
-            frameworkRootPath = theScriptTag.attr("data-framework-root")    + "/" +
-                                theScriptTag.attr("data-framework-version") + "/";
+               _drag : function ( e ) {
+                       if ( !this.moveData || typeof this.moveData === "undefined" ) {
+                               return;
+                       }
 
-        function replaceVariables(s) {
-            return s.replace(/\$\{FRAMEWORK_ROOT\}/g, frameworkRootPath);
-        }
+                       var self = this,
+                               $el = self.element,
+                               opt = self.options,
+                               isHorizontal = opt.dividerVertical,
+                               moveData = self.moveData,
+                               moveTarget = self.moveTarget,
+                               prevPane = moveData.prevPane,
+                               nextPane = moveData.nextPane,
+                               splitviewInPrev = moveData.splitviewInPrev,
+                               splitviewInNext = moveData.splitviewInNext,
+                               spliterWidth = moveData.spliterWidth,
+                               movement = null,
+                               targetPos = null,
+                               nextPanePos = null,
+                               prevPaneWidth = null,
+                               nextPaneWidth = null,
+                               pagePos = isHorizontal ? e.pageX : e.pageY,
+                               splitview = null;
 
-        function fillObj(obj, uiProto) {
-            var selector;
+                       movement = pagePos - moveData.pagePos;
+                       if ( movement > 0 ) {
+                               movement = Math.min( Math.max( moveData.nextPaneWidth - self.minPaneWidth, 0 ), movement );
+                       } else {
+                               movement = Math.max( Math.max( moveData.prevPaneWidth - self.minPaneWidth, 0 ) * -1, movement );
+                       }
 
-            for (var key in obj) {
-                if (typeof obj[key] === "string") {
-                    selector = obj[key];
-                    obj[key] = uiProto.find(obj[key]);
-                    if (selector.substring(0, 1) === "#")
-                        obj[key].removeAttr("id");
-                }
-                else
-                if (typeof obj[key] === "object")
-                    obj[key] = fillObj(obj[key], uiProto);
-            }
-            return obj;
-        }
+                       nextPanePos = moveData.nextPanePos + movement;
+                       prevPaneWidth = Math.max( moveData.prevPaneWidth + movement, 0 );
+                       nextPaneWidth = Math.max( moveData.nextPaneWidth - movement, 0 );
+                       targetPos = moveData.targetPos + movement;
 
-        /* If @widget is a string ... */
-        if (typeof widget === "string") {
-            /* ... try to use it as a key into the cached prototype hash ... */
-            ret = $.mobile.tizen._widgetPrototypes[widget];
-            if (ret === undefined) {
-                /* ... and if the proto was not found, try to load its definition ... */
-                var protoPath = frameworkRootPath + "proto-html" + "/" +
-                                theScriptTag.attr("data-framework-theme");
-                $.ajax({
-                    url: protoPath + "/" + widget + ".prototype.html",
-                    async: false,
-                    dataType: "html"
-                })
-                 .success(function(data, textStatus, jqXHR) {
-                    /* ... and if loading succeeds, cache it and use a copy of it ... */
-                    $.mobile.tizen._widgetPrototypes[widget] = $("<div>").html(replaceVariables(data));
-                    ret = $.mobile.tizen._widgetPrototypes[widget].clone();
-                });
-            }
-        }
-        /* Otherwise ... */
-        else {
-            /* ... if a key was provided ... */
-            if (widget.key !== undefined)
-                /* ... try to use it as a key into the cached prototype hash ... */
-                ret = $.mobile.tizen._widgetPrototypes[widget.key];
+                       moveTarget.css( isHorizontal ? { left : targetPos } : { top : targetPos } );
+                       prevPane.css( isHorizontal ? { width : prevPaneWidth } : { height : prevPaneWidth } );
+                       nextPane.css( isHorizontal ? { width : nextPaneWidth, left : nextPanePos } :
+                                                                                       { height : nextPaneWidth, top : nextPanePos } );
 
-            /* ... and if the proto was not found in the cache ... */
-            if (ret === undefined) {
-                /* ... and a proto definition string was provided ... */
-                if (widget.proto !== undefined) {
-                    /* ... create a new proto from the definition ... */
-                    ret = $("<div>").html(replaceVariables(widget.proto));
-                    /* ... and if a key was provided ... */
-                    if (widget.key !== undefined)
-                        /* ... cache a copy of the proto under that key */
-                        $.mobile.tizen._widgetPrototypes[widget.key] = ret.clone();
-                }
-            }
-            else
-                /* otherwise, if the proto /was/ found in the cache, return a copy of it */
-                ret = ret.clone();
-        }
+                       if ( splitviewInPrev.length ) {
+                               splitview = splitviewInPrev.data( "splitview" );
+                               splitview._refresh( true, false );
+                       }
 
-        /* If the prototype was found/created successfully ... */
-        if (ret != undefined)
-            /* ... and @ui was provided */
-            if (ui != undefined)
-                /* ... return @ui, but replace the CSS selectors it contains with the elements they select */
-                ret = fillObj(ui, ret);
+                       if ( splitviewInNext.length ) {
+                               splitview = splitviewInNext.data( "splitview" );
+                               splitview._refresh( true, true );
+                       }
+               },
 
-        return ret;
-    }
-});
-})(jQuery);
+               _stop : function ( e ) {
+                       if ( !this.moveData || typeof this.moveData === "undefined" ) {
+                               return;
+                       }
 
+                       var self = this,
+                               $el = self.element,
+                               opt = self.options,
+                               $panes = self.panes,
+                               panesLength = $panes.length,
+                               isHorizontal = opt.dividerVertical,
+                               moveData = self.moveData,
+                               moveTarget = self.moveTarget,
+                               prevPane = moveData.prevPane,
+                               nextPane = moveData.nextPane,
+                               splitviewInPrev = moveData.splitviewInPrev,
+                               splitviewInNext = moveData.splitviewInNext,
+                               spliterWidth = moveData.spliterWidth,
+                               spliterSize = spliterWidth * ( panesLength - 1 ),
+                               movement = null,
+                               targetPos = null,
+                               nextPanePos = null,
+                               prevPaneWidth = null,
+                               nextPaneWidth = null,
+                               displayStyle = $el.css( "display" ),
+                               parentWidth = self.containerSize[ 0 ],
+                               parentHeight = self.containerSize[ 1 ],
+                               width = parentWidth - self._horizontalBoundary(),
+                               height = parentHeight - self._verticalBoundary(),
+                               availableWidth = isHorizontal ?
+                                                                       ( width - spliterSize ) :
+                                                                       ( height - spliterSize ),
+                               sum = 0;
 
+                       $( document ).unbind( "vmousemove.splitview vmouseup.splitview" );
+                       moveTarget.removeClass( "ui-spliter-active" );
 
-/*
- *
- * This software is licensed under the MIT licence (as defined by the OSI at
- * http://www.opensource.org/licenses/mit-license.php)
- * 
- * ***************************************************************************
- * Copyright (C) 2011 by Intel Corporation Ltd.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * ***************************************************************************
- */
+                       // ratio calculation
+                       $panes.each( function ( i ) {
+                               var $pane = $( this ),
+                                       paneWidth = isHorizontal ? $pane.width() : $pane.height();
 
-// Ensure that the given namespace is defined. If not, define it to be an empty object.
-// This is kinda like the mkdir -p command.
+                               sum += paneWidth;
+                       });
 
-function ensureNS(ns) {
-    var nsAr = ns.split("."),
-    nsSoFar = "";
+                       $panes.each( function ( i ) {
+                               var $pane = $( this ),
+                                       paneWidth = isHorizontal ? $pane.width() : $pane.height();
 
-    for (var Nix in nsAr) {
-        nsSoFar = nsSoFar + (Nix > 0 ? "." : "") + nsAr[Nix];
-        eval (nsSoFar + " = " + nsSoFar + " || {};");
-    }
-}
+                               self.options.ratio[ i ] = paneWidth / sum;
+                       });
 
+                       self.moveData = null;
+               },
 
+               _fixed : function ( isFix ) {
+                       var self = this,
+                               spliters = self.spliters;
 
-ensureNS("jQuery.mobile.tizen.clrlib");
+                       $.each( spliters, function ( i ) {
+                               var $spliter = $( this );
 
-jQuery.extend( jQuery.mobile.tizen.clrlib, 
-{
-    nearestInt: function(val) { 
-        var theFloor = Math.floor(val);
+                               if ( isFix ) {
+                                       $spliter.addClass( "ui-fixed" );
+                               } else {
+                                       $spliter.removeClass( "ui-fixed" );
+                               }
+                       });
 
-        return (((val - theFloor) > 0.5) ? (theFloor + 1) : theFloor);
+                       self._layout();
+               },
+
+               _dividerVertical : function ( isDividerVertical ) {
+                       var self = this,
+                               $el = self.element,
+                               isHorizontal = isDividerVertical,
+                               $panes = null,
+                               $spliters = null,
+                               $bar = null,
+                               $handle = null;
+
+                       $panes = $el.children( ".ui-pane" );
+                       $spliters = $el.children( ".ui-spliter" );
+                       $bar = $spliters.children( ".ui-spliter-bar" );
+                       $handle = $bar.children( ".ui-spliter-handle" );
+
+                       $el.removeClass( "ui-direction-vertical" );
+                       $el.removeClass( "ui-direction-horizontal" );
+                       $el.addClass( "ui-splitview ui-direction-" + self._direction( isHorizontal ) );
+
+                       $panes.css( {
+                               "left" : "",
+                               "top" : "",
+                               "width" : "",
+                               "height" : ""
+                       });
+
+                       $spliters.css( {
+                               "left" : "",
+                               "top" : "",
+                               "width" : "",
+                               "height" : ""
+                       });
+
+                       $bar.css( {
+                               "width" : "",
+                               "height" : ""
+                       });
+
+                       $handle.css( {
+                               "left" : "",
+                               "top" : ""
+                       });
+
+                       if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
+                               self._layout();
+                       }
+               },
+
+               _ratio : function ( ratioParam ) {
+                       var self = this,
+                               $el = self.element,
+                               $panes = $el.children( ".ui-pane" ),
+                               panesLength = $panes.length;
+
+                       self._convertRatio( ratioParam, panesLength );
+                       self._layout();
+               },
+
+               _refresh : function ( initRatio, fromFirstPane ) {
+                       var self = this,
+                               $el = self.element;
+
+                       if ( typeof initRatio === "undefined" ) {
+                               initRatio = false;
+                       }
+
+                       if ( initRatio && typeof fromFirstPane === "undefined" ) {
+                               fromFirstPane = false;
+                       }
+
+                       if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
+                               self._layout( initRatio, fromFirstPane );
+                       }
+               },
+
+               pane : function ( id, element ) {
+                       if ( typeof id !== "string" ) {
+                               return null;
+                       }
+
+                       var self = this,
+                               $el = self.element,
+                               $targetPane = $el.children( id ),
+                               $targetView = null,
+                               elementParent = null;
+
+                       if ( !$targetPane.hasClass( "ui-pane" ) ) {
+                               return null;
+                       }
+
+                       // getter
+                       if ( typeof element === "undefined" || !element ) {
+                               return $targetPane.contents();
+                       }
+
+                       // setter
+                       if ( $targetPane.hasClass( "ui-scrollview-clip" ) ) {
+                               $targetPane.scrollview( "scrollTo", 0, 0, 0 );
+
+                               $targetView = $targetPane.children( ".ui-scrollview-view" );
+                               if ( !$targetView.length ) {
+                                       return null;
+                               }
+                       } else {
+                               $targetView = $targetPane;
+                       }
+
+                       elementParent = element.parent();
+                       if ( elementParent.length && elementParent[ 0 ] === $targetView[ 0 ] ) {
+                               return;
+                       }
+
+                       $targetView.empty().append( element ).trigger( "create" );
+                       $targetView.fadeIn( 'fast' );
+               },
+
+               maximize : function ( id ) {
+                       if ( typeof id !== "string" ) {
+                               return;
+                       }
+
+                       var self = this,
+                               $el = self.element,
+                               $panes = self.panes,
+                               $targetPane = $el.children( id );
+
+                       if ( !$targetPane.hasClass( "ui-pane" ) ) {
+                               return;
+                       }
+
+                       self.savedRatio = self.options.ratio.slice();
+
+                       self.options.ratio = [];
+                       $panes.each( function ( i ) {
+                               self.options.ratio.push( ( this === $targetPane[ 0 ] ) ? 1 : 0 );
+                       });
+
+                       self._layout();
+               },
+
+               restore : function () {
+                       var self = this;
+
+                       if ( self.savedRatio.length === 0 ) {
+                               return;
+                       }
+
+                       self.options.ratio = self.savedRatio.slice();
+                       self._adjustRatio( self.panes.length );
+
+                       self._layout();
+               }
+       });
+
+       $( document ).bind( "pagecreate create", function ( e ) {
+               $.tizen.splitview.prototype.enhanceWithin( e.target );
+       });
+} ( jQuery, window, document ) );
+
+
+
+/*
+ *
+ * This software is licensed under the MIT licence (as defined by the OSI at
+ * http://www.opensource.org/licenses/mit-license.php)
+ * 
+ * ***************************************************************************
+ * Copyright (C) 2011 by Intel Corporation Ltd.
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ */
+
+// Add markup for labels
+
+
+(function($, undefined) {
+
+$(document).bind("pagecreate create", function(e) {
+    $(":jqmData(role='label')", e.target).not(":jqmData(role='none'), :jqmData(role='nojs')").each(function() {
+        $(this).addClass("jquery-mobile-ui-label")
+               .html($("<span>", {"class": "jquery-mobile-ui-label-text"}).text($(this).text()));
+    });
+});
+
+})(jQuery);
+
+
+
+
+ensureNS("jQuery.mobile.tizen.clrlib");
+
+jQuery.extend( jQuery.mobile.tizen.clrlib, 
+{
+    nearestInt: function(val) { 
+        var theFloor = Math.floor(val);
+
+        return (((val - theFloor) > 0.5) ? (theFloor + 1) : theFloor);
     },
 
     /*
@@ -5195,396 +5253,206 @@ jQuery.extend( jQuery.mobile.tizen.clrlib,
 });
 
 
-\r
-/* ***************************************************************************\r
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.\r
- *\r
- * Permission is hereby granted, free of charge, to any person obtaining a\r
- * copy of this software and associated documentation files (the "Software"),\r
- * to deal in the Software without restriction, including without limitation\r
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
- * and/or sell copies of the Software, and to permit persons to whom the\r
- * Software is furnished to do so, subject to the following conditions:\r
- *\r
- * The above copyright notice and this permission notice shall be included in\r
- * all copies or substantial portions of the Software.\r
- *\r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\r
- * DEALINGS IN THE SOFTWARE.\r
- * ***************************************************************************\r
- *\r
- * Authors: Hyunsook Park <hyunsook.park@samsung.com>\r
- *                     Wonseop Kim <wonseop.kim@samsung.com>\r
-*/\r
-\r
-( function ( $, window, document, undefined ) {\r
-       var _canvas = document.createElement( 'canvas' ),\r
-               _context = _canvas.getContext( '2d' );\r
-\r
-       function fileSystemErrorMessage( e ) {\r
-               var FileError = window.FileError,\r
-                       msg = '';\r
-               switch ( e.code ) {\r
-               case FileError.QUOTA_EXCEEDED_ERR:\r
-                       msg = 'QUOTA_EXCEEDED_ERR';\r
-                       break;\r
-               case FileError.NOT_FOUND_ERR:\r
-                       msg = 'NOT_FOUND_ERR';\r
-                       break;\r
-               case FileError.SECURITY_ERR:\r
-                       msg = 'SECURITY_ERR';\r
-                       break;\r
-               case FileError.INVALID_MODIFICATION_ERR:\r
-                       msg = 'INVALID_MODIFICATION_ERR';\r
-                       break;\r
-               case FileError.INVALID_STATE_ERR:\r
-                       msg = 'INVALID_STATE_ERR';\r
-                       break;\r
-               default:\r
-                       msg = 'Unknown Error';\r
-                       break;\r
-               }\r
-               return msg;\r
-       }\r
-\r
-       function getInternalURLFromURL( url ) {\r
-               var internalURL = url.replace( /\//gi, "_" );\r
-               return internalURL;\r
-       }\r
-\r
-       function resize( imagewidth, imageheight, thumbwidth, thumbheight, fit ) {\r
-               var w = 0, h = 0, x = 0, y = 0,\r
-                       widthratio = imagewidth / thumbwidth,\r
-                       heightratio = imageheight / thumbheight,\r
-                       maxratio = Math.max( widthratio, heightratio );\r
-\r
-               if ( fit ) {\r
-                       w = thumbwidth;\r
-                       h = thumbheight;\r
-               } else {\r
-                       if ( maxratio > 1 ) {\r
-                               w = imagewidth / maxratio;\r
-                               h = imageheight / maxratio;\r
-                       } else {\r
-                               w = imagewidth;\r
-                               h = imageheight;\r
-                       }\r
-                       x = ( thumbwidth - w ) / 2;\r
-                       y = ( thumbheight - h ) / 2;\r
-               }\r
-\r
-               return { w: w, h: h, x: x, y: y };\r
-       }\r
-\r
-       function getThumbnail( img, thumbwidth, thumbheight, fit ) {\r
-               var dimensions, url;\r
-               _canvas.width = thumbwidth;\r
-               _canvas.height = thumbheight;\r
-               dimensions = resize( img.width, img.height, thumbwidth, thumbheight, fit );\r
-               _context.fillStyle = "#000000";\r
-               _context.fillRect ( 0, 0, thumbwidth, thumbheight );\r
-               _context.drawImage( img, dimensions.x, dimensions.y, dimensions.w, dimensions.h );\r
-               url = _canvas.toDataURL();\r
-               return url;\r
-       }\r
-\r
-       $.imageloader = {\r
-               _grantedBytes: 1024 * 1024,\r
-               getThumbnail: function ( url, _callback ) {\r
-                       var internalURL, canvasDataURI;\r
-                       function errorHandler( e ) {\r
-                               var msg = fileSystemErrorMessage( e );\r
-                               if ( _callback ) {\r
-                                       _callback( ( msg === "NOT_FOUND_ERR" ) ? msg : null );\r
-                               }\r
-                       }\r
-\r
-                       internalURL = getInternalURLFromURL( url );\r
-                       try {\r
-                               canvasDataURI = localStorage.getItem( internalURL );\r
-                               if ( _callback ) {\r
-                                       _callback( ( canvasDataURI === null ) ? "NOT_FOUND_ERR" : canvasDataURI );\r
-                               }\r
-                       } catch ( e ) {\r
-                               if ( _callback ) {\r
-                                       _callback( ( e.type === "non_object_property_load" ) ? "NOT_FOUND_ERR" : null );\r
-                               }\r
-                       }\r
-               },\r
-\r
-               setThumbnail: function ( url, _callback, thumbWidth, thumbHeight, fit ) {\r
-                       var image, internalURL, canvasDataURI;\r
-                       function errorHandler( e ) {\r
-                               var msg = fileSystemErrorMessage( e );\r
-                               if ( _callback ) {\r
-                                       _callback( ( msg === "NOT_FOUND_ERR" ) ? msg : null );\r
-                               }\r
-                       }\r
-\r
-                       thumbWidth = thumbWidth || 128;\r
-                       thumbHeight = thumbHeight || 128;\r
-                       fit = fit || true;\r
-                       image = new Image();\r
-                       image.onload = function () {\r
-                               internalURL = getInternalURLFromURL( url );\r
-                               canvasDataURI = getThumbnail( this, thumbWidth, thumbHeight, fit );\r
-                               try {\r
-                                       localStorage.setItem( internalURL, canvasDataURI );\r
-                                       if ( _callback ) {\r
-                                               _callback( canvasDataURI );\r
-                                       }\r
-                               } catch ( e ) {\r
-                                       if ( _callback ) {\r
-                                               _callback( ( e.type === "non_object_property_load" ) ? "NOT_FOUND_ERR" : null );\r
-                                       }\r
-                               }\r
-                       };\r
-                       image.src = url;\r
-               },\r
-\r
-               removeThumbnail: function ( url ) {\r
-                       var internalURL;\r
-                       function errorHandler( e ) {\r
-                               fileSystemErrorMessage( e );\r
-                       }\r
-\r
-                       internalURL = getInternalURLFromURL( url );\r
-                       try {\r
-                               localStorage.removeItem( internalURL );\r
-                       } catch ( e ) {\r
-                               throw e;\r
-                       }\r
-               }\r
-       };\r
-\r
-} ( jQuery, window, document ) );\r
-\r
-
-
-/**
-       @class Button
-       The button widget shows a control on the screen that you can use to generate an action event when it is pressed and released. This widget is coded with standard HTML anchor and input elements and then enhanced by jQueryMobile to make it more attractive and usable on a mobile device. Buttons can be used in Tizen as described in the jQueryMobile documentation for buttons.
-
-       To add a button widget to the application, use the following code
 
-               <div data-role="button" data-inline="true">Text Button Test</div>
-               <div data-role="button" data-inline="true" data-icon="plus" data-style="circle"></div>
-               <div data-role="button" data-inline="true" data-icon="plus" data-style="nobg"></div>
+(function($, undefined) {
 
-       The button can define callbacks for events as described in the jQueryMobile documentation for button events.<br/>
-       You can use methods with the button as described in the jQueryMobile documentation for button methods.
-*/
+ensureNS("jQuery.mobile.tizen");
 
-/**
-       @property {String} data-style
-       Defines the button style. <br/> The default value is box. If the value is set to circle, a circle-shaped button is created. If the value is set to nobg, a button is created without a background.
+jQuery.extend( jQuery.mobile.tizen,
+{
+    _widgetPrototypes: {},
 
-*/
-/**
-       @property {String} data-icon
-       Defines an icon for a button. Tizen supports 12 icon styles: reveal, closed, opened, info, rename, call, warning, plus, minus, cancel, send, and favorite.
-
-*/
+    /*
+     * load the prototype for a widget.
+     *
+     * If @widget is a string, the function looks for @widget.prototype.html in the proto-html/ subdirectory of the
+     * framework's current theme and loads the file via AJAX into a string. Note that the file will only be loaded via
+     * AJAX once. If two widget instances based on the same @widget value are to be constructed, the second will be
+     * constructed from the cached copy of the prototype of the first instance.
+     *
+     * If @widget is not a string, it is assumed to be a hash containing at least one key, "proto", the value of which is
+     * the string to be used for the widget prototype. if another key named "key" is also provided, it will serve as the
+     * key under which to cache the prototype, so it need not be rendered again in the future.
+     *
+     * Given the string for the widget prototype, the following patterns occurring in the string are replaced:
+     *
+     *   "${FRAMEWORK_ROOT}" - replaced with the path to the root of the framework
+     *
+     * The function then creates a jQuery $("<div>") object containing the prototype from the string.
+     *
+     * If @ui is not provided, the jQuery object containing the prototype is returned.
+     *
+     * If @ui is provided, it is assumed to be a (possibly multi-level) hash containing CSS selectors. For every level of
+     * the hash and for each string-valued key at that level, the CSS selector specified as the value is sought in the
+     * prototype jQuery object and, if found, the value of the key is replaced with the jQuery object resulting from the
+     * search. Additionally, if the CSS selector is of the form "#widgetid", the "id" attribute will be removed from the
+     * elements contained within the resulting jQuery object. The resulting hash is returned.
+     *
+     * Examples:
+     *
+     * 1.
+     * $.mobile.tizen.loadPrototype("mywidget") => Returns a <div> containing the structure from the file
+     * mywidget.prototype.html located in the current theme folder of the current framework.
+     *
+     * 2. $.mobile.tizen.loadPrototype("mywidget", ui):
+     * where ui is a hash that looks like this:
+     * ui = {
+     *   element1: "<css selector 1>",
+     *   element2: "<css selector 2>",
+     *   group1: {
+     *     group1element1: "<css selector 3>",
+     *     group1element1: "<css selector 4>"
+     *   }
+     *  ...
+     * }
+     *
+     * In this case, after loading the prototype as in Example 1, loadPrototype will traverse @ui and replace the CSS
+     * selector strings with the result of the search for the selector string upon the prototype. If any of the CSS
+     * selectors are of the form "#elementid" then the "id" attribute will be stripped from the elements selected. This
+     * means that they will no longer be accessible via the selector used initially. @ui is then returned thus modified.
+     */
 
+    loadPrototype: function(widget, ui) {
+        var ret = undefined,
+            theScriptTag = $("script[data-framework-version][data-framework-root][data-framework-theme]"),
+            frameworkRootPath = theScriptTag.attr("data-framework-root")    + "/" +
+                                theScriptTag.attr("data-framework-version") + "/";
 
+        function replaceVariables(s) {
+            return s.replace(/\$\{FRAMEWORK_ROOT\}/g, frameworkRootPath);
+        }
 
-/* ***************************************************************************
-* style : normal, check
-* option :
-*    - folded : decide to show divider press effect or not
-*    - line : decide to draw divider line or not
-*/
-/**
-       @class ListDivider
-       The list divider widget is used as a list separator for grouping lists. List dividers can be used in Tizen as described in the jQueryMobile documentation for list dividers.<br/>
-       To add a list divider widget to the application, use the following code:
+        function fillObj(obj, uiProto) {
+            var selector;
 
-               <li data-role="list-divider" data-style="check">
-               <form><input type="checkbox" name="c2line-check1" /></form></li>
+            for (var key in obj) {
+                if (typeof obj[key] === "string") {
+                    selector = obj[key];
+                    obj[key] = uiProto.find(obj[key]);
+                    if (selector.substring(0, 1) === "#")
+                        obj[key].removeAttr("id");
+                }
+                else
+                if (typeof obj[key] === "object")
+                    obj[key] = fillObj(obj[key], uiProto);
+            }
+            return obj;
+        }
 
-       The list divider can define callbacks for events as described in the jQueryMobile documentation for list events. <br/> You can use methods with the list divider as described in the jQueryMobile documentation for list methods.
+        /* If @widget is a string ... */
+        if (typeof widget === "string") {
+            /* ... try to use it as a key into the cached prototype hash ... */
+            ret = $.mobile.tizen._widgetPrototypes[widget];
+            if (ret === undefined) {
+                /* ... and if the proto was not found, try to load its definition ... */
+                var protoPath = frameworkRootPath + "proto-html" + "/" +
+                                theScriptTag.attr("data-framework-theme");
+                $.ajax({
+                    url: protoPath + "/" + widget + ".prototype.html",
+                    async: false,
+                    dataType: "html"
+                })
+                 .success(function(data, textStatus, jqXHR) {
+                    /* ... and if loading succeeds, cache it and use a copy of it ... */
+                    $.mobile.tizen._widgetPrototypes[widget] = $("<div>").html(replaceVariables(data));
+                    ret = $.mobile.tizen._widgetPrototypes[widget].clone();
+                });
+            }
+        }
+        /* Otherwise ... */
+        else {
+            /* ... if a key was provided ... */
+            if (widget.key !== undefined)
+                /* ... try to use it as a key into the cached prototype hash ... */
+                ret = $.mobile.tizen._widgetPrototypes[widget.key];
 
-       @since tizen2.0 
-*/
-/**
-       @property {String} data-style
-       Sets the style of the list divider. The style options are dialogue, check, expandable, and checkexpandable.
-*/
+            /* ... and if the proto was not found in the cache ... */
+            if (ret === undefined) {
+                /* ... and a proto definition string was provided ... */
+                if (widget.proto !== undefined) {
+                    /* ... create a new proto from the definition ... */
+                    ret = $("<div>").html(replaceVariables(widget.proto));
+                    /* ... and if a key was provided ... */
+                    if (widget.key !== undefined)
+                        /* ... cache a copy of the proto under that key */
+                        $.mobile.tizen._widgetPrototypes[widget.key] = ret.clone();
+                }
+            }
+            else
+                /* otherwise, if the proto /was/ found in the cache, return a copy of it */
+                ret = ret.clone();
+        }
 
-(function ( $, undefined ) {
-       $.widget( "tizen.listdivider", $.mobile.widget, {
-               options: {
-                       initSelector: ":jqmData(role='list-divider')",
-                       folded : false,
-                       listDividerLine : true,
-               },
+        /* If the prototype was found/created successfully ... */
+        if (ret != undefined)
+            /* ... and @ui was provided */
+            if (ui != undefined)
+                /* ... return @ui, but replace the CSS selectors it contains with the elements they select */
+                ret = fillObj(ui, ret);
 
-               _create: function () {
+        return ret;
+    }
+});
+})(jQuery);
 
-                       var $listdivider = this.element,
-                               openStatus = true,
-                               expandSrc,
-                               listDividerLine = true,
-                               style = $listdivider.attr( "data-style" );
 
-                       if ( $listdivider.data("line") === false ) {
-                               this.options.listDividerLine = false;
-                       }
 
-                       if ( $listdivider.data("folded") === true ) {
-                               this.options.folded = true;
-                       }
+/*
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL licenses
+ * http://phpjs.org/functions/range
+ * original by: Waldo Malqui Silva
+ * version: 1107.2516
+ */
+function range( low, high, step ) {
+    // Create an array containing the range of integers or characters
+    // from low to high (inclusive)  
+    // 
+    // version: 1107.2516
+    // discuss at: http://phpjs.org/functions/range
+    // +   original by: Waldo Malqui Silva
+    // *     example 1: range ( 0, 12 );
+    // *     returns 1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
+    // *     example 2: range( 0, 100, 10 );
+    // *     returns 2: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
+    // *     example 3: range( 'a', 'i' );
+    // *     returns 3: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
+    // *     example 4: range( 'c', 'a' );
+    // *     returns 4: ['c', 'b', 'a']
+       var matrix = [],
+               inival,
+               endval,
+               plus,
+               walker = step || 1,
+               chars = false;
 
-                       if ( style == undefined || style === "normal" || style === "check" ) {
-                               if ( this.options.folded ) {
-                                       $listdivider.buttonMarkup();
-                               } else {
-                                       $listdivider.wrapInner("<span class='ui-btn-text'></span>");
-                               }
+    if (!isNaN(low) && !isNaN(high)) {
+        inival = low;
+        endval = high;
+    } else if (isNaN(low) && isNaN(high)) {
+        chars = true;
+        inival = low.charCodeAt(0);
+        endval = high.charCodeAt(0);
+    } else {
+        inival = (isNaN(low) ? 0 : low);
+        endval = (isNaN(high) ? 0 : high);
+    }
 
-                               if ( this.options.listDividerLine ) {
-                                       expandSrc = "<span class='ui-divider-normal-line'></span>";
-                                       if ( this.options.folded ) {
-                                               $( expandSrc ).appendTo( $listdivider.children( ".ui-btn-inner" ) );
-                                       } else {
-                                               $( expandSrc ).appendTo( $listdivider);
-                                       }
-                               }
-                       }
+    plus = ((inival > endval) ? false : true);
+    if (plus) {
+        while (inival <= endval) {
+            matrix.push(((chars) ? String.fromCharCode(inival) : inival));
+            inival += walker;
+        }
+    } else {
+        while (inival >= endval) {
+            matrix.push(((chars) ? String.fromCharCode(inival) : inival));
+            inival -= walker;
+        }
+    }
 
-                       $listdivider.bind( "vclick", function ( event, ui ) {
-                       /* need to implement expand/collapse divider */
-                       });
-               },
-       });
+    return matrix;
+}
 
-       //auto self-init widgets
-       $( document ).bind( "pagecreate create", function ( e ) {
-               $( $.tizen.listdivider.prototype.options.initSelector, e.target ).listdivider();
-       });
-}( jQuery ) );
-
-
-\r
-/* ***************************************************************************\r
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.\r
- *\r
- * Permission is hereby granted, free of charge, to any person obtaining a\r
- * copy of this software and associated documentation files (the "Software"),\r
- * to deal in the Software without restriction, including without limitation\r
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
- * and/or sell copies of the Software, and to permit persons to whom the\r
- * Software is furnished to do so, subject to the following conditions:\r
- *\r
- * The above copyright notice and this permission notice shall be included in\r
- * all copies or substantial portions of the Software.\r
- *\r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\r
- * DEALINGS IN THE SOFTWARE.\r
- * ***************************************************************************\r
- *\r
- * Authors: Hyunsook Park <hyunsook.park@samsung.com>\r
- *                     Wonseop Kim <wonseop.kim@samsung.com>\r
-*/\r
-\r
-( function ( $, undefined ) {\r
-       $.webgl = {};\r
-\r
-       $.webgl.shader = {\r
-               _vertexShader: null,\r
-               _fragmentShader: null,\r
-\r
-               deleteShaders: function ( gl ) {\r
-                       gl.deleteShader( this._vertexShader );\r
-                       gl.deleteShader( this._fragmentShader );\r
-               },\r
-\r
-               addShaderProgram : function ( gl, vs, fs, isFile ) {\r
-                       var shaderProgram,\r
-                               vertexShaderSource = {},\r
-                               fragmentShaderSource = {};\r
-\r
-                       if ( isFile ) {\r
-                               vertexShaderSource = this.loadShaderFile( vs );\r
-                               fragmentShaderSource = this.loadShaderFile( fs );\r
-                       } else {\r
-                               vertexShaderSource.source = vs;\r
-                               fragmentShaderSource.source = fs;\r
-                       }\r
-\r
-                       this._vertexShader = this.getShader( gl, gl.VERTEX_SHADER, vertexShaderSource );\r
-                       this._fragmentShader = this.getShader( gl, gl.FRAGMENT_SHADER, fragmentShaderSource );\r
-\r
-                       shaderProgram = gl.createProgram();\r
-                       gl.attachShader( shaderProgram, this._vertexShader);\r
-                       gl.attachShader( shaderProgram, this._fragmentShader);\r
-                       gl.linkProgram( shaderProgram );\r
-\r
-                       if ( !gl.getProgramParameter( shaderProgram, gl.LINK_STATUS ) ) {\r
-                               window.alert( "Could not initialize Shaders!" );\r
-                       }\r
-                       return shaderProgram;\r
-               },\r
-\r
-               loadShaderFile : function ( path ) {\r
-                       var cache = null;\r
-                       $.ajax({\r
-                               async : false,\r
-                               url : path,\r
-                               success : function ( result ) {\r
-                                       cache = {\r
-                                               source: result\r
-                                       };\r
-                               }\r
-                       });\r
-                       return cache;\r
-               },\r
-\r
-               getShader: function ( gl, type, script ) {\r
-                       var shader;\r
-\r
-                       if ( !gl || !type || !script ) {\r
-                               return null;\r
-                       }\r
-\r
-                       shader = gl.createShader( type );\r
-\r
-                       gl.shaderSource( shader, script.source );\r
-                       gl.compileShader( shader );\r
-\r
-                       if ( !gl.getShaderParameter( shader, gl.COMPILE_STATUS ) ) {\r
-                               window.alert( gl.getShaderInfoLog( shader ) );\r
-                               gl.deleteShader( shader );\r
-                               return null;\r
-                       }\r
-                       return shader;\r
-               }\r
-       };\r
-\r
-       $.webgl.buffer = {\r
-               attribBufferData: function ( gl, attribArray ) {\r
-                       var attribBuffer = gl.createBuffer();\r
-\r
-                       gl.bindBuffer( gl.ARRAY_BUFFER, attribBuffer );\r
-                       gl.bufferData( gl.ARRAY_BUFFER, attribArray, gl.STATIC_DRAW );\r
-                       gl.bindBuffer( gl.ARRAY_BUFFER, null );\r
-\r
-                       return attribBuffer;\r
-               }\r
-       };\r
-\r
-} ( jQuery ) );\r
-\r
 
 
 /*
@@ -5615,306 +5483,19 @@ jQuery.extend( jQuery.mobile.tizen.clrlib,
  * ***************************************************************************
  */
 
-// Add markup for labels
-
-
-(function($, undefined) {
-
-$(document).bind("pagecreate create", function(e) {
-    $(":jqmData(role='label')", e.target).not(":jqmData(role='none'), :jqmData(role='nojs')").each(function() {
-        $(this).addClass("jquery-mobile-ui-label")
-               .html($("<span>", {"class": "jquery-mobile-ui-label-text"}).text($(this).text()));
-    });
-});
-
-})(jQuery);
+// Ensure that the given namespace is defined. If not, define it to be an empty object.
+// This is kinda like the mkdir -p command.
 
+function ensureNS(ns) {
+    var nsAr = ns.split("."),
+    nsSoFar = "";
 
+    for (var Nix in nsAr) {
+        nsSoFar = nsSoFar + (Nix > 0 ? "." : "") + nsAr[Nix];
+        eval (nsSoFar + " = " + nsSoFar + " || {};");
+    }
+}
 
-\r
-/* ***************************************************************************\r
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.\r
- *\r
- * Permission is hereby granted, free of charge, to any person obtaining a\r
- * copy of this software and associated documentation files (the "Software"),\r
- * to deal in the Software without restriction, including without limitation\r
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
- * and/or sell copies of the Software, and to permit persons to whom the\r
- * Software is furnished to do so, subject to the following conditions:\r
- *\r
- * The above copyright notice and this permission notice shall be included in\r
- * all copies or substantial portions of the Software.\r
- *\r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\r
- * DEALINGS IN THE SOFTWARE.\r
- * ***************************************************************************\r
- *\r
- * Authors: Hyunsook Park <hyunsook.park@samsung.com>\r
- *                     Wonseop Kim <wonseop.kim@samsung.com>\r
-*/\r
-\r
-( function ( $, window, undefined ) {\r
-       var HALF_PI = Math.PI / 2,\r
-               DEFAULT_STEP = 0.001,\r
-               MotionPath = {},\r
-               vec3 = window.vec3,\r
-               arcLength2d = function ( p0, p1 ) {\r
-                       var d = [ p1[0] - p0[0], p1[1] - p0[1] ],\r
-                               value = Math.sqrt( d[0] * d[0] + d[1] * d[1] );\r
-                       return value;\r
-               },\r
-               arcLength3d = function ( p0, p1 ) {\r
-                       var d = [ p1[0] - p0[0], p1[1] - p0[1], p1[2] - p0[2] ],\r
-                               value = Math.sqrt( d[0] * d[0] + d[1] * d[1] + d[2] * d[2] );\r
-                       return value;\r
-               };\r
-\r
-       MotionPath.base = function () {};\r
-       MotionPath.base.prototype = {\r
-               points: [],\r
-               step: DEFAULT_STEP,\r
-               length: 0,\r
-               levels: [],\r
-               init: function ( data ) {},\r
-               calculateLevel: function ( maxLevel ) {},\r
-               calculateTotalLength: function () {},\r
-               getPosition: function ( percent ) {},\r
-               getPercent: function ( start, interval ) {},\r
-               getAngle: function ( percent ) {}\r
-       };\r
-\r
-       MotionPath.bezier2d = function () {};\r
-       MotionPath.bezier2d.prototype = $.extend( true, {}, MotionPath.base.prototype, {\r
-               init: function ( data ) {\r
-                       this.points = data.points;\r
-                       this.step = data.step || DEFAULT_STEP;\r
-                       this.length = this.calculateTotalLength();\r
-                       this.levels = this.calculateLevel( data.maxLevel ) || [];\r
-               },\r
-\r
-               calculateLevel: function ( maxLevel ) {\r
-                       var totalLength = this.length,\r
-                               interval = totalLength / maxLevel,\r
-                               levels = [],\r
-                               i;\r
-\r
-                       if ( !maxLevel ) {\r
-                               return null;\r
-                       }\r
-\r
-                       for ( i = 0; i < maxLevel; i += 1 ) {\r
-                               levels[maxLevel - i] = this.getPercent( 0, interval * i );\r
-                       }\r
-\r
-                       return levels;\r
-               },\r
-\r
-               calculateTotalLength: function () {\r
-                       var step = this.step,\r
-                               current = this.getPosition( 0 ),\r
-                               last = current,\r
-                               length = 0,\r
-                               percent;\r
-                       for ( percent = step; percent <= 1; percent += step ) {\r
-                               current = this.getPosition( percent );\r
-                               length += arcLength2d( last, current );\r
-                               last = current;\r
-                       }\r
-                       return length;\r
-               },\r
-\r
-               getPosition: function ( percent ) {\r
-                       var points = this.points,\r
-                               getValue = function ( p1, c1, c2, p2, t ) {\r
-                                       return Math.pow(1 - t, 3) * p1 +\r
-                                               3 * t * Math.pow( 1 - t, 2 ) * c1 +\r
-                                               3 * Math.pow( t, 2 ) * ( 1 - t ) * c2 +\r
-                                               Math.pow( t, 3 ) * p2;\r
-                               },\r
-                               result = [\r
-                                       getValue( points[0][0], points[1][0], points[2][0], points[3][0], percent ),\r
-                                       getValue( points[0][1], points[1][1], points[2][1], points[3][1], percent )\r
-                               ];\r
-                       return result;\r
-               },\r
-\r
-               getPercent: function ( start, interval ) {\r
-                       var step = this.step,\r
-                               current = this.getPosition( start = start || 0 ),\r
-                               last = current,\r
-                               targetLength = start + interval,\r
-                               length = 0,\r
-                               percent;\r
-\r
-                       for ( percent = start + step; percent <= 1; percent += step ) {\r
-                               current = this.getPosition( percent );\r
-                               length += arcLength2d( last, current );\r
-                               if ( length >= targetLength ) {\r
-                                       return percent;\r
-                               }\r
-                               last = current;\r
-                       }\r
-                       return 1;\r
-               },\r
-\r
-               getAngle: function ( percent ) {\r
-                       var points = this.points,\r
-                               getTangent = function ( p1, c1, c2, p2, t ) {\r
-                                       return 3 * t * t * ( -p1 + 3 * c1 - 3 * c2 + p2 ) + 6 * t * ( p1 - 2 * c1 + c2 ) + 3 * ( -p1 + c1 );\r
-                               },\r
-                               tx = getTangent( points[0][0], points[1][0], points[2][0], points[3][0], percent ),\r
-                               ty = getTangent( points[0][1], points[1][1], points[2][1], points[3][1], percent );\r
-                       return Math.atan2( tx, ty ) - HALF_PI;\r
-               }\r
-\r
-       } );\r
-\r
-       // clamped cubic B-spline curve\r
-       // http://web.mit.edu/hyperbook/Patrikalakis-Maekawa-Cho/node17.html\r
-       // http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/bspline-curve-coef.html\r
-       MotionPath.bspline = function () {};\r
-       MotionPath.bspline.prototype = $.extend( true, {}, MotionPath.base.prototype, {\r
-               _degree: 3,\r
-               _numberOfControls : 0,\r
-               _knotVectors: [],\r
-               _numberOfKnots: 0,\r
-\r
-               init: function ( data ) {\r
-                       this.points = data.points;\r
-                       this.step = data.step || DEFAULT_STEP;\r
-                       this._numberOfPoints = this.points.length - 1;\r
-                       this._numberOfKnots = this._numberOfPoints + this._degree + 1;\r
-\r
-                       var deltaKnot = 1 / ( this._numberOfKnots - ( 2 * this._degree ) ),\r
-                               v = deltaKnot,\r
-                               i = 0;\r
-\r
-                       while ( i <= this._numberOfKnots ) {\r
-                               if ( i <= this._degree ) {\r
-                                       this._knotVectors.push( 0 );\r
-                               } else if ( i < this._numberOfKnots - this._degree + 1 ) {\r
-                                       this._knotVectors.push( v );\r
-                                       v += deltaKnot;\r
-                               } else {\r
-                                       this._knotVectors.push( 1 );\r
-                               }\r
-                               i += 1;\r
-                       }\r
-\r
-                       this.length = this.calculateTotalLength();\r
-                       this.levels = this.calculateLevel( data.maxLevel ) || [];\r
-               },\r
-\r
-               _Np: function ( percent, i, degree ) {\r
-                       var knots = this._knotVectors,\r
-                               A = 0,\r
-                               B = 0,\r
-                               denominator = 0,\r
-                               N0 = function ( percent, i ) {\r
-                                       return ( ( knots[i] <= percent && percent < knots[i + 1] ) ? 1 : 0 );\r
-                               };\r
-\r
-                       if ( degree === 1 ) {\r
-                               A = N0( percent, i );\r
-                               B = N0( percent, i + 1 );\r
-                       } else {\r
-                               A = this._Np( percent, i, degree - 1 );\r
-                               B = this._Np( percent, i + 1, degree - 1 );\r
-                       }\r
-\r
-                       denominator = knots[i + degree] - knots[i];\r
-                       A *= ( denominator !== 0 ) ? ( ( percent - knots[i] ) / denominator ) : 0;\r
-                       denominator = knots[i + degree + 1] - knots[i + 1];\r
-                       B *= ( denominator !== 0 ) ? ( ( knots[i + degree + 1] - percent ) / denominator ) : 0;\r
-\r
-                       return A + B;\r
-               },\r
-\r
-               calculateLevel: function ( maxLevel ) {\r
-                       var totalLength = this.length,\r
-                               interval = totalLength / maxLevel,\r
-                               levels = [],\r
-                               i;\r
-\r
-                       if ( !maxLevel ) {\r
-                               return null;\r
-                       }\r
-\r
-                       for ( i = 0; i < maxLevel; i += 1 ) {\r
-                               levels[maxLevel - i] = this.getPercent( 0, interval * i );\r
-                       }\r
-                       return levels;\r
-               },\r
-\r
-               calculateTotalLength: function () {\r
-                       var step = this.step,\r
-                               current = this.getPosition( 0 ),\r
-                               last = current,\r
-                               length = 0,\r
-                               percent;\r
-                       for ( percent = step; percent <= 1; percent += step ) {\r
-                               current = this.getPosition( percent );\r
-                               length += arcLength3d( last, current );\r
-                               last = current;\r
-                       }\r
-                       return length;\r
-               },\r
-\r
-               getPosition: function ( percent ) {\r
-                       var result = [], i, j, sum;\r
-                       percent = percent.toFixed( 4 );\r
-                       for ( j = 0; j < 3; j += 1 ) {\r
-                               sum = 0;\r
-                               for ( i = 0; i <= this._numberOfPoints; i += 1 ) {\r
-                                       sum += this.points[i][j] * this._Np( percent, i, this._degree );\r
-                               }\r
-                               result[j] = sum;\r
-                       }\r
-\r
-                       return result;\r
-               },\r
-\r
-               getPercent: function ( start, interval ) {\r
-                       var step = this.step,\r
-                               current = this.getPosition( start = start || 0 ),\r
-                               last = current,\r
-                               targetLength = start + interval,\r
-                               length = 0,\r
-                               percent;\r
-\r
-                       for ( percent = start + step; percent <= 1; percent += step ) {\r
-                               current = this.getPosition( percent );\r
-                               length += arcLength3d( last, current );\r
-                               if ( length >= targetLength ) {\r
-                                       return percent;\r
-                               }\r
-                               last = current;\r
-                       }\r
-                       return 1;\r
-               },\r
-\r
-               getAngle: function ( percent ) {\r
-                       var prev = this.getPosition( percent ),\r
-                               next = this.getPosition( percent + 0.001 ),\r
-                               dir = vec3.normalize( vec3.direction( prev, next ) ),\r
-                               cosValue = vec3.dot( dir, [1, 0, 0] );\r
-\r
-                       return Math.acos( cosValue ) + Math.PI;\r
-               }\r
-       } );\r
-\r
-       $.motionpath = function ( type, data ) {\r
-               var object = new MotionPath[type]();\r
-               object.init( data );\r
-               return object;\r
-       };\r
-} ( jQuery, window ) );\r
-\r
 
 
 /* ***************************************************************************
@@ -5939,1012 +5520,1570 @@ $(document).bind("pagecreate create", function(e) {
  * DEALINGS IN THE SOFTWARE.
  * ***************************************************************************
  *
- *  Author: Sanghee Lee <sang-hee.lee@samsung.com>
+ * Authors: Hyunsook Park <hyunsook.park@samsung.com>
+ *                     Wonseop Kim <wonseop.kim@samsung.com>
 */
 
-/**
- *  Splitview is a widget which can show different HTML contents at the same time on each divided pane.
- *  A user can place Splitview controls on JQuery Mobile's Content area and arrange two panes on the widget.
- *  And HTML fragments or another Splitview also can be placed on the pane.
- *  The number of panes inside of Splitview is restricted as two.
- *  If a user define only one pane in Splitview, a empty pane will be added automatically,
- *  on the other hand, if 3 or more panes are defined in Splitview, the panes after two will be ignored and removed from the DOM tree.
- *  The HTML fragments of a pane should be composed of elements describing a part of Web page (e.g. <div>…</div>).
- *  Also widgets can be included in the HTML fragments.
- *
- *  HTML Attributes:
- *
- *      data-fixed : The resizing mode of panes - fixed and flexible mode.
- *              If the value is true, the panes' sizes will be fixed, or if not, it will be flexible. (Default : false)
- *      data-divider-vertical : The direction of dividers.
- *              If the value is true, the panes will be placed in horizontal direction,
- *              or if not, it will be placed in vertical direction. (Default : "true")
- *      data-ratio : The ratio of two panes' widths or heights. (Default : [ 1/2, 1/2 ]
- *
- *  APIs:
- *
- *      pane ( id [ , element ] )
- *          : This method replaces child contents of a pane indicated by id attribute with contents of inputted element.
- *            If second argument is not specified, it will act as a getter method.
- *            The string of id has to be started with "#" which means "id" of CSS selectors.
- *      maximize ( id )
- *          : This method maximizes a pane's size indicated by id.
- *            The string of id has to be started with "#" which means "id" of CSS selectors.
- *      restore ()
- *          : This method restores all panes' sizes to the ratio prior to maximization.
- *
- *  Examples:
- *
- *      <div data-role="splitview" data-fixed="false" data-divider-vertical="true" data-ratio="0.5, 0.5">
- *          <div class="ui-pane">pane0</div>
- *          <div class="ui-pane">pane1</div>
- *      </div>
- *
- */
+( function ( $, window, document, undefined ) {
+       var _canvas = document.createElement( 'canvas' ),
+               _context = _canvas.getContext( '2d' );
+
+       function fileSystemErrorMessage( e ) {
+               var FileError = window.FileError,
+                       msg = '';
+               switch ( e.code ) {
+               case FileError.QUOTA_EXCEEDED_ERR:
+                       msg = 'QUOTA_EXCEEDED_ERR';
+                       break;
+               case FileError.NOT_FOUND_ERR:
+                       msg = 'NOT_FOUND_ERR';
+                       break;
+               case FileError.SECURITY_ERR:
+                       msg = 'SECURITY_ERR';
+                       break;
+               case FileError.INVALID_MODIFICATION_ERR:
+                       msg = 'INVALID_MODIFICATION_ERR';
+                       break;
+               case FileError.INVALID_STATE_ERR:
+                       msg = 'INVALID_STATE_ERR';
+                       break;
+               default:
+                       msg = 'Unknown Error';
+                       break;
+               }
+               return msg;
+       }
 
+       function getInternalURLFromURL( url ) {
+               var internalURL = url.replace( /\//gi, "_" );
+               return internalURL;
+       }
 
-/**
-       @class Splitview
-       Splitview widget enables a user to place and arrange several panes. Each divided pane can show repective HTML contents.
+       function resize( imagewidth, imageheight, thumbwidth, thumbheight, fit ) {
+               var w = 0, h = 0, x = 0, y = 0,
+                       widthratio = imagewidth / thumbwidth,
+                       heightratio = imageheight / thumbheight,
+                       maxratio = Math.max( widthratio, heightratio );
+
+               if ( fit ) {
+                       w = thumbwidth;
+                       h = thumbheight;
+               } else {
+                       if ( maxratio > 1 ) {
+                               w = imagewidth / maxratio;
+                               h = imageheight / maxratio;
+                       } else {
+                               w = imagewidth;
+                               h = imageheight;
+                       }
+                       x = ( thumbwidth - w ) / 2;
+                       y = ( thumbheight - h ) / 2;
+               }
 
-       To add a Splitview widget to the application, use the following code:
+               return { w: w, h: h, x: x, y: y };
+       }
 
-               <div data-role="splitview" data-fixed="false" data-divider-vertical="true" data-ratio="0.5, 0.5">
-                       <div class="ui-pane">pane0</div>
-                       <div class="ui-pane">pane1</div>
-               </div>
-*/
+       function getThumbnail( img, thumbwidth, thumbheight, fit ) {
+               var dimensions, url;
+               _canvas.width = thumbwidth;
+               _canvas.height = thumbheight;
+               dimensions = resize( img.width, img.height, thumbwidth, thumbheight, fit );
+               _context.fillStyle = "#000000";
+               _context.fillRect ( 0, 0, thumbwidth, thumbheight );
+               _context.drawImage( img, dimensions.x, dimensions.y, dimensions.w, dimensions.h );
+               url = _canvas.toDataURL();
+               return url;
+       }
 
-/**
-       @property {Boolean} data-fixed
-       The resizing mode of panes - fixed and flexible mode.
-*/
+       $.imageloader = {
+               _grantedBytes: 1024 * 1024,
+               getThumbnail: function ( url, _callback ) {
+                       var internalURL, canvasDataURI;
+                       function errorHandler( e ) {
+                               var msg = fileSystemErrorMessage( e );
+                               if ( _callback ) {
+                                       _callback( ( msg === "NOT_FOUND_ERR" ) ? msg : null );
+                               }
+                       }
 
-/**
-       @property {Boolean} data-divider-vertical
-       The direction of dividers - horizontal or vertical.
- */
+                       internalURL = getInternalURLFromURL( url );
+                       try {
+                               canvasDataURI = localStorage.getItem( internalURL );
+                               if ( _callback ) {
+                                       _callback( ( canvasDataURI === null ) ? "NOT_FOUND_ERR" : canvasDataURI );
+                               }
+                       } catch ( e ) {
+                               if ( _callback ) {
+                                       _callback( ( e.type === "non_object_property_load" ) ? "NOT_FOUND_ERR" : null );
+                               }
+                       }
+               },
 
-/**
-       @property {Array} data-ratio
-       The ratio of two panes' widths or heights.
-*/
+               setThumbnail: function ( url, _callback, thumbWidth, thumbHeight, fit ) {
+                       var image, internalURL, canvasDataURI;
+                       function errorHandler( e ) {
+                               var msg = fileSystemErrorMessage( e );
+                               if ( _callback ) {
+                                       _callback( ( msg === "NOT_FOUND_ERR" ) ? msg : null );
+                               }
+                       }
 
-/**
-       @method pane
-       This method replaces child contents of a pane indicated by id attribute with contents of inputted element.
-       If second argument is not specified, it will act as a getter method.
+                       thumbWidth = thumbWidth || 128;
+                       thumbHeight = thumbHeight || 128;
+                       fit = fit || true;
+                       image = new Image();
+                       image.onload = function () {
+                               internalURL = getInternalURLFromURL( url );
+                               canvasDataURI = getThumbnail( this, thumbWidth, thumbHeight, fit );
+                               try {
+                                       localStorage.setItem( internalURL, canvasDataURI );
+                                       if ( _callback ) {
+                                               _callback( canvasDataURI );
+                                       }
+                               } catch ( e ) {
+                                       if ( _callback ) {
+                                               _callback( ( e.type === "non_object_property_load" ) ? "NOT_FOUND_ERR" : null );
+                                       }
+                               }
+                       };
+                       image.src = url;
+               },
 
-               <div data-role="splitview">
-                       <div class="ui-pane" id="pane0">pane0</div>
-                       <div class="ui-pane" id="pane1">pane1</div>
-               </div>
-               $(".selector").splitview("pane", id, element);
-*/
+               removeThumbnail: function ( url ) {
+                       var internalURL;
+                       function errorHandler( e ) {
+                               fileSystemErrorMessage( e );
+                       }
 
-/**
-       @method maximize
-       This method maximizes a pane's size indicated by id.
+                       internalURL = getInternalURLFromURL( url );
+                       try {
+                               localStorage.removeItem( internalURL );
+                       } catch ( e ) {
+                               throw e;
+                       }
+               }
+       };
 
-               <div data-role="splitview">
-                       <div class="ui-pane" id="pane0">pane0</div>
-                       <div class="ui-pane" id="pane1">pane1</div>
-               </div>
-               $(".selector").splitview("maximize", id);
-*/
+} ( jQuery, window, document ) );
 
-/**
-       @method restore
-       This method restores all panes' sizes to the ratio prior to maximization.
 
-               <div data-role="splitview">
-                       <div class="ui-pane" id="pane0">pane0</div>
-                       <div class="ui-pane" id="pane1">pane1</div>
-               </div>
-               $(".selector").splitview("restore");
+
+/* ***************************************************************************
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ *
+ * Authors: Hyunsook Park <hyunsook.park@samsung.com>
+ *                     Wonseop Kim <wonseop.kim@samsung.com>
 */
 
-( function ( $, window, document, undefined ) {
-       $.widget( "tizen.splitview", $.mobile.widget, {
-               options : {
-                       fixed : false,
-                       dividerVertical : true,
-                       ratio : [],
-                       initSelector : ":jqmData(role='splitview')"
-               },
+( function ( $, undefined ) {
+       $.webgl = {};
 
-               _create : function () {
-                       var self = this,
-                               $el = self.element,
-                               opt = self.options,
-                               $panes = $el.children( ".ui-pane" ),
-                               panesLength = $panes.length,
-                               spliters = [],
-                               spliterBars = [],
-                               ratioAttr = this.element.attr( "data-ratio" ),
-                               containerSize = [ 0, 0 ],
-                               resizeTimer = null,
-                               i = 0;
+       $.webgl.shader = {
+               _vertexShader: null,
+               _fragmentShader: null,
 
-                       if ( panesLength !== 2 ) {
-                               if ( panesLength < 2 ) {
-                                       for ( i = panesLength ; i < 2 ; ++i ) {
-                                               self._addEmptyPanes();
-                                       }
-                               } else {
-                                       $panes.slice( 2 ).remove();
-                               }
+               deleteShaders: function ( gl ) {
+                       gl.deleteShader( this._vertexShader );
+                       gl.deleteShader( this._fragmentShader );
+               },
 
-                               $panes = $el.children( ".ui-pane" );
-                               panesLength = $panes.length;
+               addShaderProgram : function ( gl, vs, fs, isFile ) {
+                       var shaderProgram,
+                               vertexShaderSource = {},
+                               fragmentShaderSource = {};
+
+                       if ( isFile ) {
+                               vertexShaderSource = this.loadShaderFile( vs );
+                               fragmentShaderSource = this.loadShaderFile( fs );
+                       } else {
+                               vertexShaderSource.source = vs;
+                               fragmentShaderSource.source = fs;
                        }
 
-                       spliters[ 0 ] = $( "<a href='#' class='ui-spliter' aria-label='Drag scroll, double tap and move to adjust split area'></a>" ).insertAfter( $panes[ 0 ] );
-                       spliterBars[ 0 ] = $( "<div class='ui-spliter-bar'></div>" ).appendTo( spliters[ 0 ] );
-                       $( "<div class='ui-spliter-handle'></div>" ).appendTo( spliterBars[ 0 ] );
+                       this._vertexShader = this.getShader( gl, gl.VERTEX_SHADER, vertexShaderSource );
+                       this._fragmentShader = this.getShader( gl, gl.FRAGMENT_SHADER, fragmentShaderSource );
 
-                       $.extend( this, {
-                               moveTarget : null,
-                               moveData : {},
-                               spliters : spliters,
-                               spliterBars : spliterBars,
-                               panes : $panes,
-                               containerSize : containerSize,
-                               touchStatus : false,
-                               minPaneWidth : 50,
-                               savedRatio : []
-                       });
-
-                       self._bindTouchEvents();
-                       self._convertRatio( ratioAttr, $panes.length );
+                       shaderProgram = gl.createProgram();
+                       gl.attachShader( shaderProgram, this._vertexShader);
+                       gl.attachShader( shaderProgram, this._fragmentShader);
+                       gl.linkProgram( shaderProgram );
 
-                       $el.addClass( "ui-splitview ui-direction-" + self._direction( opt.dividerVertical ) );
-
-                       if ( $el.parent().closest( ".ui-splitview" ).length ) {
-                               if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
-                                       self._layout();
-                               }
+                       if ( !gl.getProgramParameter( shaderProgram, gl.LINK_STATUS ) ) {
+                               window.alert( "Could not initialize Shaders!" );
                        }
+                       return shaderProgram;
+               },
 
-                       $( window ).bind( "pagechange", function ( e ) {
-                               if ( !$el.parent().closest( ".ui-splitview" ).length ) {
-                                       if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
-                                               self._layout();
-                                       }
-                               }
-                       }).resize( function () {
-                               if ( resizeTimer ) {
-                                       clearTimeout( resizeTimer );
+               loadShaderFile : function ( path ) {
+                       var cache = null;
+                       $.ajax({
+                               async : false,
+                               url : path,
+                               success : function ( result ) {
+                                       cache = {
+                                               source: result
+                                       };
                                }
-
-                               resizeTimer = setTimeout( function () {
-                                       if ( !$el.parent().closest( ".ui-splitview" ).length ) {
-                                               if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
-                                                       self._layout();
-                                               }
-                                       }
-                               }, 250);
                        });
+                       return cache;
                },
 
-               _addEmptyPanes : function () {
-                       var self = this,
-                               $el = self.element,
-                               opt = self.options,
-                               $panes = $el.children( ".ui-pane" ),
-                               scrollAttribute = ( $.support.scrollview ) ? "data-scroll='y'" : "",
-                               pane = $( "<div class='ui-pane' " + scrollAttribute + "></div>" );
+               getShader: function ( gl, type, script ) {
+                       var shader;
 
-                       if ( scrollAttribute.length ) {
-                               pane.scrollview( { direction: "y" } );
+                       if ( !gl || !type || !script ) {
+                               return null;
                        }
 
-                       if ( !$panes.length ) {
-                               $el.append( pane );
-                       } else {
-                               $panes.last().after( pane );
+                       shader = gl.createShader( type );
+
+                       gl.shaderSource( shader, script.source );
+                       gl.compileShader( shader );
+
+                       if ( !gl.getShaderParameter( shader, gl.COMPILE_STATUS ) ) {
+                               window.alert( gl.getShaderInfoLog( shader ) );
+                               gl.deleteShader( shader );
+                               return null;
                        }
-               },
+                       return shader;
+               }
+       };
 
-               _direction : function ( isHorizontal ) {
-                       return isHorizontal ? "horizontal" : "vertical";
-               },
+       $.webgl.buffer = {
+               attribBufferData: function ( gl, attribArray ) {
+                       var attribBuffer = gl.createBuffer();
 
-               _isStyleSpecified : function ( cssString ) {
-                       return ( typeof cssString !== "undefined" && cssString.length );
-               },
+                       gl.bindBuffer( gl.ARRAY_BUFFER, attribBuffer );
+                       gl.bufferData( gl.ARRAY_BUFFER, attribArray, gl.STATIC_DRAW );
+                       gl.bindBuffer( gl.ARRAY_BUFFER, null );
 
-               _getContainerSize : function ( widthString, heightString ) {
-                       var self = this,
-                               $el = self.element,
-                               widthSpecified = self._isStyleSpecified( widthString ),
-                               heightSpecified = self._isStyleSpecified( heightString );
+                       return attribBuffer;
+               }
+       };
 
-                       self.containerSize[ 0 ] = ( widthSpecified ) ? $el.outerWidth( true ) : self._parentWidth();
-                       self.containerSize[ 1 ] = ( heightSpecified ) ? $el.outerHeight( true ) : self._parentHeight();
+} ( jQuery ) );
 
-                       if ( !self.containerSize[ 0 ] || !self.containerSize[ 1 ] ) {
-                               return false;
-                       }
 
-                       return true;
-               },
 
-               _parentWidth : function () {
-                       var $parent = this.element.parent();
+/* ***************************************************************************
+* style : normal, check
+* option :
+*    - folded : decide to show divider press effect or not
+*    - line : decide to draw divider line or not
+*/
+/**
+       @class ListDivider
+       The list divider widget is used as a list separator for grouping lists. List dividers can be used in Tizen as described in the jQueryMobile documentation for list dividers.<br/>
+       To add a list divider widget to the application, use the following code:
 
-                       if ( !$parent && typeof $parent === "undefined" && !$parent.length ) {
-                               return $( window ).width();
-                       }
+               <li data-role="list-divider" data-style="check">
+               <form><input type="checkbox" name="c2line-check1" /></form></li>
 
-                       return $parent.width();
+       The list divider can define callbacks for events as described in the jQueryMobile documentation for list events. <br/> You can use methods with the list divider as described in the jQueryMobile documentation for list methods.
+
+       @since tizen2.0 
+*/
+/**
+       @property {String} data-style
+       Sets the style of the list divider. The style options are dialogue, check, expandable, and checkexpandable.
+*/
+
+(function ( $, undefined ) {
+       $.widget( "tizen.listdivider", $.mobile.widget, {
+               options: {
+                       initSelector: ":jqmData(role='list-divider')",
+                       folded : false,
+                       listDividerLine : true,
                },
 
-               _parentHeight : function () {
-                       var $parent = this.element.parent(),
-                               heightString = "",
-                               heightSpecified = false,
-                               parentHeight = 0;
+               _create: function () {
 
-                       while ( $parent && typeof $parent !== "undefined" && $parent.length ) {
-                               if ( typeof $parent[ 0 ].style !== "undefined" ) {
-                                       heightString = $parent[ 0 ].style.height;
-                                       heightSpecified = ( typeof heightString !== "undefined" && heightString.length );
-                                       if ( heightSpecified ) {
-                                               parentHeight = $parent.height();
-                                               break;
-                                       }
-                               }
+                       var $listdivider = this.element,
+                               openStatus = true,
+                               expandSrc,
+                               listDividerLine = true,
+                               style = $listdivider.attr( "data-style" );
 
-                               $parent = $parent.parent();
+                       if ( $listdivider.data("line") === false ) {
+                               this.options.listDividerLine = false;
                        }
 
-                       if ( !heightSpecified ) {
-                               parentHeight = $(window).height();
+                       if ( $listdivider.data("folded") === true ) {
+                               this.options.folded = true;
                        }
 
-                       return parentHeight;
+                       if ( style == undefined || style === "normal" || style === "check" ) {
+                               if ( this.options.folded ) {
+                                       $listdivider.buttonMarkup();
+                               } else {
+                                       $listdivider.wrapInner("<span class='ui-btn-text'></span>");
+                               }
+
+                               if ( this.options.listDividerLine ) {
+                                       expandSrc = "<span class='ui-divider-normal-line'></span>";
+                                       if ( this.options.folded ) {
+                                               $( expandSrc ).appendTo( $listdivider.children( ".ui-btn-inner" ) );
+                                       } else {
+                                               $( expandSrc ).appendTo( $listdivider);
+                                       }
+                               }
+                       }
+
+                       $listdivider.bind( "vclick", function ( event, ui ) {
+                       /* need to implement expand/collapse divider */
+                       });
                },
+       });
 
-               _convertRatio : function ( ratioParam, panesLength ) {
-                       var self = this,
-                               ratio = [],
-                               loop = 0,
-                               type = typeof ratioParam,
-                               ratioArray = null,
-                               i;
+       //auto self-init widgets
+       $( document ).bind( "pagecreate create", function ( e ) {
+               $( $.tizen.listdivider.prototype.options.initSelector, e.target ).listdivider();
+       });
+}( jQuery ) );
 
-                       for ( i = 0; i < panesLength; ++i ) {
-                               ratio.push( 0 );
-                       }
 
-                       switch ( type ) {
-                       case "number":
-                               if ( panesLength ) {
-                                       ratio[ 0 ] = ratioParam;
-                               }
-                               break;
 
-                       case "string":
-                               ratioArray = ratioParam.split( "," );
-                               loop = Math.min( ratioArray.length, panesLength );
-                               for ( i = 0; i < loop; ++i ) {
-                                       ratio[ i ] = parseFloat( ratioArray[ i ] );
-                               }
-                               break;
+/* ***************************************************************************
+ * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ *
+ *     Author: Minkyu Kang <mk7.kang@samsung.com>
+ */
 
-                       case "object":
-                               if ( !$.isArray( ratioParam ) ) {
-                                       break;
-                               }
+/*
+ * Pinch Event
+ *
+ * Events
+ *     pinchstart: triggered when start the touched two points
+ *     pinch: triggered when move the touch point after pinchstart event occured
+ *     pinchend: triggered when touchend event after pinchstart event occured
+ *
+ * Parameters
+ *     point: touched points
+ *     ratio: origin point-to-current point ratio for moving distance
+ *
+ *     $("#pinch").bind("pinch", function (e, p) {
+ *             console.log("point[0].x: " + p.point[0].x);
+ *             console.log("point[0].y: " + p.point[0].y);
+ *             console.log("point[1].x: " + p.point[1].x);
+ *             console.log("point[1].y: " + p.point[1].y);
+ *             console.log("ratio: " + p.ratio);
+ *     });
+ *
+ * Options
+ *     $.mobile.pinch.enabled: true or false
+ *     $.mobile.pinch.min: minimum value of ratio
+ *     $.mobile.pinch.max: maximum value of ratio
+ *     $.mobile.pinch.factor: scale factor of ratio
+ *     $.mobile.pinch.threshold: move threshold of ratio
+ *     $.mobile.pinch.interval: interval for pinch event
+ */
 
-                               loop = Math.min( ratioParam.length, panesLength );
-                               for ( i = 0; i < loop; ++i ) {
-                                       type = typeof ratioParam[ i ];
-                                       ratio[ i ] = ( type === "string" ) ? parseFloat( ratioParam[ i ] ) :
-                                                               ( type === "number" ) ? ratioParam[ i ] : 0;
-                               }
-                               break;
-                       }
+( function( $, window, undefined ) {
 
-                       self.options.ratio = ratio;
-                       self._adjustRatio( panesLength );
-               },
+pinch_event = {
+       setup: function () {
+               var thisObject = this,
+                       $this = $( thisObject );
 
-               _adjustRatio : function ( panesLength ) {
-                       var self = this,
-                               ratio = self.options.ratio,
-                               sum = 0,
-                               remain = 0,
-                               value = 0,
-                               subValue = 0,
-                               subRemain = 0,
-                               i;
+               if ( !$.mobile.support.touch ) {
+                       return;
+               }
 
-                       if ( !panesLength ) {
-                               self.options.ratio = [];
+               function getDistance( point ) {
+                       var x = point[0].x - point[1].x,
+                               y = point[0].y - point[0].y;
+
+                       return Math.sqrt( ( x * x ) + ( y * y ) );
+               }
+
+               function getParameter( point, ratio ) {
+                       return { point: point, ratio: ratio };
+               }
+
+               $this.bind( "touchstart", function ( event ) {
+                       var data = event.originalEvent.touches,
+                               origin,
+                               last_ratio = 1,
+                               processing = false;
+
+                       if ( !$.mobile.pinch.enabled ) {
                                return;
                        }
 
-                       for ( i in ratio ) {
-                               sum += ratio[ i ];
+                       if ( data.length != 2 ) {
+                               return;
                        }
 
-                       if ( sum !== 1 ) {
-                               remain = 1 - sum;
-                               value = remain / panesLength;
+                       origin = [
+                                       { x: data[0].pageX, y: data[0].pageY },
+                                       { x: data[1].pageX, y: data[1].pageY }
+                       ];
 
-                               for ( i in ratio ) {
-                                       if ( value >= 0 ) {
-                                               ratio[ i ] += value;
-                                               remain = Math.max( 0, remain - value );
-                                       } else {
-                                               subRemain += value;
-                                               subValue = Math.max( subRemain, ratio[ i ] * -1 );
-                                               ratio[ i ] = Math.max( 0, ratio[ i ] + subValue );
-                                               remain = Math.min( 0, remain - subValue );
-                                               subRemain -= subValue;
-                                       }
+                       $( event.target ).trigger( "pinchstart", getParameter( origin, undefined ) );
+
+                       function pinchHandler( event ) {
+                               var data = event.originalEvent.touches,
+                                       current,
+                                       ratio,
+                                       delta,
+                                       factor = $( window ).width() / $.mobile.pinch.factor;
+
+                               if ( processing ) {
+                                       return;
                                }
 
-                               if ( remain ) {
-                                       if ( remain > 0 ) {
-                                               ratio[ ratio.length - 1 ] += remain;
-                                       } else {
-                                               for ( i = ratio.length - 1; i >= 0; --i ) {
-                                                       subValue = Math.max( remain, ratio[ i ] * -1 );
-                                                       ratio[ i ] = Math.max( 0, ratio[ i ] + subValue );
-                                                       remain = Math.min( 0, remain - subValue );
-                                                       if ( !remain ) {
-                                                               break;
-                                                       }
-                                               }
-                                       }
+                               if ( !origin ) {
+                                       return;
                                }
 
-                               self.options.ratio = ratio;
+                               current = [
+                                               { x: data[0].pageX, y: data[0].pageY },
+                                               { x: data[1].pageX, y: data[1].pageY }
+                               ];
+
+                               delta = getDistance( current ) - getDistance( origin );
+
+                               ratio = 1 + delta / factor;
+
+                               if ( ratio < $.mobile.pinch.min ) {
+                                       ratio = $.mobile.pinch.min;
+                               } else if ( ratio > $.mobile.pinch.max ) {
+                                       ratio = $.mobile.pinch.max;
+                               }
+
+                               if ( Math.abs( ratio - last_ratio ) < $.mobile.pinch.threshold ) {
+                                       return;
+                               }
+
+                               $( event.target ).trigger( "pinch", getParameter( current, ratio ) );
+
+                               last_ratio = ratio;
+
+                               if ( $.mobile.pinch.interval ) {
+                                       processing = true;
+
+                                       setTimeout( function () {
+                                               processing = false;
+                                       }, $.mobile.pinch.interval );
+                               }
                        }
+
+                       $this.bind( "touchmove", pinchHandler )
+                               .one( "touchend", function ( event ) {
+                                       $this.unbind( "touchmove", pinchHandler );
+                                       $( event.target ).trigger( "pinchend",
+                                                               getParameter( undefined, last_ratio ) );
+
+                                       origin = undefined;
+                                       current = undefined;
+                                       last_ratio = 1;
+                                       processing = false;
+                               });
+               });
+       }
+};
+
+$.event.special["pinch"] = pinch_event;
+
+$.mobile.pinch = {
+       enabled: true,
+       min: 0.1,
+       max: 3,
+       factor: 4,
+       threshold: 0.01,
+       interval: 50
+};
+
+})( jQuery, this );
+
+
+
+/*
+ * set TIZEN specific configures
+ */
+
+( function( $, window, undefined ) {
+
+       /* set default transition */
+       $.mobile.defaultPageTransition = "none";
+
+       /* depth transition */
+       $.mobile.transitionHandlers.depth = $.mobile.transitionHandlers.simultaneous;
+       $.mobile.transitionFallbacks.depth = "fade";
+
+       /* Button data-corners default value */
+       $.fn.buttonMarkup.defaults.corners = false;
+
+       /* button hover delay */
+       $.mobile.buttonMarkup.hoverDelay = 0;
+
+})( jQuery, this );
+
+
+
+
+/* ***************************************************************************
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ *
+ * Authors: Hyunsook Park <hyunsook.park@samsung.com>
+ *                     Wonseop Kim <wonseop.kim@samsung.com>
+*/
+
+( function ( $, window, undefined ) {
+       var HALF_PI = Math.PI / 2,
+               DEFAULT_STEP = 0.001,
+               MotionPath = {},
+               vec3 = window.vec3,
+               arcLength3d = function ( p0, p1 ) {
+                       var d = [ p1[0] - p0[0], p1[1] - p0[1], p1[2] - p0[2] ],
+                               value = Math.sqrt( d[0] * d[0] + d[1] * d[1] + d[2] * d[2] );
+                       return value;
+               };
+
+       MotionPath.base = function () {};
+       MotionPath.base.prototype = {
+               points: [],
+               step: DEFAULT_STEP,
+               length: 0,
+               levels: [],
+               init: function ( data ) {},
+               calculateLevel: function ( maxLevel ) {},
+               calculateTotalLength: function () {},
+               getPosition: function ( percent ) {},
+               getPercent: function ( start, interval ) {},
+               getAngle: function ( percent ) {}
+       };
+
+       MotionPath.bezier2d = function () {};
+       MotionPath.bezier2d.prototype = $.extend( true, {}, MotionPath.base.prototype, {
+               init: function ( data ) {
+                       this.points = data.points;
+                       this.step = data.step || DEFAULT_STEP;
+                       this.length = this.calculateTotalLength();
+                       this.levels = this.calculateLevel( data.maxLevel ) || [];
                },
 
-               _setOption : function ( key, value ) {
-                       var self = this,
-                               orgValue = self.options[ key ];
+               calculateLevel: function ( maxLevel ) {
+                       var totalLength = this.length,
+                               interval = totalLength / maxLevel,
+                               levels = [],
+                               i;
 
-                       if ( orgValue === value ) {
-                               return;
+                       if ( !maxLevel ) {
+                               return null;
                        }
 
-                       $.Widget.prototype._setOption.apply( this, arguments );
+                       for ( i = 0; i < maxLevel; i += 1 ) {
+                               levels[maxLevel - i] = this.getPercent( 0, interval * i );
+                       }
 
-                       switch ( key ) {
-                       case "fixed":
-                               self._fixed( value );
-                               break;
+                       return levels;
+               },
 
-                       case "dividerVertical":
-                               self._dividerVertical( value );
-                               break;
+               calculateTotalLength: function () {
+                       var step = this.step,
+                               current = this.getPosition( 0 ),
+                               last = current,
+                               length = 0,
+                               percent;
+                       for ( percent = step; percent <= 1; percent += step ) {
+                               current = this.getPosition( percent );
+                               length += arcLength3d( last, current );
+                               last = current;
+                       }
+                       return length;
+               },
 
-                       case "ratio":
-                               self._ratio( value );
-                               break;
+               getPosition: function ( percent ) {
+                       var points = this.points,
+                               getValue = function ( p1, c1, c2, p2, t ) {
+                                       return Math.pow(1 - t, 3) * p1 +
+                                               3 * t * Math.pow( 1 - t, 2 ) * c1 +
+                                               3 * Math.pow( t, 2 ) * ( 1 - t ) * c2 +
+                                               Math.pow( t, 3 ) * p2;
+                               },
+                               result = [
+                                       getValue( points[0][0], points[1][0], points[2][0], points[3][0], percent ),
+                                       getValue( points[0][2], points[1][2], points[2][2], points[3][2], percent )
+                               ];
+                       return [ result[0], 0, result[1] ];
+               },
+
+               getPercent: function ( start, interval ) {
+                       var step = this.step,
+                               current = this.getPosition( start = start || 0 ),
+                               last = current,
+                               targetLength = start + interval,
+                               length = 0,
+                               percent;
+
+                       for ( percent = start + step; percent <= 1; percent += step ) {
+                               current = this.getPosition( percent );
+                               length += arcLength3d( last, current );
+                               if ( length >= targetLength ) {
+                                       return percent;
+                               }
+                               last = current;
                        }
+                       return 1;
                },
 
-               _subtractDiffWidth : function ( width, diff ) {
-                       var self = this;
+               getAngle: function ( percent ) {
+                       var points = this.points,
+                               getTangent = function ( p1, c1, c2, p2, t ) {
+                                       return 3 * t * t * ( -p1 + 3 * c1 - 3 * c2 + p2 ) + 6 * t * ( p1 - 2 * c1 + c2 ) + 3 * ( -p1 + c1 );
+                               },
+                               tx = getTangent( points[0][0], points[1][0], points[2][0], points[3][0], percent ),
+                               ty = getTangent( points[0][2], points[1][2], points[2][2], points[3][2], percent );
+                       return Math.atan2( tx, ty ) - HALF_PI;
+               }
 
-                       if ( width <= self.minPaneWidth ) {
-                               return {
-                                       width: width,
-                                       diff: diff
-                               };
+       } );
+
+       // clamped cubic B-spline curve
+       // http://web.mit.edu/hyperbook/Patrikalakis-Maekawa-Cho/node17.html
+       // http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/bspline-curve-coef.html
+       MotionPath.bspline = function () {};
+       MotionPath.bspline.prototype = $.extend( true, {}, MotionPath.base.prototype, {
+               _degree: 3,
+               _numberOfControls : 0,
+               _knotVectors: [],
+               _numberOfKnots: 0,
+
+               init: function ( data ) {
+                       this.points = data.points;
+                       this.step = data.step || DEFAULT_STEP;
+                       this._numberOfPoints = this.points.length - 1;
+                       this._numberOfKnots = this._numberOfPoints + this._degree + 1;
+
+                       var deltaKnot = 1 / ( this._numberOfKnots - ( 2 * this._degree ) ),
+                               v = deltaKnot,
+                               i = 0;
+
+                       while ( i <= this._numberOfKnots ) {
+                               if ( i <= this._degree ) {
+                                       this._knotVectors.push( 0 );
+                               } else if ( i < this._numberOfKnots - this._degree + 1 ) {
+                                       this._knotVectors.push( v );
+                                       v += deltaKnot;
+                               } else {
+                                       this._knotVectors.push( 1 );
+                               }
+                               i += 1;
                        }
 
-                       width += diff;
-                       if ( width >= self.minPaneWidth ) {
-                               return {
-                                       width: width,
-                                       diff: 0
+                       this.length = this.calculateTotalLength();
+                       this.levels = this.calculateLevel( data.maxLevel ) || [];
+               },
+
+               _Np: function ( percent, i, degree ) {
+                       var knots = this._knotVectors,
+                               A = 0,
+                               B = 0,
+                               denominator = 0,
+                               N0 = function ( percent, i ) {
+                                       return ( ( knots[i] <= percent && percent < knots[i + 1] ) ? 1 : 0 );
                                };
+
+                       if ( degree === 1 ) {
+                               A = N0( percent, i );
+                               B = N0( percent, i + 1 );
+                       } else {
+                               A = this._Np( percent, i, degree - 1 );
+                               B = this._Np( percent, i + 1, degree - 1 );
                        }
 
-                       return {
-                               width: self.minPaneWidth,
-                               diff: width - self.minPaneWidth
-                       };
+                       denominator = knots[i + degree] - knots[i];
+                       A *= ( denominator !== 0 ) ? ( ( percent - knots[i] ) / denominator ) : 0;
+                       denominator = knots[i + degree + 1] - knots[i + 1];
+                       B *= ( denominator !== 0 ) ? ( ( knots[i + degree + 1] - percent ) / denominator ) : 0;
+
+                       return A + B;
                },
 
-               _initRatio : function ( fromFirstPane, panes, isHorizontal, availableWidth ) {
-                       var self = this,
-                               sum = 0,
-                               widths = [],
-                               diff = 0,
-                               panesLength = panes.length,
-                               ret,
+               calculateLevel: function ( maxLevel ) {
+                       var totalLength = this.length,
+                               interval = totalLength / maxLevel,
+                               levels = [],
                                i;
 
-                       panes.each( function ( i ) {
-                               var pane = $( this );
-                               widths.push( isHorizontal ? pane.width() : pane.height() );
-                               sum += widths[ i ];
-                       });
-
-                       diff = availableWidth - sum;
-                       if ( !diff ) {
-                               return widths;
+                       if ( !maxLevel ) {
+                               return null;
                        }
 
-                       if ( diff > 0 ) {
-                               widths[ fromFirstPane ? 0 : panesLength - 1 ] += diff;
-                       } else {
-                               if ( fromFirstPane ) {
-                                       for ( i = 0; i < panesLength; ++i ) {
-                                               ret = self._subtractDiffWidth( widths[ i ], diff );
-                                               widths[ i ] = ret.width;
-                                               diff = ret.diff;
-                                               if ( !diff ) {
-                                                       break;
-                                               }
-                                       }
-                               } else {
-                                       for ( i = panesLength - 1; i >= 0; --i ) {
-                                               diff = self._subtractDiffWidth( widths[ i ], diff );
-                                               widths[ i ] = ret.width;
-                                               diff = ret.diff;
-                                               if ( !diff ) {
-                                                       break;
-                                               }
-                                       }
-                               }
+                       for ( i = 0; i < maxLevel; i += 1 ) {
+                               levels[maxLevel - i] = this.getPercent( 0, interval * i );
                        }
+                       return levels;
+               },
 
-                       sum = 0;
-                       for ( i in widths ) {
-                               sum += widths[ i ];
+               calculateTotalLength: function () {
+                       var step = this.step,
+                               current = this.getPosition( 0 ),
+                               last = current,
+                               length = 0,
+                               percent;
+                       for ( percent = step; percent <= 1; percent += step ) {
+                               current = this.getPosition( percent );
+                               length += arcLength3d( last, current );
+                               last = current;
                        }
+                       return length;
+               },
 
-                       for ( i in self.options.ratio ) {
-                               self.options.ratio[ i ] = widths[ i ] / sum;
+               getPosition: function ( percent ) {
+                       var result = [], i, j, sum;
+                       percent = percent.toFixed( 4 );
+                       for ( j = 0; j < 3; j += 1 ) {
+                               sum = 0;
+                               for ( i = 0; i <= this._numberOfPoints; i += 1 ) {
+                                       sum += this.points[i][j] * this._Np( percent, i, this._degree );
+                               }
+                               result[j] = sum;
                        }
 
-                       return widths;
+                       return result;
                },
 
-               _horizontalBoundary : function () {
-                       var self = this,
-                               $el = self.element;
+               getPercent: function ( start, interval ) {
+                       var step = this.step,
+                               current = this.getPosition( start = start || 0 ),
+                               last = current,
+                               targetLength = start + interval,
+                               length = 0,
+                               percent;
 
-                       return $el.outerWidth( true ) - $el.width();
+                       for ( percent = start + step; percent <= 1; percent += step ) {
+                               current = this.getPosition( percent );
+                               length += arcLength3d( last, current );
+                               if ( length >= targetLength ) {
+                                       return percent;
+                               }
+                               last = current;
+                       }
+                       return 1;
                },
 
-               _verticalBoundary : function () {
-                       var self = this,
-                               $el = self.element;
+               getAngle: function ( percent ) {
+                       var prev = this.getPosition( percent ),
+                               next = this.getPosition( percent + 0.001 ),
+                               dir = vec3.normalize( vec3.direction( prev, next ) ),
+                               cosValue = vec3.dot( dir, [1, 0, 0] );
 
-                       return $el.outerHeight( true ) - $el.height();
-               },
+                       return Math.acos( cosValue ) + Math.PI;
+               }
+       } );
 
-               _boundary : function ( type ) {
-                       var self = this,
-                               $el = self.element,
-                               computedStyle = window.getComputedStyle( $el[ 0 ], null ),
-                               margin = parseFloat( computedStyle[ "margin" + type ] ),
-                               border = parseFloat( computedStyle[ "border" + type + "Width" ] ),
-                               padding = parseFloat( computedStyle[ "padding" + type ] );
+       $.motionpath = function ( type, data ) {
+               var object = new MotionPath[type]();
+               object.init( data );
+               return object;
+       };
+} ( jQuery, window ) );
 
-                       return {
-                               margin: margin,
-                               border: border,
-                               padding: padding
-                       };
-               },
 
-               _layout : function ( initRatio, fromFirstPane ) {
-                       var self = this,
-                               $el = self.element,
-                               opt = self.options,
-                               isHorizontal = opt.dividerVertical,
-                               $panes = self.panes,
-                               spliters = self.spliters,
-                               spliterBars = self.spliterBars,
-                               spliterBar = self.spliterBars.length ? $( spliterBars[ 0 ] ) : null,
-                               spliterWidth = !spliterBar ? 0 :
-                                                               isHorizontal ? spliterBar.outerWidth() :
-                                                                                               spliterBar.outerHeight(),
-                               spliterBarMargin = !spliterBar ? 0 :
-                                                                       isHorizontal ?
-                                                                               spliterBar.outerWidth( true ) - spliterBar.outerWidth() :
-                                                                               spliterBar.outerHeight( true ) - spliterBar.outerHeight(),
-                               panesLength = $panes.length,
-                               currentAvailable = 0,
-                               spliterSize = spliterWidth * ( panesLength - 1 ),
-                               parentWidth = self.containerSize[ 0 ],
-                               parentHeight = self.containerSize[ 1 ],
-                               width = parentWidth - self._horizontalBoundary(),
-                               height = parentHeight - self._verticalBoundary(),
-                               innerSize = isHorizontal ? height : width,
-                               availableWidth = isHorizontal ? width - spliterSize :
-                                                                                               height - spliterSize,
-                               initializedWidth = [],
-                               widthSum = 0,
-                               childSplitview = null;
-
-                       if ( typeof initRatio === "undefined" ) {
-                               initRatio = false;
-                       }
-
-                       if ( initRatio && typeof fromFirstPane === "undefined" ) {
-                               fromFirstPane = false;
-                       }
-
-                       $el.css( {
-                               "min-width" : width,
-                               "min-height" : height
-                       });
-
-                       if ( initRatio ) {
-                               initializedWidth = self._initRatio( fromFirstPane, $panes, isHorizontal, availableWidth );
-                       }
-
-                       currentAvailable = availableWidth;
-                       $panes.each( function ( i ) {
-                               var $pane = $( this ),
-                                       paneWidth = initRatio ? initializedWidth[ i ] :
-                                                                               Math.floor( availableWidth * self.options.ratio[i] ),
-                                       prevPane = ( ( i ) ? $panes.eq( i - 1 ) : null ),
-                                       posValue = 0,
-                                       widthValue = 0,
-                                       heightValue = 0,
-                                       boundary = 0;
 
-                               currentAvailable -= paneWidth;
-                               if ( i === ( panesLength - 1 ) ) {
-                                       paneWidth = Math.max( Math.min( paneWidth, self.minPaneWidth ), paneWidth + currentAvailable );
-                               }
+/* ***************************************************************************
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ *
+ * Authors: Yonghwi Park <yonghwi0324.park@samsung.com>
+ *              Wonseop Kim <wonseop.kim@samsung.com>
+*/
 
-                               widthSum += paneWidth;
+/**
+ *
+ * MultiMediaView is a widget that lets the user view and handle multimedia contents.
+ * Video and audio elements are coded as standard HTML elements and enhanced by the 
+ * MultiMediaview to make them attractive and usable on a mobile device.
+ *
+ * HTML Attributes:
+ *                     data-theme : Set a theme of widget.
+ *                             If this value is not defined, widget will use parent`s theme. (optional)
+ *                     data-controls : If this value is 'true', widget will use belonging controller.
+ *                             If this value is 'false', widget will use browser`s controller.
+ *                             Default value is 'true'.
+ *                     data-full-screen : Set a status that full-screen when inital start.
+ *                             Default value is 'false'.
+ *
+ * APIs:
+ *                     width( [number] )
+ *                                     : Get or set the width of widget.
+ *                                     The first argument is the width of widget.
+ *                                     If no first argument is specified, will act as a getter.
+ *                     height( [number] )
+ *                                     : Get or set the height of widget.
+ *                                     The first argument is the height of widget.
+ *                                     If no first argument is specified, will act as a getter.
+ *                     fullScreen( [boolean] )
+ *                                     : Get or Set the status of full-screen.
+ *                                     If no first argument is specified, will act as a getter.
+ *
+ * Events:
+ *
+ *                     N/A
+ *
+ * Examples:
+ *
+ *                     VIDEO :
+ *                             <video data-controls="true" style="width:100%;">
+ *                                     <source src="media/oceans-clip.mp4" type="video/mp4" />
+ *                                     Your browser does not support the video tag.
+ *                             </video>
+ *
+ *                     AUDIO :
+ *                             <audio data-controls="true" style="width:100%;">
+ *                                     <source src="media/Over the horizon.mp3" type="audio/mp3" />
+ *                                     Your browser does not support the audio tag.
+ *                             </audio>
+ *
+ */
+/**
+       @class MutimediaView
+       The multimedia view widget shows a player control that you can use to view and handle multimedia content. This widget uses the standard HTML video and audio elements, which have been enhanced for use on a mobile device.
 
-                               if ( !prevPane ) {
-                                       boundary = self._boundary( isHorizontal ? "Left" : "Top" );
-                                       posValue = boundary.padding;
-                               } else {
-                                       posValue = parseInt( prevPane.css( isHorizontal ? "left" : "top" ), 10 );
-                                       posValue += isHorizontal ? prevPane.width() : prevPane.height();
-                                       posValue += spliterWidth;
-                               }
+       To add a multimedia view widget to the application, use the following code:
+       
+               // Video player control
+               <video data-controls="true" style="width:100%;">
+               <source src="<VIDEO_FILE_URL>" type="video/mp4" /> Your browser does not support the video tag. </video>
+               // Audio player control
+               <audio data-controls="true" style="width:100%;"> <source src="<AUDIO_FILE_URL>" type="audio/mp3" /> Your browser does not support the audio tag.
+               </audio>
+*/
+/**
+       @property {Boolean} data-control
+       Sets the controls for the widget.
+       The default value is true. If the value is set to true, the widget uses its own player controls. If the value is set to false, the widget uses the browser's player controls.
+*/
+/**
+       @property {Boolean} data-full-screen
+       Defines whether the widget opens in the fullscreen view mode.
+       The default value is false.
+*/
+/**
+       @property {String} data-theme
+       Sets the widget theme.
+       If the value is not set, the parent control's theme is used
+*/
+/**
+       @method width
+       The width method is used to get (if no value is defined) or set the multimedia view widget width:
+               <video>
+                        <source src="test.mp4" type="video/mp4" />
+               </video>
+               $(".selector").multimediaview("width", [value]);
+*/
+/**
+       @method height
+       The height method is used to get (if no value is defined) or set the multimedia view widget height:
+               <video>
+                       <source src="test.mp4" type="video/mp4" />
+               </video>
+               $(".selector").multimediaview("height", [value]);
+*/
+/**
+       @method fullScreen
+       The fullScreen method is used to get (if no value is defined) or set the full-screen mode of the multimedia view widget. If the value is true, the full-screen mode is used; otherwise the multimedia view widget runs in the normal mode.
 
-                               widthValue = isHorizontal ? paneWidth : innerSize;
-                               heightValue = isHorizontal ? innerSize : paneWidth;
+               <video>
+                       <source src="test.mp4" type="video/mp4" />
+               </video>
+               $(".selector").multimediaview("fullScreen", [value]);
+*/
+( function ( $, document, window, undefined ) {
+       $.widget( "tizen.multimediaview", $.mobile.widget, {
+               options: {
+                       theme: null,
+                       controls: true,
+                       fullScreen: false,
+                       initSelector: "video, audio"
+               },
 
-                               $pane.css( {
-                                       "width" : widthValue ,
-                                       "height" : heightValue
-                               } );
+               _create: function () {
+                       var self = this,
+                               view = self.element,
+                               viewElement = view[0],
+                               isVideo = ( viewElement.nodeName === "VIDEO" ),
+                               option = self.options,
+                               parentTheme = $.mobile.getInheritedTheme( view, "s" ),
+                               theme = option.theme || parentTheme,
+                               width = viewElement.style.getPropertyValue( "width" ) || "",
+                               wrap = $( "<div class='ui-multimediaview-wrap ui-multimediaview-" + theme + "'>" ),
+                               control = null;
 
-                               $pane.css( ( isHorizontal ? "left" : "top" ), posValue );
+                       $.extend( this, {
+                               role: null,
+                               controlTimer: null,
+                               isVolumeHide: true,
+                               backupView: null,
+                               _reserveVolume: -1,
+                               _isVideo: isVideo
                        });
 
-                       $panes.each( function ( i ) {
-                               var $pane = $( this ),
-                                       paneWidth = isHorizontal ? $pane.width() : $pane.height();
+                       view.addClass( "ui-multimediaview" );
+                       control = self._createControl();
+                       control.hide();
 
-                               self.options.ratio[ i ] = paneWidth / widthSum;
+                       control.find( ".ui-button" ).each( function ( index ) {
+                               $( this ).buttonMarkup( { corners: true, theme: theme, shadow: true } );
                        });
 
-                       $.each( spliters, function ( i ) {
-                               var spliter = $( this ),
-                                       prevPane = $panes.eq( i ),
-                                       bar = spliter.children( ".ui-spliter-bar" ),
-                                       handle = bar.children( ".ui-spliter-handle" ),
-                                       posValue = 0;
-
-                               if ( isHorizontal ) {
-                                       posValue = parseInt( prevPane.css( "left" ), 10 ) + prevPane.width() - spliterBarMargin;
-                                       spliter.outerHeight( innerSize ).css( "left", posValue );
-                               } else {
-                                       posValue = parseInt( prevPane.css( "top" ), 10 ) + prevPane.height() - spliterBarMargin;
-                                       spliter.outerWidth( innerSize ).css( "top", posValue );
-                               }
-
-                               if ( typeof bar !== "undefined" && bar ) {
-                                       if ( isHorizontal ) {
-                                               bar.outerHeight( innerSize );
-                                       } else {
-                                               bar.outerWidth( innerSize );
-                                       }
-                               }
-                               if ( typeof handle !== "undefined" && handle ) {
-                                       if ( isHorizontal ) {
-                                               handle.css( "top", ( innerSize - spliterWidth ) / 2 );
-                                       } else {
-                                               handle.css( "left", ( innerSize - spliterWidth ) / 2 );
-                                       }
-                               }
-                       });
+                       view.wrap( wrap ).after( control );
 
-                       childSplitview = $el.find( ":jqmData(role='splitview'):first" );
-                       if ( !childSplitview.length ) {
-                               return;
+                       if ( isVideo ) {
+                               control.addClass( "ui-multimediaview-video" );
+                       } else {
+                               self.width( width );
+                               self.options.fullScreen = false;
                        }
 
-                       childSplitview = childSplitview.data( "splitview" );
-                       if ( childSplitview ) {
-                               childSplitview._refresh();
+                       if ( option.controls && view.attr( "controls" ) ) {
+                               view.removeAttr( "controls" );
                        }
-               },
-
-               _bindTouchEvents : function () {
-                       var self = this,
-                               $el = self.element,
-                               $panes = self.panes,
-                               spliters = self.spliters;
-
-                       $.each( spliters, function ( i ) {
-                               var spliter = $( this );
-                               self._bindSpliterTouchEvents( spliter );
-                       });
 
-                       $el.mouseleave( function () {
-                               if ( self.touchStatus ) {
-                                       $el.children( ".ui-spliter" ).trigger( "vmouseup" );
-                               }
-                       });
+                       self._addEvent();
+               },
 
-                       $panes.bind( "vmousedown", function () {
-                               $el.find( ".ui-spliter" ).trigger( "vmouseup" );
-                       });
+               _resize: function () {
+                       this._resizeFullscreen( this.options.fullScreen );
+                       this._resizeControl();
+                       this._updateSeekBar();
+                       this._updateVolumeState();
                },
 
-               _bindSpliterTouchEvents : function ( spliter ) {
+               _resizeControl: function () {
                        var self = this,
-                               $el = self.element,
-                               opt = self.options;
+                               view = self.element,
+                               viewElement = view[0],
+                               isVideo = self._isVideo,
+                               wrap = view.parent( ".ui-multimediaview-wrap" ),
+                               control = wrap.find( ".ui-multimediaview-control" ),
+                               buttons = control.find( ".ui-button" ),
+                               playpauseButton = control.find( ".ui-playpausebutton" ),
+                               seekBar = control.find( ".ui-seekbar" ),
+                               durationLabel = control.find( ".ui-durationlabel" ),
+                               timestampLabel = control.find( ".ui-timestamplabel" ),
+                               volumeControl = control.find( ".ui-volumecontrol" ),
+                               volumeBar = volumeControl.find( ".ui-volumebar" ),
+                               width = ( isVideo ? view.width() : wrap.width() ),
+                               height = ( isVideo ? view.height() : control.height() ),
+                               offset = view.offset(),
+                               controlHeight = control.height(),
+                               availableWidth = 0,
+                               controlOffset = null;
 
-                       spliter.bind( "vmousedown", { e : spliter }, function ( event ) {
-                               if ( self.options.fixed ) {
-                                       return;
+                       if ( control ) {
+                               if ( isVideo ) {
+                                       controlOffset = control.offset();
+                                       controlOffset.left = offset.left;
+                                       controlOffset.top = offset.top + height - controlHeight;
+                                       control.offset( controlOffset );
                                }
+                               control.width( width );
+                       }
 
-                               var targetSpliter = event.data.e,
-                                       prevPane = targetSpliter.prev(),
-                                       nextPane = targetSpliter.next(),
-                                       splitviewInPrev = prevPane.find( ":jqmData(role='splitview'):first" ),
-                                       splitviewInNext = nextPane.find( ":jqmData(role='splitview'):first" ),
-                                       isHorizontal = opt.dividerVertical,
-                                       spliterWidth = isHorizontal ?
-                                                                       $( self.spliterBars[0] ).outerWidth() :
-                                                                       $( self.spliterBars[0] ).outerHeight();
-
-                               $el.closest( ".ui-page" ).find( ".ui-spliter" ).trigger( "vmouseup" );
-
-                               self.moveTarget = targetSpliter;
-                               self.moveData = {
-                                       spliterWidth : spliterWidth || 0,
-                                       prevPane : prevPane,
-                                       nextPane : nextPane,
-                                       splitviewInPrev : splitviewInPrev,
-                                       splitviewInNext : splitviewInNext,
-                                       prevPanePos : parseInt( prevPane.css( isHorizontal ? "left" : "top" ), 10 ) || 0,
-                                       prevPaneWidth : parseInt( prevPane.css( isHorizontal ? "width" : "height" ), 10 ) || 0,
-                                       nextPanePos : parseInt( nextPane.css( isHorizontal ? "left" : "top" ), 10 ) || 0,
-                                       nextPaneWidth : parseInt( nextPane.css( isHorizontal ? "width" : "height" ), 10 ) || 0,
-                                       targetPos : parseInt( targetSpliter.css( isHorizontal ? "left" : "top" ), 10 ) || 0,
-                                       pagePos : isHorizontal ? event.pageX : event.pageY
-                               };
-
-                               targetSpliter.addClass( "ui-spliter-active" );
-
-                               $( document ).bind( "vmousemove.splitview", function ( event ) {
-                                       if ( !self.touchStatus ) {
-                                               return;
-                                       }
-
-                                       self._drag( event );
-
-                                       event.preventDefault();
-                                       event.stopPropagation();
-                               }).bind( "vmouseup.splitview", function ( event ) {
-                                       if ( !self.touchStatus ) {
-                                               return;
-                                       }
-
-                                       self._stop( event );
-
-                                       event.preventDefault();
-                                       event.stopPropagation();
+                       if ( seekBar ) {
+                               availableWidth = control.width() - ( buttons.outerWidth( true ) * buttons.length );
+                               availableWidth -= ( parseInt( buttons.eq( 0 ).css( "margin-left" ), 10 ) + parseInt( buttons.eq( 0 ).css( "margin-right" ), 10 ) ) * buttons.length;
+                               if ( !self.isVolumeHide ) {
+                                       availableWidth -= volumeControl.outerWidth( true );
+                               }
+                               seekBar.width( availableWidth );
+                       }
 
-                                       self.touchStatus = false;
-                               });
+                       if ( durationLabel && !isNaN( viewElement.duration ) ) {
+                               durationLabel.find( "p" ).text( self._convertTimeFormat( viewElement.duration ) );
+                       }
 
-                               event.preventDefault();
-                               event.stopPropagation();
+                       if ( viewElement.autoplay && viewElement.paused === false ) {
+                               playpauseButton.removeClass( "ui-play-icon" ).addClass( "ui-pause-icon" );
+                       }
 
-                               self.touchStatus = true;
-                       });
+                       if ( seekBar.width() < ( volumeBar.width() + timestampLabel.width() + durationLabel.width() ) ) {
+                               durationLabel.hide();
+                       } else {
+                               durationLabel.show();
+                       }
                },
 
-               _drag : function ( e ) {
-                       if ( !this.moveData || typeof this.moveData === "undefined" ) {
+               _resizeFullscreen: function ( isFullscreen ) {
+                       if ( !this._isVideo ) {
                                return;
                        }
 
                        var self = this,
-                               $el = self.element,
-                               opt = self.options,
-                               isHorizontal = opt.dividerVertical,
-                               moveData = self.moveData,
-                               moveTarget = self.moveTarget,
-                               prevPane = moveData.prevPane,
-                               nextPane = moveData.nextPane,
-                               splitviewInPrev = moveData.splitviewInPrev,
-                               splitviewInNext = moveData.splitviewInNext,
-                               spliterWidth = moveData.spliterWidth,
-                               movement = null,
-                               targetPos = null,
-                               nextPanePos = null,
-                               prevPaneWidth = null,
-                               nextPaneWidth = null,
-                               pagePos = isHorizontal ? e.pageX : e.pageY,
-                               splitview = null;
+                               view = self.element,
+                               viewElement = view[0],
+                               wrap = view.parent( ".ui-multimediaview-wrap" ),
+                               control = wrap.find( ".ui-multimediaview-control" ),
+                               fullscreenButton = control.find( ".ui-fullscreenbutton" ),
+                               currentPage = $( ".ui-page-active" ),
+                               playpauseButton = control.find( ".ui-playpausebutton" ),
+                               timestampLabel = control.find( ".ui-timestamplabel" ),
+                               seekBar = control.find( ".ui-seekbar" ),
+                               durationBar = seekBar.find( ".ui-duration" ),
+                               currenttimeBar = seekBar.find( ".ui-currenttime" ),
+                               body = $( "body" )[0],
+                               header = currentPage.children( ".ui-header" ),
+                               footer = currentPage.children( ".ui-footer" ),
+                               docWidth = 0,
+                               docHeight = 0;
 
-                       movement = pagePos - moveData.pagePos;
-                       if ( movement > 0 ) {
-                               movement = Math.min( Math.max( moveData.nextPaneWidth - self.minPaneWidth, 0 ), movement );
+                       if ( isFullscreen ) {
+                               if ( !self.backupView ) {
+                                       self.backupView = {
+                                               width: viewElement.style.getPropertyValue( "width" ) || "",
+                                               height: viewElement.style.getPropertyValue( "height" ) || "",
+                                               position: view.css( "position" ),
+                                               zindex: view.css( "z-index" ),
+                                               wrapHeight: wrap[0].style.getPropertyValue( "height" ) || ""
+                                       };
+                               }
+                               docWidth = body.clientWidth;
+                               docHeight = body.clientHeight - 1;
+
+                               header.hide();
+                               footer.hide();
+                               view.parents().each( function ( e ) {
+                                       var element = $( this );
+                                       element.addClass( "ui-fullscreen-parents" )
+                                               .siblings()
+                                               .addClass( "ui-multimediaview-siblings-off" );
+                               });
+                               fullscreenButton.removeClass( "ui-fullscreen-on" ).addClass( "ui-fullscreen-off" );
+
+                               wrap.height( docHeight );
+                               view.width( docWidth ).height( docHeight );
                        } else {
-                               movement = Math.max( Math.max( moveData.prevPaneWidth - self.minPaneWidth, 0 ) * -1, movement );
-                       }
+                               if ( !self.backupView ) {
+                                       return;
+                               }
 
-                       nextPanePos = moveData.nextPanePos + movement;
-                       prevPaneWidth = Math.max( moveData.prevPaneWidth + movement, 0 );
-                       nextPaneWidth = Math.max( moveData.nextPaneWidth - movement, 0 );
-                       targetPos = moveData.targetPos + movement;
+                               header.show();
+                               footer.show();
+                               view.parents().each( function ( e ) {
+                                       var element = $( this );
+                                       element.removeClass( "ui-fullscreen-parents" )
+                                               .siblings()
+                                               .removeClass( "ui-multimediaview-siblings-off" );
+                               });
 
-                       moveTarget.css( isHorizontal ? { left : targetPos } : { top : targetPos } );
-                       prevPane.css( isHorizontal ? { width : prevPaneWidth } : { height : prevPaneWidth } );
-                       nextPane.css( isHorizontal ? { width : nextPaneWidth, left : nextPanePos } :
-                                                                                       { height : nextPaneWidth, top : nextPanePos } );
+                               fullscreenButton.removeClass( "ui-fullscreen-off" ).addClass( "ui-fullscreen-on" );
 
-                       if ( splitviewInPrev.length ) {
-                               splitview = splitviewInPrev.data( "splitview" );
-                               splitview._refresh( true, false );
-                       }
+                               wrap.css( "height", self.backupView.wrapHeight );
+                               view.css( {
+                                       "width": self.backupView.width,
+                                       "height": self.backupView.height,
+                                       "position": self.backupView.position,
+                                       "z-index": self.backupView.zindex
+                               });
+                               self.backupView = null;
 
-                       if ( splitviewInNext.length ) {
-                               splitview = splitviewInNext.data( "splitview" );
-                               splitview._refresh( true, true );
+                               $( window ).trigger( "throttledresize" );
                        }
                },
 
-               _stop : function ( e ) {
-                       if ( !this.moveData || typeof this.moveData === "undefined" ) {
-                               return;
-                       }
-
+               _addEvent: function () {
                        var self = this,
-                               $el = self.element,
-                               opt = self.options,
-                               $panes = self.panes,
-                               panesLength = $panes.length,
-                               isHorizontal = opt.dividerVertical,
-                               moveData = self.moveData,
-                               moveTarget = self.moveTarget,
-                               prevPane = moveData.prevPane,
-                               nextPane = moveData.nextPane,
-                               splitviewInPrev = moveData.splitviewInPrev,
-                               splitviewInNext = moveData.splitviewInNext,
-                               spliterWidth = moveData.spliterWidth,
-                               spliterSize = spliterWidth * ( panesLength - 1 ),
-                               movement = null,
-                               targetPos = null,
-                               nextPanePos = null,
-                               prevPaneWidth = null,
-                               nextPaneWidth = null,
-                               displayStyle = $el.css( "display" ),
-                               parentWidth = self.containerSize[ 0 ],
-                               parentHeight = self.containerSize[ 1 ],
-                               width = parentWidth - self._horizontalBoundary(),
-                               height = parentHeight - self._verticalBoundary(),
-                               availableWidth = isHorizontal ?
-                                                                       ( width - spliterSize ) :
-                                                                       ( height - spliterSize ),
-                               sum = 0;
+                               view = self.element,
+                               option = self.options,
+                               viewElement = view[0],
+                               isVideo = self._isVideo,
+                               control = view.parent( ".ui-multimediaview-wrap" ).find( ".ui-multimediaview-control" ),
+                               playpauseButton = control.find( ".ui-playpausebutton" ),
+                               timestampLabel = control.find( ".ui-timestamplabel" ),
+                               durationLabel = control.find( ".ui-durationlabel" ),
+                               volumeButton = control.find( ".ui-volumebutton" ),
+                               volumeControl = control.find( ".ui-volumecontrol" ),
+                               volumeBar = volumeControl.find( ".ui-volumebar" ),
+                               volumeGuide = volumeControl.find( ".ui-guide" ),
+                               volumeHandle = volumeControl.find( ".ui-handle" ),
+                               fullscreenButton = control.find( ".ui-fullscreenbutton" ),
+                               seekBar = control.find( ".ui-seekbar" ),
+                               durationBar = seekBar.find( ".ui-duration" ),
+                               currenttimeBar = seekBar.find( ".ui-currenttime" ),
+                               $document = $( document );
 
-                       $( document ).unbind( "vmousemove.splitview vmouseup.splitview" );
-                       moveTarget.removeClass( "ui-spliter-active" );
+                       view.bind( "loadedmetadata.multimediaview", function ( e ) {
+                               if ( !isNaN( viewElement.duration ) ) {
+                                       durationLabel.find( "p" ).text( self._convertTimeFormat( viewElement.duration ) );
+                               }
+                               self._resize();
+                       }).bind( "timeupdate.multimediaview", function ( e ) {
+                               self._updateSeekBar();
+                       }).bind( "play.multimediaview", function ( e ) {
+                               playpauseButton.removeClass( "ui-play-icon" ).addClass( "ui-pause-icon" );
+                       }).bind( "pause.multimediaview", function ( e ) {
+                               playpauseButton.removeClass( "ui-pause-icon" ).addClass( "ui-play-icon" );
+                       }).bind( "ended.multimediaview", function ( e ) {
+                               if ( typeof viewElement.loop == "undefined" || viewElement.loop === "" ) {
+                                       self.stop();
+                               }
+                       }).bind( "volumechange.multimediaview", function ( e ) {
+                               if ( viewElement.muted && viewElement.volume > 0.1 ) {
+                                       volumeButton.removeClass( "ui-volume-icon" ).addClass( "ui-mute-icon" );
+                                       self._reserveVolume = viewElement.volume;
+                                       viewElement.volume = 0;
+                               } else if ( self._reserveVolume !== -1 && !viewElement.muted ) {
+                                       volumeButton.removeClass( "ui-mute-icon" ).addClass( "ui-volume-icon" );
+                                       viewElement.volume = self._reserveVolume;
+                                       self._reserveVolume = -1;
+                               } else if ( viewElement.volume < 0.1 ) {
+                                       volumeButton.removeClass( "ui-volume-icon" ).addClass( "ui-mute-icon" );
+                               } else {
+                                       volumeButton.removeClass( "ui-mute-icon" ).addClass( "ui-volume-icon" );
+                               }
 
-                       // ratio calculation
-                       $panes.each( function ( i ) {
-                               var $pane = $( this ),
-                                       paneWidth = isHorizontal ? $pane.width() : $pane.height();
+                               if ( !self.isVolumeHide ) {
+                                       self._updateVolumeState();
+                               }
+                       }).bind( "durationchange.multimediaview", function ( e ) {
+                               if ( !isNaN( viewElement.duration ) ) {
+                                       durationLabel.find( "p" ).text( self._convertTimeFormat( viewElement.duration ) );
+                               }
+                               self._resize();
+                       }).bind( "click.multimediaview", function ( e ) {
+                               if ( !self.options.controls ) {
+                                       return;
+                               }
 
-                               sum += paneWidth;
+                               control.fadeToggle( "fast" );
+                               self._resize();
+                       }).bind( "multimediaviewinit", function ( e ) {
+                               if ( option.controls ) {
+                                       control.show();
+                               }
+                               self._resize();
                        });
 
-                       $panes.each( function ( i ) {
-                               var $pane = $( this ),
-                                       paneWidth = isHorizontal ? $pane.width() : $pane.height();
+                       playpauseButton.bind( "click.multimediaview", function () {
+                               self._endTimer();
 
-                               self.options.ratio[ i ] = paneWidth / sum;
-                       });
+                               if ( viewElement.paused ) {
+                                       viewElement.play();
+                               } else {
+                                       viewElement.pause();
+                               }
 
-                       self.moveData = null;
-               },
+                               if ( isVideo ) {
+                                       self._startTimer();
+                               }
+                       });
 
-               _fixed : function ( isFix ) {
-                       var self = this,
-                               spliters = self.spliters;
+                       fullscreenButton.bind( "click.multimediaview", function ( e ) {
+                               e.preventDefault();
+                               self.fullScreen( !self.options.fullScreen );
+                               self._resize();
+                               self._endTimer();
+                               e.stopPropagation();
+                       });
 
-                       $.each( spliters, function ( i ) {
-                               var $spliter = $( this );
+                       seekBar.bind( "vmousedown.multimediaview", function ( e ) {
+                               var x = e.clientX,
+                                       duration = viewElement.duration,
+                                       durationOffset = durationBar.offset(),
+                                       durationWidth = durationBar.width(),
+                                       timerate = ( x - durationOffset.left ) / durationWidth,
+                                       time = duration * timerate;
 
-                               if ( isFix ) {
-                                       $spliter.addClass( "ui-fixed" );
-                               } else {
-                                       $spliter.removeClass( "ui-fixed" );
+                               if ( !viewElement.played.length ) {
+                                       return;
                                }
-                       });
 
-                       self._layout();
-               },
+                               viewElement.currentTime = time;
 
-               _dividerVertical : function ( isDividerVertical ) {
-                       var self = this,
-                               $el = self.element,
-                               isHorizontal = isDividerVertical,
-                               $panes = null,
-                               $spliters = null,
-                               $bar = null,
-                               $handle = null;
+                               self._endTimer();
 
-                       $panes = $el.children( ".ui-pane" );
-                       $spliters = $el.children( ".ui-spliter" );
-                       $bar = $spliters.children( ".ui-spliter-bar" );
-                       $handle = $bar.children( ".ui-spliter-handle" );
+                               e.preventDefault();
 
-                       $el.removeClass( "ui-direction-vertical" );
-                       $el.removeClass( "ui-direction-horizontal" );
-                       $el.addClass( "ui-splitview ui-direction-" + self._direction( isHorizontal ) );
+                               $document.bind( "vmousemove.multimediaview", function ( e ) {
+                                       var x = e.clientX,
+                                               timerate = ( x - durationOffset.left ) / durationWidth;
 
-                       $panes.css( {
-                               "left" : "",
-                               "top" : "",
-                               "width" : "",
-                               "height" : ""
-                       });
+                                       viewElement.currentTime = duration * timerate;
 
-                       $spliters.css( {
-                               "left" : "",
-                               "top" : "",
-                               "width" : "",
-                               "height" : ""
+                                       e.preventDefault();
+                               }).bind( "vmouseup.multimediaview", function () {
+                                       $document.unbind( "vmousemove.multimediaview vmouseup.multimediaview" );
+                                       if ( viewElement.paused ) {
+                                               viewElement.pause();
+                                       } else {
+                                               viewElement.play();
+                                       }
+                               });
                        });
 
-                       $bar.css( {
-                               "width" : "",
-                               "height" : ""
-                       });
+                       volumeButton.bind( "click.multimediaview", function () {
+                               if ( self.isVolumeHide ) {
+                                       var view = self.element,
+                                               volume = viewElement.volume;
 
-                       $handle.css( {
-                               "left" : "",
-                               "top" : ""
+                                       self.isVolumeHide = false;
+                                       volumeControl.fadeIn( "fast", function () {
+                                               self._updateVolumeState();
+                                               self._updateSeekBar();
+                                       });
+                                       self._resize();
+                               } else {
+                                       self.isVolumeHide = true;
+                                       volumeControl.fadeOut( "fast", function () {
+                                               self._resize();
+                                       });
+                               }
                        });
 
-                       if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
-                               self._layout();
-                       }
-               },
-
-               _ratio : function ( ratioParam ) {
-                       var self = this,
-                               $el = self.element,
-                               $panes = $el.children( ".ui-pane" ),
-                               panesLength = $panes.length;
+                       volumeBar.bind( "vmousedown.multimediaview", function ( e ) {
+                               var baseX = e.clientX,
+                                       volumeGuideLeft = volumeGuide.offset().left,
+                                       volumeGuideWidth = volumeGuide.width(),
+                                       volumeBase = volumeGuideLeft + volumeGuideWidth,
+                                       handlerOffset = volumeHandle.offset(),
+                                       volumerate = ( baseX - volumeGuideLeft ) / volumeGuideWidth,
+                                       currentVolume = ( baseX - volumeGuideLeft ) / volumeGuideWidth;
 
-                       self._convertRatio( ratioParam, panesLength );
-                       self._layout();
-               },
+                               self._endTimer();
+                               self._setVolume( currentVolume.toFixed( 2 ) );
 
-               _refresh : function ( initRatio, fromFirstPane ) {
-                       var self = this,
-                               $el = self.element;
+                               e.preventDefault();
 
-                       if ( typeof initRatio === "undefined" ) {
-                               initRatio = false;
-                       }
+                               $document.bind( "vmousemove.multimediaview", function ( e ) {
+                                       var currentX = e.clientX,
+                                               currentVolume = ( currentX - volumeGuideLeft ) / volumeGuideWidth;
 
-                       if ( initRatio && typeof fromFirstPane === "undefined" ) {
-                               fromFirstPane = false;
-                       }
+                                       self._setVolume( currentVolume.toFixed( 2 ) );
 
-                       if ( self._getContainerSize( $el[ 0 ].style.width, $el[ 0 ].style.height ) ) {
-                               self._layout( initRatio, fromFirstPane );
-                       }
+                                       e.preventDefault();
+                               }).bind( "vmouseup.multimediaview", function () {
+                                       $document.unbind( "vmousemove.multimediaview vmouseup.multimediaview" );
+                               });
+                       });
                },
 
-               pane : function ( id, element ) {
-                       if ( typeof id !== "string" ) {
-                               return null;
-                       }
+               _removeEvent: function () {
+                       var view = this.element,
+                               control = view.parent( ".ui-multimediaview-wrap" ).find( ".ui-multimediaview-control" ),
+                               playpauseButton = control.find( ".ui-playpausebutton" ),
+                               fullscreenButton = control.find( ".ui-fullscreenbutton" ),
+                               seekBar = control.find( ".ui-seekbar" ),
+                               volumeControl = control.find( ".ui-volumecontrol" ),
+                               volumeBar = volumeControl.find( ".ui-volumebar" ),
+                               volumeHandle = volumeControl.find( ".ui-handle" );
 
-                       var self = this,
-                               $el = self.element,
-                               $targetPane = $el.children( id ),
-                               $targetView = null,
-                               elementParent = null;
+                       view.unbind( ".multimediaview" );
+                       playpauseButton.unbind( ".multimediaview" );
+                       fullscreenButton.unbind( ".multimediaview" );
+                       seekBar.unbind( ".multimediaview" );
+                       volumeBar.unbind( ".multimediaview" );
+                       volumeHandle.unbind( ".multimediaview" );
+               },
 
-                       if ( !$targetPane.hasClass( "ui-pane" ) ) {
-                               return null;
+               _createControl: function () {
+                       var view = this.element,
+                               viewElement = view[0],
+                               control = $( "<span></span>" ).addClass( "ui-multimediaview-control" ),
+                               playpauseButton = $( "<span></span>" ).addClass( "ui-playpausebutton ui-button ui-play-icon" ),
+                               seekBar = $( "<span></span>" ).addClass( "ui-seekbar ui-multimediaview-bar" ),
+                               timestampLabel = $( "<span><p>00:00:00</p></span>" ).addClass( "ui-timestamplabel" ),
+                               durationLabel = $( "<span><p>00:00:00</p></span>" ).addClass( "ui-durationlabel" ),
+                               volumeButton = $( "<span></span>" ).addClass( "ui-volumebutton ui-button" ),
+                               volumeControl = $( "<span></span>" ).addClass( "ui-volumecontrol" ),
+                               volumeBar = $( "<div></div>" ).addClass( "ui-volumebar ui-multimediaview-bar" ),
+                               volumeGuide = $( "<span></span>" ).addClass( "ui-guide ui-multimediaview-bar-bg" ),
+                               volumeValue = $( "<span></span>" ).addClass( "ui-value ui-multimediaview-bar-highlight" ),
+                               volumeHandle = $( "<span></span>" ).addClass( "ui-handle" ),
+                               fullscreenButton = $( "<span></span>" ).addClass( "ui-fullscreenbutton ui-button" ),
+                               durationBar = $( "<span></span>" ).addClass( "ui-duration ui-multimediaview-bar-bg" ),
+                               currenttimeBar = $( "<span></span>" ).addClass( "ui-currenttime ui-multimediaview-bar-highlight" );
+
+                       seekBar.append( durationBar ).append( currenttimeBar ).append( durationLabel ).append( timestampLabel );
+
+                       volumeButton.addClass( viewElement.muted ? "ui-mute-icon" : "ui-volume-icon" );
+                       volumeBar.append( volumeGuide ).append( volumeValue ).append( volumeHandle );
+                       volumeControl.append( volumeBar );
+
+                       control.append( playpauseButton ).append( seekBar ).append( volumeControl ).append( volumeButton );
+
+                       if ( this._isVideo ) {
+                               $( fullscreenButton ).addClass( "ui-fullscreen-on" );
+                               control.append( fullscreenButton );
                        }
+                       volumeControl.hide();
 
-                       // getter
-                       if ( typeof element === "undefined" || !element ) {
-                               return $targetPane.contents();
+                       return control;
+               },
+
+               _startTimer: function ( duration ) {
+                       this._endTimer();
+
+                       if ( !duration ) {
+                               duration = 3000;
                        }
 
-                       // setter
-                       if ( $targetPane.hasClass( "ui-scrollview-clip" ) ) {
-                               $targetPane.scrollview( "scrollTo", 0, 0, 0 );
+                       var self = this,
+                               view = self.element,
+                               control = view.parent( ".ui-multimediaview-wrap" ).find( ".ui-multimediaview-control" ),
+                               volumeControl = control.find( ".ui-volumecontrol" );
 
-                               $targetView = $targetPane.children( ".ui-scrollview-view" );
-                               if ( !$targetView.length ) {
-                                       return null;
-                               }
-                       } else {
-                               $targetView = $targetPane;
+                       self.controlTimer = setTimeout( function () {
+                               self.isVolumeHide = true;
+                               self.controlTimer = null;
+                               volumeControl.hide();
+                               control.fadeOut( "fast" );
+                       }, duration );
+               },
+
+               _endTimer: function () {
+                       if ( this.controlTimer ) {
+                               clearTimeout( this.controlTimer );
+                               this.controlTimer = null;
                        }
+               },
 
-                       elementParent = element.parent();
-                       if ( elementParent.length && elementParent[ 0 ] === $targetView[ 0 ] ) {
-                               return;
+               _convertTimeFormat: function ( systime ) {
+                       if ( !$.isNumeric( systime ) ) {
+                               return "Playback Error";
                        }
 
-                       $targetView.empty().append( element ).trigger( "create" );
-                       $targetView.fadeIn( 'fast' );
+                       var ss = parseInt( systime % 60, 10 ).toString(),
+                               mm = parseInt( ( systime / 60 ) % 60, 10 ).toString(),
+                               hh = parseInt( systime / 3600, 10 ).toString(),
+                               time =  ( ( hh.length < 2  ) ? "0" + hh : hh ) + ":" +
+                                               ( ( mm.length < 2  ) ? "0" + mm : mm ) + ":" +
+                                               ( ( ss.length < 2  ) ? "0" + ss : ss );
+
+                       return time;
                },
 
-               maximize : function ( id ) {
-                       if ( typeof id !== "string" ) {
+               _updateSeekBar: function ( currenttime ) {
+                       var view = this.element,
+                               viewElement = view[0],
+                               duration = viewElement.duration,
+                               control = view.parent( ".ui-multimediaview-wrap" ).find( ".ui-multimediaview-control" ),
+                               seekBar = control.find(  ".ui-seekbar"  ),
+                               durationBar = seekBar.find( ".ui-duration" ),
+                               currenttimeBar = seekBar.find( ".ui-currenttime" ),
+                               timestampLabel = control.find( ".ui-timestamplabel" ),
+                               durationOffset = durationBar.offset(),
+                               durationWidth = durationBar.width(),
+                               durationHeight = durationBar.height(),
+                               timebarWidth = 0;
+
+                       if ( typeof currenttime === "undefined" ) {
+                               currenttime = viewElement.currentTime;
+                       }
+                       timebarWidth = parseInt( currenttime / duration * durationWidth, 10 );
+                       durationBar.offset( durationOffset );
+                       currenttimeBar.offset( durationOffset ).width( timebarWidth );
+                       timestampLabel.find( "p" ).text( this._convertTimeFormat( currenttime ) );
+               },
+
+               _updateVolumeState: function () {
+                       var view = this.element,
+                               control = view.parent( ".ui-multimediaview-wrap" ).find( ".ui-multimediaview-control" ),
+                               volumeControl = control.find( ".ui-volumecontrol" ),
+                               volumeButton = control.find( ".ui-volumebutton" ),
+                               volumeBar = volumeControl.find( ".ui-volumebar" ),
+                               volumeGuide = volumeControl.find( ".ui-guide" ),
+                               volumeValue = volumeControl.find( ".ui-value" ),
+                               volumeHandle = volumeControl.find( ".ui-handle" ),
+                               handlerWidth = volumeHandle.width(),
+                               handlerHeight = volumeHandle.height(),
+                               volumeGuideHeight = volumeGuide.height(),
+                               volumeGuideWidth = volumeGuide.width(),
+                               volumeGuideTop = 0,
+                               volumeGuideLeft = 0,
+                               volumeBase = 0,
+                               handlerOffset = null,
+                               volume = view[0].volume;
+
+                       volumeGuideTop = parseInt( volumeGuide.offset().top, 10 );
+                       volumeGuideLeft = parseInt( volumeGuide.offset().left, 10 );
+                       volumeBase = volumeGuideLeft;
+                       handlerOffset = volumeHandle.offset();
+                       handlerOffset.top = volumeGuideTop - parseInt( ( handlerHeight - volumeGuideHeight ) / 2, 10 );
+                       handlerOffset.left = volumeBase + parseInt( volumeGuideWidth * volume, 10 ) - parseInt( handlerWidth / 2, 10 );
+                       volumeHandle.offset( handlerOffset );
+                       volumeValue.offset( volumeGuide.offset() ).width( parseInt( volumeGuideWidth * ( volume ), 10 ) );
+               },
+
+               _setVolume: function ( value ) {
+                       var viewElement = this.element[0];
+
+                       if ( value < 0.0 || value > 1.0 ) {
                                return;
                        }
 
-                       var self = this,
-                               $el = self.element,
-                               $panes = self.panes,
-                               $targetPane = $el.children( id );
+                       viewElement.volume = value;
+               },
 
-                       if ( !$targetPane.hasClass( "ui-pane" ) ) {
+               width: function ( value ) {
+                       if ( this.options.fullScreen ) {
                                return;
                        }
 
-                       self.savedRatio = self.options.ratio.slice();
+                       var view = this.element,
+                               wrap = view.parent( ".ui-multimediaview-wrap" );
 
-                       self.options.ratio = [];
-                       $panes.each( function ( i ) {
-                               self.options.ratio.push( ( this === $targetPane[ 0 ] ) ? 1 : 0 );
-                       });
+                       if ( arguments.length === 0 ) {
+                               return view.width();
+                       }
 
-                       self._layout();
+                       if ( !this._isVideo ) {
+                               wrap.width( value );
+                       }
+
+                       view.width( value );
+                       this._resize();
                },
 
-               restore : function () {
-                       var self = this;
+               height: function ( value ) {
+                       if ( !this._isVideo || this.options.fullScreen ) {
+                               return;
+                       }
 
-                       if ( self.savedRatio.length === 0 ) {
+                       var view = this.element;
+
+                       if ( arguments.length === 0 ) {
+                               return view.height();
+                       }
+
+                       view.height( value );
+                       this._resize();
+               },
+
+               fullScreen: function ( value ) {
+                       if ( !this._isVideo ) {
                                return;
                        }
 
-                       self.options.ratio = self.savedRatio.slice();
-                       self._adjustRatio( self.panes.length );
+                       var view = this.element,
+                               option = this.options;
 
-                       self._layout();
+                       if ( arguments.length === 0 ) {
+                               return option.fullScreen;
+                       }
+
+                       view.parents( ".ui-scrollview-clip" ).scrollview( "scrollTo", 0, 0 );
+
+                       this.options.fullScreen = value;
+
+                       this._resize();
+               },
+
+               refresh: function () {
+                       this._resize();
                }
        });
 
        $( document ).bind( "pagecreate create", function ( e ) {
-               $.tizen.splitview.prototype.enhanceWithin( e.target );
+               $.tizen.multimediaview.prototype.enhanceWithin( e.target );
+       }).bind( "pagechange", function ( e ) {
+               $( e.target ).find( ".ui-multimediaview" ).each( function () {
+                       var view = $( this ),
+                               viewElement = view[0];
+
+                       if ( viewElement.autoplay ) {
+                               viewElement.play();
+                       }
+                       view.multimediaview( "refresh" );
+               });
+       }).bind( "pagebeforechange", function ( e ) {
+               $( e.target ).find( ".ui-multimediaview" ).each( function () {
+                       var view = $( this ),
+                               viewElement = view[0],
+                               isFullscreen = view.multimediaview( "fullScreen" );
+
+                       if ( isFullscreen ) {
+                               view.multimediaview( "fullScreen", !isFullscreen );
+                       }
+
+                       if ( viewElement.played.length !== 0 ) {
+                               viewElement.pause();
+                       }
+               });
        });
-} ( jQuery, window, document ) );
+
+       $( window ).bind( "resize orientationchange", function ( e ) {
+               $( ".ui-page-active" ).find( ".ui-multimediaview" ).multimediaview( "refresh" );
+       });
+
+} ( jQuery, document, window ) );
 
 
 
@@ -6985,39 +7124,33 @@ ensureNS("jQuery.mobile.tizen");
 
 (function () {
 jQuery.extend(jQuery.mobile.tizen, {
-    disableSelection: function (element) {
-       var self = this;
-       $(element).find('*').each( function() {
-               if( ( $(this).get(0).tagName !== 'INPUT' &&
-                       $(this).attr("type") !== 'text' ) &&
-                       $(this).get(0).tagName !== 'TEXTAREA' ) {
-                       self.enableSelection( this, 'none' );
-               }
-       } );
-       return true;
-    },
-
-    enableSelection: function (element, value) {
-        return $(element).each( function () {
-               switch( value ) {
+       disableSelection: function (element) {
+               this.enableSelection(
+                       $(element).find('*').not( 'input, [type="text"], textarea' ),
+                       'none'
+               );
+               return true;
+       },
+
+       enableSelection: function (element, value) {
+               var val;
+               switch ( value ) {
                        case 'text' :
                        case 'auto' :
                        case 'none' :
                                val = value;
                        break;
-
                        default :
                                val = 'auto';
                        break;
                }
-            $(this).css( {
+               return $(element).css( {
                        'user-select': val,
                        '-moz-user-select': val,
                        '-webkit-user-select': val,
                        '-o-user-select': val,
                        '-ms-transform': val
-                       } );
-        } );
+               } );
     },
 
     disableContextMenu: function(element) {
@@ -7124,1639 +7257,1335 @@ jQuery.extend(jQuery.mobile.tizen, {
  * DEALINGS IN THE SOFTWARE.
  * ***************************************************************************
  *
- *     Author: Kangsik Kim <kangsik81.kim@samsung.com>
- *                     Youmin Ha <youmin.ha@samsung.com>
+ * Authors: Wonseop Kim ( wonseop.kim@samsung.com )
 */
 
 /**
- * In the web environment, it is challenging to display a large amount of data in a grid.
- * When an application needs to show, for example, image gallery with over 1,000 images,
- * the same enormous data must be inserted into a HTML document.
- * It takes a long time to display the data and manipulating DOM is complex.
- * The virtual grid widget supports storing unlimited data without performance issues
- * by reusing a limited number of grid elements.
- * The virtual grid widget is based on the jQuery.template plug-in 
- * For more information, see jQuery.template.
+ * "Handler" is a widget helping a user to scroll a window or panel.
+ * It is different from the scrollview feature in that the handler has a fixed size
+ * and disappears when a scroll size is smaller than a parent window's size.
+ * If the handler widget is activated, a scroll bar on the screen will be deactivated.
+ * The handler widget supports scrolling up and down and indicates the position of the scrolled window.
  *
  * HTML Attributes:
  *
- *             data-role:  virtualgrid
- *             data-template : Has the ID of the jQuery.template element.
- *                                             jQuery.template for a virtual grid must be defined.
- *                                             Style for template would use rem unit to support scalability.
- *             data-direction : This option define the direction of the scroll.
- *                                             You must choose one of the 'x' and 'y' (Default : y)
- *             data-rotation : This option defines whether or not the circulation of the data.
- *                                             If option is 'true' and scroll is reached the last data,
- *                                             Widget will present the first data on the screen.
- *                                             If option is â€˜false’, Widget will operate like a scrollview.
- *
- *             ID : <DIV> element that has "data-role=virtualgrid" must have ID attribute.
+ *             data-handler : This attribute is indicating that whether enable.
+ *                                             If you want to use, you will set 'true'.
+ *             data-handler-theme : Set the widget theme ( optional )
  *
  * APIs:
  *
- *             create ( {
- *                             itemData: function ( idx ) { return json_obj; },
- *                             numItemData: number or function () { return number; },
- *                             cacheItemData: function ( minIdx, maxIdx ) {}
- *                             } )
- *                     : Create VirtualGrid widget. At this moment, _create method is called.
- *                     args : A collection of options
- *                             itemData: A function that returns JSON object for given index. Mandatory.
- *                             numItemData: Total number of itemData. Mandatory.
- *                             cacheItemData: Virtuallist will ask itemData between minIdx and maxIdx.
- *                             Developers can implement this function for preparing data.
- *                             Optional.
- *
- *             centerTo ( String )
- *                     : Find a DOM Element with the given class name.
- *                     This element will be centered on the screen.
- *                     Serveral elements were found, the first element is displayed.
+ *             enableHandler ( boolean )
+ *                     : Get or set the use of handler widget.
+ *                     If the value is "true", it will be run handler widget.
+ *                     If the value is "false", it will be not run handler widget.
+ *                     If no value is specified, will act as a getter.
  *
  * Events:
- *             scrollstart : : This event triggers when a user begin to move the scroll on VirtualGrid.
- *             scrollupdate : : This event triggers while a user moves the scroll on VirtualGrid.
- *             scrollstop : This event triggers when a user stop the scroll on VirtualGrid.
- *             select : This event triggers when a cell is selected.
  *
  * Examples:
  *
- *                     <script id="tizen-demo-namecard" type="text/x-jquery-tmpl">
- *                             <div class="ui-demo-namecard">
- *                                     <div class="ui-demo-namecard-pic">
- *                                             <img class="ui-demo-namecard-pic-img" src="${TEAM_LOGO}" />
- *                                     </div>
- *                                     <div class="ui-demo-namecard-contents">
- *                                             <span class="name ui-li-text-main">${NAME}</span>
- *                                             <span class="active ui-li-text-sub">${ACTIVE}</span>
- *                                             <span class="from ui-li-text-sub">${FROM}</span>
- *                                     </div>
- *                             </div>
- *                     </script>
- *                     <div id="virtualgrid-demo" data-role="virtualgrid" data-template="tizen-demo-namecard" >
- *                     </div>
- *
+ *             <div data-role="content" data-scroll="y" data-handler="true">
+ *                     <ul data-role="listview">
+ *                             <li data-role="list-divider">A</li>
+ *                             <li><a href="#">Adam Kinkaid</a></li>
+ *                                     ...
+ *                     </ul>
+ *             </div>
  */
 
-// most of following codes are derived from jquery.mobile.scrollview.js
-
 /**
-       @class VirtualGrid
-       In the Web environment, it is challenging to display large amount of data in a list, such as displaying a contact list of over 1000 list items. It takes time to display the entire list in HTML and the DOM manipulation is complex.
-
-       The virtual grid widget is used to display a list of unlimited data elements on the screen for better performance. This widget displays the data in the grid format by reusing the existing grid control space. Virtual grids are based on the jQuery.template plugin as described in the jQuery documentation for jQuery.template plugin.
-
-       To add a virtual grid widget to the application, use the following code:
+       @class handler
+       The handler widget enables the user to vertically scroll through a page or panel using a fixed-size handle. The widget indicates the position of the scrolled window, and only appears on the screen if the parent page or panel's scroll size is larger than the screen size. <br/> To add a handler widget to the application, use the following code:
 
-               <script id="tizen-demo-namecard" type="text/x-jquery-tmpl">
-                       <div class="ui-demo-namecard">
-                               <div class="ui-demo-namecard-pic">
-                                       <img class="ui-demo-namecard-pic-img" src="${TEAM_LOGO}" />
-                               </div>
-                               <div class="ui-demo-namecard-contents">
-                               <span class="name ui-li-text-main">${NAME}</span>
-                               </div>
-                       </div>
-               </script>
-               <div id="virtualgrid-demo" data-role="virtualgrid" data-template="tizen-demo-namecard">
+               <div data-role="content" data-scroll="y" data-handler="true">
+                       <ul data-role="listview">
+                               <li data-role="list-divider">A</li>
+                               <li><a href="#">Adam Kinkaid</a></li>
+                                       ...
+                       </ul>
                </div>
-*/
-/**
-       @property {String} data-template
-       Specifies the jQuery.template element ID.
-       The jQuery.template must be defined. The template style can use rem units to support scalability.
-*/
-/**
-       @property {String} data-direction
-       Defines the scroll direction. The direction options are x (horizontal) and y (vertical).
-       The default value is y.
-*/
-/**
-       @property {Boolean} data-rotation
-       Defines whether the data elements are displayed from the beginning of the list again once the end of file is reached.
-       The default value is false.
-*/
-/**
-       @event scrollstart
-       The scrollstart event is fired when the user starts scrolling through the grid:
+       
+       You can use the enableHandler method with the handler widget to get (if no value is defined) or set the handler usage status. If the [enable] value is true, the handler is enabled; otherwise the handler is not used.
 
-               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
-               // Option 01
-               $(".selector").virtualgrid
-               ({
-                       scrollstart: function(event, ui)
-                       {
-                       // Handle the scrollstart event
-                       }
-               });
-               // Option 02
-               $(".selector").bind("scrollstart", function(event, ui)
-               {
-               // Handle the scrollstart event
-               });
+               $("#.selector").scrollview("enableHandler", [enable]);
 */
 /**
-       @event scrollupdate
-       The scrollupdate event is fired when the user moves the scroll bar in the grid:
-
-               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
-               // Option 01
-               $(".selector").virtualgrid
-               ({
-                       scrollupdate: function(event, ui)
-                       {
-                       // Handle the scrollupdate event
-                       }
-               });
-               // Option 02
-               $(".selector").bind("scrollupdate", function(event, ui)
-               {
-               // Handle the scrollupdate event
-               });
+       @property {Boolean} data-handler
+       Enables the handler widget. The value must be set to true.
 */
 /**
-       @event scrollstop
-       The scrollstop event is fired when the user stops scrolling:
-
-               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
-               // Option 01
-               $(".selector").virtualgrid
-               ({
-                       scrollstop: function(event, ui)
-                       {
-                       // Handle the scrollstop event
-                       }
-               });
-               // Option 02
-               $(".selector").bind("scrollstop", function(event, ui)
-               {
-               // Handle the scrollstop event
-               });
+       @property {String} data-handler-theme
+       Sets the handler widget theme.
 */
-/**
-       @event select
-       The select event is fired when a virtual grid cell is selected:
+( function ( $, document, undefined ) {
+       // The options of handler in scrollview
+       $.tizen.scrollview.prototype.options.handler = false;
+       $.tizen.scrollview.prototype.options.handlerTheme = "s";
 
-               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
-               // Option 01
-               $(".selector").virtualgrid
-               ({
-                       select: function(event, ui)
-                       {
-                       // Handle the select event
+       var originSetOption = $.tizen.scrollview.prototype._setOption,
+               createHandler = function ( target ) {
+                       var $view = target,
+                               prefix = "<div class=\"ui-handler ui-handler-direction-",
+                               suffix = "\"><div class=\"ui-handler-track\"><div class=\"ui-handler-thumb\"></div></div></div>",
+                               scrollview = $view.data( "scrollview" ),
+                               options = scrollview.options,
+                               direction = options.direction,
+                               parentTheme = $.mobile.getInheritedTheme( scrollview, "s" ),
+                               theme = options.theme || parentTheme,
+                               isHorizontal = ( scrollview.options.direction === "x" ),
+                               _$view = scrollview._$view,
+                               _$clip = scrollview._$clip,
+                               scrollbar = $view.find( ".ui-scrollbar" ),
+                               handler = null,
+                               handlerThumb = null,
+                               viewLength = 0,
+                               clipLength = 0,
+                               handlerHeight = 0,
+                               handlerMargin = 0,
+                               trackLength = 0,
+                               moveTimer,
+                               isTouchable = $.support.touch,
+                               dragStartEvt = ( isTouchable ? "touchstart" : "mousedown" ) + ".handler",
+                               dragMoveEvt = ( isTouchable ? "touchmove" : "mousemove" ) + ".handler",
+                               dragStopEvt = ( isTouchable ? "touchend" : "mouseup" ) + ".handler",
+                               dragLeaveEvt = ( isTouchable ? " touchleave" : " mouseleave" ) + ".handler",
+                               calculateLength = function () {
+                                       clipLength = ( isHorizontal ? _$clip.width() : _$clip.height() );
+                                       viewLength = ( isHorizontal ? _$view.width() : _$view.height() ) - clipLength;
+                                       trackLength = clipLength - handlerHeight - handlerMargin * 2;
+                               },
+                               setHanderPostion = function ( scrollPos ) {
+                                       var handlerPos = Math.round( ( isHorizontal ? scrollPos.x : scrollPos.y ) / viewLength * trackLength );
+                                       handlerThumb[0].style[ ( isHorizontal ? "left" : "top" ) ] = handlerPos + "px";
+                               },
+                               stopHandlerScroll = function () {
+                                       $( document ).unbind( ".handler" );
+                                       $view.moveData = null;
+                                       _$view.trigger( "scrollstop" );
+                               };
+
+                       if ( $view.find( ".ui-handler-thumb" ).length !== 0 || typeof direction !== "string" ) {
+                               return;
                        }
-               });
-               // Option 02
-               $(".selector").bind("select", function(event, ui)
-               {
-               // Handle the select event
-               });
-*/
-/**
-       @method create
-       @param {function} itemData(index)
-       @param {Number} numItemData
-       @param {function} cacheItemData(minIndex, maxIndex)
-       The create method is used to call the jQuery _create method. In the method parameters:
 
-       function itemData(index) returns the JSON object matched with the given index. The index value is between 0 and numItemData-1.<br/>
-       number numItemData or function numItemData() defines or returns a static number of items.<br/>
-       function cacheItemData(minIndex, maxIndex) prepares the JSON data. This method is called before calling the itemData() method with index values between minIndex and maxIndex.<br/>
+                       handler = $( [ prefix, direction, suffix ].join( "" ) ).appendTo( $view.addClass( " ui-handler-" + theme ) );
+                       handlerThumb = $view.find( ".ui-handler-thumb" ).attr( {
+                               "tabindex" : "0",
+                               "aria-label" : ( isHorizontal ? "Horizontal handler, double tap and move to scroll" : "Verticalhandler, double tap and move to scroll" )
+                       }).hide();
+                       handlerHeight = ( isHorizontal ? handlerThumb.width() : handlerThumb.height() );
+                       handlerMargin = ( isHorizontal ? parseInt( handler.css( "right" ), 10 ) : parseInt( handler.css( "bottom" ), 10 ) );
 
-               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
-                       function itemData(idx)
-                       {
-                               return DATA[idx];
-                       }
-                       function cacheItemData(minIdx, maxIdx)
-                       {
-                       // Prepare JSON data between minIdx and maxIdx
-                       }
-                       var numItemData = DATA.length;
-                       $(".selector").virtualgrid("create",
-                       {
-                               itemData, numItemData, cacheItemData
+                       $.extend( $view, {
+                               moveData : null
                        });
-*/
-/**
-       @method centerTo
-       The centerTo method is used to search for the DOM element with a specified class name. The retrieved element is placed at the center of the virtual grid. If multiple elements are retrieved, the first element from the result list is placed at the center of the virtual grid.
-
-               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
-               $(".selector").virtualgrid("centerTo", "selector");
-*/
-/**
-       @method resize
-       The resize method is used to rearrange the DOM elements to fit a new screen size when the screen is resized:
 
-               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
-               ".selector").virtualgrid("resize");
+                       // handler drag
+                       handlerThumb.bind( dragStartEvt, {
+                               e : handlerThumb[0]
+                       }, function ( event ) {
+                               scrollview._stopMScroll();
 
-       @since Tizen2.0
-*/
+                               var target = event.data.e,
+                                       t = ( isTouchable ? event.originalEvent.targetTouches[0] : event );
 
-( function ( $, window, document, undefined ) {
+                               target.style.opacity = 1.0;
 
-       function circularNum ( num, total ) {
-               var n = num % total;
-               if ( n < 0 ) {
-                       n = total + n;
-               }
-               return n;
-       }
+                               $view.moveData = {
+                                       target : target,
+                                       X : parseInt( target.style.left, 10 ) || 0,
+                                       Y : parseInt( target.style.top, 10 ) || 0,
+                                       pX : t.pageX,
+                                       pY : t.pageY
+                               };
+                               calculateLength();
 
-       function MomentumTracker ( options ) {
-               this.options = $.extend( {}, options );
-               this.easing = "easeOutQuad";
-               this.reset();
-       }
+                               _$view.trigger( "scrollstart" );
 
-       var tstates = {
-                       scrolling : 0,
-                       done : 1
-               },
-               _OVERFLOW_DIR_NONE = 0,         /* ENUM */
-               _OVERFLOW_DIR_UP = 1,           /* ENUM */
-               _OVERFLOW_DIR_DOWN = -1,        /* ENUM */
-               imgTagSrcAttrRE = /src\s*=\s*[\"\'][\w\/.]+.[A-z]+[\"\']/;
+                               if ( !isTouchable ) {
+                                       event.preventDefault();
+                               }
 
-       function getCurrentTime () {
-               return Date.now();
-       }
+                               $( document ).bind( dragMoveEvt, function ( event ) {
+                                       var moveData = $view.moveData,
+                                               target = moveData.target,
+                                               handlePos = 0,
+                                               scrollPos = 0,
+                                               t = ( isTouchable ? event.originalEvent.targetTouches[0] : event );
 
-       $.extend( MomentumTracker.prototype, {
-               start : function ( pos, speed, duration ) {
-                       this.state = ( speed !== 0 ) ? tstates.scrolling : tstates.done;
-                       this.pos = pos;
-                       this.speed = speed;
-                       this.duration = duration;
+                                       handlePos = ( isHorizontal ? moveData.X + t.pageX - moveData.pX : moveData.Y + t.pageY - moveData.pY );
 
-                       this.fromPos = 0;
-                       this.toPos = 0;
+                                       if ( handlePos < 0 ) {
+                                               handlePos = 0;
+                                       }
 
-                       this.startTime = getCurrentTime();
-               },
+                                       if ( handlePos > trackLength ) {
+                                               handlePos = trackLength;
+                                       }
+                                       scrollPos = - Math.round( handlePos / trackLength * viewLength );
 
-               reset : function () {
-                       this.state = tstates.done;
-                       this.pos = 0;
-                       this.speed = 0;
-                       this.duration = 0;
-               },
+                                       if ( isHorizontal ) {
+                                               scrollview._setScrollPosition( scrollPos, 0 );
+                                               target.style.left = handlePos + "px";
+                                       } else {
+                                               scrollview._setScrollPosition( 0, scrollPos );
+                                               target.style.top = handlePos + "px";
+                                       }
 
-               update : function () {
-                       var state = this.state, duration, elapsed, dx, x;
+                                       event.preventDefault();
+                               }).bind( dragStopEvt + dragLeaveEvt, function ( event ) {
+                                       stopHandlerScroll();
+                               });
+                       });
 
-                       if ( state == tstates.done ) {
-                               return this.pos;
-                       }
-                       duration = this.duration;
-                       elapsed = getCurrentTime () - this.startTime;
-                       elapsed = elapsed > duration ? duration : elapsed;
-                       dx = this.speed * ( 1 - $.easing[this.easing]( elapsed / duration, elapsed, 0, 1, duration ) );
-                       x = this.pos + ( dx / 2 );
-                       this.pos = x;
+                       _$view.bind( dragStopEvt, function ( event ) {
+                               stopHandlerScroll();
+                       });
 
-                       if ( elapsed >= duration ) {
-                               this.state = tstates.done;
-                       }
-                       return this.pos;
-               },
+                       $view.bind( "scrollstart", function ( event ) {
+                               if ( !scrollview.enableHandler() ) {
+                                       return;
+                               }
 
-               done : function () {
-                       return this.state == tstates.done;
-               },
+                               calculateLength();
 
-               getPosition : function () {
-                       return this.pos;
-               }
-       });
+                               if ( viewLength < 0 || clipLength < handlerHeight ) {
+                                       if ( scrollbar.is( ":hidden" ) ) {
+                                               scrollbar.show();
+                                       }
+                                       return;
+                               }
 
-       jQuery.widget ( "mobile.virtualgrid", jQuery.mobile.widget, {
-               options : {
-                       // virtualgrid option
-                       template : "",
-                       direction : "y",
-                       rotation : false
-               },
+                               if ( scrollbar.is( ":visible" ) ) {
+                                       scrollbar.hide();
+                               }
 
-               create : function () {
-                       this._create.apply( this, arguments );
-               },
+                               if ( moveTimer ) {
+                                       clearInterval( moveTimer );
+                                       moveTimer = undefined;
+                               }
 
-               _create : function ( args ) {
-                       $.extend( this, {
-                               // view
-                               _$view : null,
-                               _$clip : null,
-                               _$rows : null,
-                               _tracker : null,
-                               _viewSize : 0,
-                               _clipSize : 0,
-                               _cellSize : undefined,
-                               _currentItemCount : 0,
-                               _itemCount : 1,
-                               _inheritedSize : null,
+                               handler.addClass( "ui-handler-visible" );
+                               handlerThumb.stop( true, true )
+                                                       .fadeIn();
+                       }).bind( "scrollupdate", function ( event, data ) {
+                               if ( !scrollview.enableHandler() || viewLength < 0 || clipLength < handlerHeight ) {
+                                       return;
+                               }
 
-                               // timer
-                               _timerInterval : 0,
-                               _timerID : 0,
-                               _timerCB : null,
-                               _lastMove : null,
+                               setHanderPostion( scrollview.getScrollPosition() );
+                       }).bind( "scrollstop", function ( event ) {
+                               if ( !scrollview.enableHandler() || viewLength < 0 || clipLength < handlerHeight ) {
+                                       return;
+                               }
 
-                               // Data
-                               _itemData : function ( idx ) { return null; },
-                               _numItemData : 0,
-                               _cacheItemData : function ( minIdx, maxIdx ) { },
-                               _totalRowCnt : 0,
-                               _templateText : null,
-                               _maxViewSize : 0,
-                               _modifyViewPos : 0,
-                               _maxSizeExceptClip : 0,
-                               _maxSize : 0,
+                               moveTimer = setInterval( function () {
+                                       setHanderPostion( scrollview.getScrollPosition() );
+                                       if ( !scrollview._gesture_timer ) {
+                                               clearInterval( moveTimer );
+                                               moveTimer = undefined;
+                                       }
+                               }, 10 );
 
-                               // axis - ( true : x , false : y )
-                               _direction : false,
-                               _didDrag : true,
-                               _reservedPos : 0,
-                               _scalableSize : 0,
-                               _eventPos : 0,
-                               _nextPos : 0,
-                               _movePos : 0,
-                               _lastY : 0,
-                               _speedY : 0,
-                               _lastX : 0,
-                               _speedX : 0,
-                               _rowsPerView : 0,
-                               _fragment : null,
+                               if ( scrollview._handlerTimer ) {
+                                       clearTimeout( scrollview._handlerTimer );
+                                       scrollview._handlerTimer = 0;
+                               }
+                               scrollview._handlerTimer = setTimeout( function () {
+                                       if ( scrollview._timerID === 0 && $view.moveData === null ) {
+                                               handlerThumb.stop( true, true )
+                                                       .css( "opacity", 1.0 )
+                                                       .fadeOut( function () {
+                                                               handler.removeClass( "ui-handler-visible" );
+                                                       });
+                                               scrollview._handlerTimer = 0;
+                                       }
+                               }, 1000 );
+                       }).bind( "mousewheel", function ( event ) {
+                               handler.removeClass( "ui-handler-visible" );
+                               setHanderPostion( scrollview.getScrollPosition() );
+                       });
+               };
 
-                               _filterRatio : 0.9,
+       $.extend( $.tizen.scrollview.prototype, {
+               enableHandler: function ( enabled ) {
+                       if ( typeof enabled === 'undefined' ) {
+                               return this.options.handler;
+                       }
 
-                               _overflowStartPos : 0,
-                               _overflowDir : 0,
-                               _overflowMaxDragDist : 100
-                       });
+                       this.options.handler = !!enabled;
 
-                       var self = this,
-                               $dom = $( self.element ),
-                               opts = self.options,
-                               $item = null;
+                       var $view = this.element;
+                       if ( this.options.handler ) {
+                               if ( $view.find( ".ui-handler" ).length === 0 ) {
+                                       createHandler( $view );
+                               }
 
-                       // itemData
-                       // If mandatory options are not given, Do nothing.
-                       if ( !args ) {
-                               return ;
+                               $view.find( ".ui-scrollbar" ).hide();
+                               $view.find( ".ui-handler" ).show();
+                       } else {
+                               $view.find( ".ui-handler" ).removeClass( "ui-handler-visible" ).hide();
+                               $view.find( ".ui-scrollbar" ).show();
                        }
+               },
 
-                       if ( !self._loadData( args ) ) {
+               _setHandlerTheme: function ( handlerTheme ) {
+                       if ( !handlerTheme ) {
                                return;
                        }
 
-                       // make a fragment.
-                       self._fragment = document.createDocumentFragment();
-
-                       // read defined properties(width and height) from dom element.
-                       self._inheritedSize = self._getinheritedSize( self.element );
+                       var oldClass = "ui-handler-" + this.options.handlerTheme,
+                               newClass = "ui-handler-" + handlerTheme;
 
-                       // set a scroll direction.
-                       self._direction = opts.direction === 'x' ? true : false;
+                       this.element.removeClass( oldClass ).addClass( newClass );
+                       this.options.handlerTheme = handlerTheme;
+               },
 
-                       // make view layer
-                       self._$clip = $dom.addClass( "ui-scrollview-clip" ).addClass( "ui-virtualgrid-view" );
-                       $item = $( document.createElement( "div" ) ).addClass( "ui-scrollview-view" );
-                       self._clipSize =  self._calculateClipSize();
-                       self._$clip.append( $item );
-                       self._$view = $item;
-                       self._$clip.css( "overflow", "hidden" );
-                       self._$view.css( "overflow", "hidden" );
-
-                       // inherit from scrollview widget.
-                       self._scrollView = $.tizen.scrollview.prototype;
-                       self._initScrollView();
-
-                       // create tracker.
-                       self._createTracker();
-                       self._makePositioned( self._$clip );
-                       self._timerInterval = 1000 / self.options.fps;
-
-                       self._timerID = 0;
-                       self._timerCB = function () {
-                               self._handleMomentumScroll();
-                       };
-                       $dom.closest( ".ui-content" ).addClass( "ui-virtualgrid-content" ).css( "overflow", "hidden" );
-
-                       // add event handler.
-                       self._addBehaviors();
-
-                       self._currentItemCount = 0;
-                       self._createOverflowArea();
-                       self._createScrollBar();
-                       self.refresh();
-               },
-
-               // The argument is checked for compliance with the specified format.
-               // @param args   : Object
-               // @return boolean
-               _loadData : function ( args ) {
-                       var self = this;
-
-                       if ( args.itemData && typeof args.itemData == 'function'  ) {
-                               self._itemData = args.itemData;
-                       } else {
-                               return false;
-                       }
-                       if ( args.numItemData ) {
-                               if ( typeof args.numItemData == 'function' ) {
-                                       self._numItemData = args.numItemData( );
-                               } else if ( typeof args.numItemData == 'number' ) {
-                                       self._numItemData = args.numItemData;
-                               } else {
-                                       return false;
-                               }
-                       } else {
-                               return false;
+               _setOption: function ( key, value ) {
+                       switch ( key ) {
+                       case "handler":
+                               this.enableHandler( value );
+                               break;
+                       case "handlerTheme":
+                               this._setHandlerTheme( value );
+                               break;
+                       default:
+                               originSetOption.call( this, key, value );
                        }
-                       self._getObjectNames( self._itemData( 0 ) );
-                       return true;
                },
 
-               // Make up the first screen.
-               _initLayout: function () {
-                       var self = this,
-                               opts = self.options,
-                               i,
-                               $row;
-
-                       for ( i = -1; i < self._rowsPerView + 1; i += 1 ) {
-                               $row = self._$rows[ circularNum( i, self._$rows.length ) ];
-                               self._$view.append( $row );
-                       }
-                       self._setElementTransform( -self._cellSize );
+               _handlerTimer : 0
+       });
 
-                       self._replaceRow( self._$view[0].firstChild, self._totalRowCnt - 1 );
-                       if ( opts.rotation && self._rowsPerView >= self._totalRowCnt ) {
-                               self._replaceRow( self._$view[0].lastChild, 0 );
-                       }
-                       self._setViewSize();
-               },
+       $( document ).delegate( ":jqmData(scroll)", "scrollviewcreate", function () {
+               var widget = $( this );
+               if ( widget.attr( "data-" + $.mobile.ns + "scroll" ) === "none"
+                               || widget.attr( "data-" + $.mobile.ns + "handler" ) !== "true" ) {
+                       return;
+               }
+               widget.scrollview( "enableHandler", "true" );
+       });
+} ( jQuery, document ) );
 
-               _setViewSize : function () {
-                       var self = this,
-                               height = 0,
-                               width = 0;
 
-                       if ( self._direction ) {
-                               width = self._cellSize * ( self._rowsPerView + 2 );
-                               width = parseInt( width, 10 ) + 1;
-                               self._$view.width( width );
-                               self._viewSize = self._$view.width();
-                       } else {
-                               self._$view.height( self._cellSize * ( self._rowsPerView + 2 ) );
-                               self._$clip.height( self._clipSize );
-                               self._viewSize = self._$view.height();
-                       }
-               },
 
-               _getViewWidth : function () {
-                       var self = this;
-                       return self._maxSize;
-               },
+/**
+       @class Button
+       The button widget shows a control on the screen that you can use to generate an action event when it is pressed and released. This widget is coded with standard HTML anchor and input elements and then enhanced by jQueryMobile to make it more attractive and usable on a mobile device. Buttons can be used in Tizen as described in the jQueryMobile documentation for buttons.
 
-               _getViewHeight : function () {
-                       var self = this;
-                       return self._maxSize;
-               },
+       To add a button widget to the application, use the following code
 
-               refresh : function () {
-                       var self = this,
-                               opts = self.options,
-                               width = 0,
-                               height = 0,
-                               $template = null;
+               <div data-role="button" data-inline="true">Text Button Test</div>
+               <div data-role="button" data-inline="true" data-icon="plus" data-style="circle"></div>
+               <div data-role="button" data-inline="true" data-icon="plus" data-style="nobg"></div>
 
-                       $template = $( "#" + opts.template );
-                       if ( !$template ) {
-                               return ;
-                       }
-                       self._templateText = self._insertAriaAttrToTmpl( $template.text() );
+       The button can define callbacks for events as described in the jQueryMobile documentation for button events.<br/>
+       You can use methods with the button as described in the jQueryMobile documentation for button methods.
+*/
 
-                       width = self._calculateClipWidth();
-                       height = self._calculateClipHeight();
-                       self._$view.width( width ).height( height );
-                       self._$clip.width( width ).height( height );
+/**
+       @property {String} data-style
+       Defines the button style. <br/> The default value is box. If the value is set to circle, a circle-shaped button is created. If the value is set to nobg, a button is created without a background.
 
-                       self._clipSize = self._calculateClipSize();
-                       self._calculateColumnSize();
-                       self._initPageProperty();
-                       self._setScrollBarSize();
-               },
+*/
+/**
+       @property {String} data-icon
+       Defines an icon for a button. Tizen supports 12 icon styles: reveal, closed, opened, info, rename, call, warning, plus, minus, cancel, send, and favorite.
 
-               _initPageProperty : function () {
-                       var self = this,
-                               rowsPerView = 0,
-                               $child,
-                               columnCount = 0,
-                               totalRowCnt = 0,
-                               attributeName = self._direction ? "width" : "height";
+*/
 
-                       columnCount = self._calculateColumnCount();
 
-                       totalRowCnt = parseInt( self._numItemData / columnCount, 10 );
-                       self._totalRowCnt = self._numItemData % columnCount === 0 ? totalRowCnt : totalRowCnt + 1;
-                       self._itemCount = columnCount;
 
-                       if ( self._cellSize <= 0 ) {
-                               return ;
-                       }
+/* ***************************************************************************
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ *
+ *     Author: Wongi Lee <wongi11.lee@samsung.com>
+ *             Youmin Ha <youmin.ha@samsung.com>
+ */
 
-                       rowsPerView = self._clipSize / self._cellSize;
-                       rowsPerView = Math.ceil( rowsPerView );
-                       self._rowsPerView = parseInt( rowsPerView, 10 );
+/**
+ * Virtual List Widget for unlimited data.
+ * To support more then 1,000 items, special list widget developed. 
+ * Fast initialize and light DOM tree.
+ * DB connection and works like DB cursor.
+ * 
+ * HTML Attributes:
+ *
+ *             data-role:      virtuallistview
+ *             data-template : jQuery.template ID that populate into virtual list 
+ *             data-row : Optional. Set number of <li> elements that are used for data handling. 
+ *             
+ *             ID : <UL> element that has "data-role=virtuallist" must have ID attribute.
+ *
+ * * APIs:
+ *
+ *             create ( {
+ *                             itemData: function ( idx ) { return json_obj; },
+ *                             numItemData: number or function () { return number; },
+ *                             cacheItemData: function ( minIdx, maxIdx ) {}
+ *                             } )
+ *                     : Create a virtuallist widget. At this moment, _create method is called.
+ *                     args : A collection of options
+ *                             itemData: A function that returns JSON object for given index. Mandatory.
+ *                             numItemData: Total number of itemData. Mandatory.
+ *                             cacheItemData: Virtuallist will ask itemData between minIdx and maxIdx.
+ *                                            Developers can implement this function for preparing data.
+ *                                            Optional.
+ *
+ * Events:
+ *
+ *             touchstart : Temporary preventDefault applied on touchstart event to avoid broken screen.
+ *
+ * Examples:
+ *
+ *             <script id="tmp-3-2-7" type="text/x-jquery-tmpl">
+ *                     <li class="ui-li-3-2-7">
+ *                             <span class="ui-li-text-main">${NAME}</span>
+ *                             <img src="00_winset_icon_favorite_on.png" class="ui-li-icon-sub">
+ *                             <span class="ui-li-text-sub">${ACTIVE}</span>
+ *                             <span class="ui-li-text-sub2">${FROM}</span>
+ *                     </li>
+ *             </script>
+ *
+ *             <ul id="virtuallist-normal_3_2_7_ul" data-role="virtuallistview" data-template="tmp-3-2-7" data-dbtable="JSON_DATA" data-row="100">
+ *             </ul>
+ *
+ */
 
-                       $child = $( self._makeRows( rowsPerView + 2 ) );
-                       self._$view.append( $child.children() );
-                       self._$view.children().css( attributeName, self._cellSize + "px" );
-                       self._$rows = self._$view.children().detach();
+/**
+       @class VirtualList
+       In the Web environment, it is challenging to display a large amount of data in a list, such as displaying a contact list of over 1000 list items. It takes time to display the entire list in HTML and the DOM manipulation is complex.
 
-                       self._reservedPos = -self._cellSize;
-                       self._scalableSize = -self._cellSize;
+       The virtual list widget is used to display a list of unlimited data elements on the screen for better performance. This widget provides easy access to databases to retrieve and display data. Virtual lists are based on the jQuery.template plugin as described in the jQuery documentation for jQuery.template plugin.
 
-                       self._initLayout();
+       To add a virtual list widget to the application, use the following code:
 
-                       self._blockScroll = self._rowsPerView > self._totalRowCnt;
-                       self._maxSizeExceptClip = ( self._totalRowCnt - self._rowsPerView ) * self._cellSize;
-                       self._maxSize = self._totalRowCnt * self._cellSize;
-                       self._maxViewSize = ( self._rowsPerView ) * self._cellSize;
-                       self._modifyViewPos = -self._cellSize;
-                       if ( self._clipSize < self._maxViewSize ) {
-                               self._modifyViewPos = ( -self._cellSize ) + ( self._clipSize - self._maxViewSize );
-                       }
-               },
-
-               _getinheritedSize : function ( elem ) {
-                       var $target = $( elem ),
-                               height,
-                               width,
-                               NODETYPE = { ELEMENT_NODE : 1, TEXT_NODE : 3 },
-                               ret = {
-                                       isDefinedWidth : false,
-                                       isDefinedHeight : false,
-                                       width : 0,
-                                       height : 0
-                               };
+               <script id="tmp-3-2-7" type="text/x-jquery-tmpl">
+                       <li class="ui-li-3-2-7">
+                               <span class="ui-li-text-main">${NAME}</span>
+                               <img src="00_winset_icon_favorite_on.png" class="ui-li-icon-sub"/>
+                               <span class="ui-li-text-sub">${ACTIVE}</span>
+                               <span class="ui-li-text-sub2">${FROM}</span>
+                       </li>
+               </script>
+               <ul id="vlist" data-role="virtuallistview" data-template="tmp-3-2-7" data-dbtable="JSON_DATA" data-row="100"></ul>
+*/
+/**
+       @property {String} data-role
+       Creates the virtual list view. The value must be set to virtuallistview.
+       Only the &gt;ul&lt; element, which a id attribute defined, supports this option. Also, the vlLoadSuccess class attribute must be defined in the &gt;ul&lt; element to ensure that loading data from the database is complete.
+*/
+/**
+       @property {String} data-template
+       Defines the jQuery.template element ID.
+       The jQuery.template must be defined. The template style can use rem units to support scalability.
+*/
+/**
+       @property {Number} data-row
+       Defines the number of virtual list child elements.
+       The minimum value is 20 and the default value is 100. As the value gets higher, the loading time increases while the system performance improves. So you need to pick a value that provides the best performance without excessive loading time.
+*/
+/**
+       @method create
+       @param {function} itemData(index)
+       : function itemData(index) returns the JSON object matched with the given index. The index value is between 0 and numItemData-1.
+       @param {Number} numItemData
+       : number numItemData or function numItemData() defines or returns a static number of items.
+       @param {function} cacheItemData(minIndex, maxIndex)
+       : function cacheItemData(minIndex, maxIndex) prepares the JSON data. This method is called before calling the itemData() method with index values between minIndex and maxIndex.
+*/
 
-                       while ( $target[0].nodeType === NODETYPE.ELEMENT_NODE && ( ret.isDefinedWidth === false || ret.isHeightDefined === false ) ) {
-                               height = $target[0].style.height;
-                               width = $target[0].style.width;
+(function ( $, undefined ) {
 
-                               if ( ret.isDefinedHeight === false && height !== "" ) {
-                                       // Size was defined
-                                       ret.isDefinedHeight = true;
-                                       ret.height = parseInt( height, 10 );
-                               }
+       /* Code for Virtual List Demo */
+       var listCountPerPage = {},      /* Keeps track of the number of lists per page UID. This allows support for multiple nested list in the same page. https://github.com/jquery/jquery-mobile/issues/1617 */
+               _NO_SCROLL = 0,                                 /* ENUM */
+               _SCROLL_DOWN = 1,                               /* ENUM */
+               _SCROLL_UP = -1;                                        /* ENUM */
 
-                               if ( ret.isDefinedWidth === false && width !== "" ) {
-                                       // Size was defined
-                                       ret.isDefinedWidth = true;
-                                       ret.width = parseInt( width, 10 );
-                               }
-                               $target = $target.parent();
-                               if ( $target.hasClass( "ui-content" ) ) {
-                                       break;
-                               }
-                       }
-                       return ret;
+       $.widget( "tizen.virtuallistview", $.mobile.widget, {
+               options: {
+                       theme: "s",
+                       countTheme: "s",
+                       headerTheme: "s",
+                       dividerTheme: "s",
+                       splitIcon: "arrow-r",
+                       splitTheme: "s",
+                       inset: false,
+                       id:     "",                                     /* Virtual list UL elemet's ID */
+                       childSelector: " li",   /* To support swipe list */
+                       dbtable: "",
+                       template : "",
+                       dbkey: false,                   /* Data's unique Key */
+                       scrollview: false,
+                       row: 100,
+                       page_buf: 30,
+                       initSelector: ":jqmData(role='virtuallistview')"
                },
 
-               resize : function () {
-                       var self = this,
-                               ret = null,
-                               rowsPerView = 0,
-                               itemCount = 0,
-                               totalRowCnt = 0,
-                               diffRowCnt = 0,
-                               clipSize = 0,
-                               prevcnt = 0,
-                               clipPosition = 0;
+               _stylerMouseUp: function () {
+                       $( this ).addClass( "ui-btn-up-s" );
+                       $( this ).removeClass( "ui-btn-down-s" );
+               },
 
-                       itemCount = self._calculateColumnCount();
-                       if ( itemCount != self._itemCount ) {
-                               totalRowCnt = parseInt( self._numItemData / itemCount, 10 );
-                               self._totalRowCnt = self._numItemData % itemCount === 0 ? totalRowCnt : totalRowCnt + 1;
-                               prevcnt = self._itemCount;
-                               self._itemCount = itemCount;
-                               clipPosition = self._getClipPosition();
-                               self._$view.hide();
+               _stylerMouseDown: function () {
+                       $( this ).addClass( "ui-btn-down-s" );
+                       $( this ).removeClass( "ui-btn-up-s" );
+               },
 
-                               diffRowCnt = self._replaceRows( itemCount, prevcnt, self._totalRowCnt, clipPosition );
-                               self._maxSizeExceptClip = ( self._totalRowCnt - self._rowsPerView ) * self._cellSize;
-                               self._maxSize = self._totalRowCnt * self._cellSize;
-                               self._scalableSize += ( -diffRowCnt ) * self._cellSize;
-                               self._reservedPos  += ( -diffRowCnt ) * self._cellSize;
-                               self._setScrollBarSize();
-                               self._setScrollBarPosition( diffRowCnt );
+               _stylerMouseOver: function () {
+                       $( this ).toggleClass( "ui-btn-hover-s" );
+               },
 
-                               self._$view.show();
-                       }
+               _stylerMouseOut: function () {
+                       $( this ).toggleClass( "ui-btn-hover-s" );
+                       $( this ).addClass( "ui-btn-up-s" );
+                       $( this ).removeClass( "ui-btn-down-s" );
+               },
 
-                       clipSize = self._calculateClipSize();
-                       if ( clipSize !== self._clipSize ) {
-                               rowsPerView = clipSize / self._cellSize;
-                               rowsPerView = parseInt( Math.ceil( rowsPerView ), 10 );
+               // ?
+               // this         virtuallistview object
+               // @param[in]   template        template name(string)
+               _pushData: function ( template ) {
+                       var o = this.options,
+                               i,
+                               myTemplate = $( "#" + template ),       // Get template object
+                               // NOTE: o.row = # of rows handled at once. Default value is 100.
+                               lastIndex = ( o.row > this._numItemData ? this._numItemData : o.row ),  // last index of handled data
+                               htmlData;
 
-                               if ( rowsPerView > self._rowsPerView ) {
-                                       // increase row.
-                                       self._increaseRow( rowsPerView - self._rowsPerView );
-                               } else if ( rowsPerView < self._rowsPerView ) {
-                                       // decrease row.
-                                       self._decreaseRow( self._rowsPerView - rowsPerView );
-                               }
-                               self._rowsPerView = rowsPerView;
-                               self._clipSize = clipSize;
-                               self._blockScroll = self._rowsPerView > self._totalRowCnt;
-                               self._maxSizeExceptClip = ( self._totalRowCnt - self._rowsPerView ) * self._cellSize;
-                               self._maxSize = self._totalRowCnt * self._cellSize;
-                               self._maxViewSize = ( self._rowsPerView ) * self._cellSize;
-                               if ( self._clipSize < self._maxViewSize ) {
-                                       self._modifyViewPos = ( -self._cellSize ) + ( self._clipSize - self._maxViewSize );
-                               }
-                               if ( self._direction ) {
-                                       self._$clip.width( self._clipSize );
-                               } else {
-                                       self._$clip.height( self._clipSize );
-                               }
-                               self._setScrollBarSize();
-                               self._setScrollBarPosition( 0 );
-                               self._setViewSize();
+                       for ( i = 0; i < lastIndex; i++ ) {
+                               htmlData = myTemplate.tmpl( this._itemData( i ) );      // Make rows with template,
+                               $( o.id ).append( $( htmlData ).attr( 'id', o.itemIDPrefix + i ) );     // and append it to the vlist object
                        }
-               },
 
-               _initScrollView : function () {
-                       var self = this;
-                       $.extend( self.options, self._scrollView.options );
-                       self.options.moveThreshold = 10;
-                       self.options.showScrollBars = false;
-                       self._getScrollHierarchy = self._scrollView._getScrollHierarchy;
-                       self._makePositioned =  self._scrollView._makePositioned;
-                       self._set_scrollbar_size = self._scrollView._set_scrollbar_size;
-                       self._setStyleTransform = self._scrollView._setElementTransform;
-                       self._hideOverflowIndicator = self._scrollView._hideOverflowIndicator;
-                       self._showOverflowIndicator = self._scrollView._showOverflowIndicator;
-                       self._setGestureScroll = self._scrollView._setGestureScroll;
+                       // After pushing data re-style virtuallist widget
+                       $( o.id ).trigger( "create" );
                },
 
-               _createTracker : function () {
-                       var self = this;
+               // Set children <li> elements' position
+               //
+               // this: virtuallist element
+               // event: virtuallistview.options
+               //              TODO: Why this arg name is 'event'? Not resonable.
+               //              (this function is not called with event element as args!)
+               _reposition: function ( event ) {
+                       var o,
+                               t = this,
+                               padding,
+                               margin;
 
-                       self._tracker = new MomentumTracker( self.options );
-                       if ( self._direction ) {
-                               self._hTracker = self._tracker;
-                               self._$clip.width( self._clipSize );
+                       if ( event.data ) {
+                               o = event.data;
                        } else {
-                               self._vTracker = self._tracker;
-                               self._$clip.height( self._clipSize );
+                               o = event;
                        }
-               },
+                       if ( $( o.id + o.childSelector ).size() > 0 ) { // $("#vlistid li")
+                               // first child's top position
+                               // NOTE: the first element may not be '0'!!!
+                               t._title_h = $( o.id + o.childSelector + ':first' ).position().top;
+                               // first child's outer height (TODO: reuse selected items)
+                               t._line_h = $( o.id + o.childSelector + ':first' ).outerHeight();
 
-               //----------------------------------------------------//
-               //              Overflow effect
-               //----------------------------------------------------//
-               _createOverflowArea : function () {
-                       var self = this,
-                               prefix = "<div class=\"ui-virtualgrid-overflow-indicator-",
-                               suffixTop = "-top\"></div>",
-                               suffixBottom = "-bottom\"></div>";
+                               // container(vlist element)'s innerwidth
+                               t._container_w = $( o.id ).innerWidth();
 
-                       if ( self.options.rotation ) {
-                               return;
+                               // get sum of container's left/right padding
+                               padding = parseInt( $( o.id + o.childSelector ).css( "padding-left" ), 10 )
+                                       + parseInt( $( o.id + o.childSelector ).css( "padding-right" ), 10 );
+
+                               // Add CSS to all <li> elements
+                               //      * absolute position
+                               //      * btn-up
+                               //      * mouse up/down/over/out styles
+                               $( o.id + ">" + o.childSelector )
+                                       .addClass( "position_absolute" )
+                                       .addClass( "ui-btn-up-s" )
+                                       .bind( "mouseup", t._stylerMouseUp )
+                                       .bind( "mousedown", t._stylerMouseDown )
+                                       .bind( "mouseover", t._stylerMouseOver )
+                                       .bind( "mouseout", t._stylerMouseOut );
                        }
 
-                       if ( self._direction ) {
-                               self._overflowTop = $( prefix + "x" + suffixTop );
-                               self._overflowBottom = $( prefix + "x" + suffixBottom );
-                       } else {
-                               self._overflowTop = $( prefix + "y" + suffixTop );
-                               self._overflowBottom = $( prefix + "y" + suffixBottom );
-                       }
-
-                       self._$clip.append( self._overflowTop );
-                       self._$clip.append( self._overflowBottom );
-                       self._overflowDisplayed = false;
-               },
+                       // Set absolute top/left position of each <li>
+                       $( o.id + ">" + o.childSelector ).each( function ( index ) {
+                               margin = parseInt( $( this ).css( "margin-left" ), 10 )
+                                       + parseInt( $( this ).css( "margin-right" ), 10 );
 
-               _hideVGOverflowIndicator : function () {
-                       if ( this._overflowDisplayed === false ) {
-                               return;
-                       }
+                               $( this ).css( "top", t._title_h + t._line_h * index + 'px' )
+                                       .css( "width", t._container_w - padding - margin );
+                       } );
 
-                       this._overflowTop.animate( { opacity: 0 }, 300 );
-                       this._overflowBottom.animate( { opacity: 0 }, 300 );
-                       this._overflowDisplayed = false;
+                       // Set Max Listview Height
+                       $( o.id ).height( t._numItemData * t._line_h );
                },
 
-               //----------------------------------------------------//
-               //              Scrollbar               //
-               //----------------------------------------------------//
-               _createScrollBar : function () {
-                       var self = this,
-                               prefix = "<div class=\"ui-scrollbar ui-scrollbar-",
-                               suffix = "\"><div class=\"ui-scrollbar-track\"><div class=\"ui-scrollbar-thumb\"></div></div></div>";
-
-                       if ( self.options.rotation ) {
-                               return ;
-                       }
+               _resize: function ( event ) {
+                       var o,
+                               t = this,
+                               padding,
+                               margin;
 
-                       if ( self._direction ) {
-                               self._$clip.append( prefix + "x" + suffix );
-                               self._hScrollBar = self._$clip.children( ".ui-scrollbar-x" );
-                               self._hScrollBar.find( ".ui-scrollbar-thumb" ).addClass( "ui-scrollbar-thumb-x" );
+                       if ( event.data ) {
+                               o = event.data;
                        } else {
-                               self._$clip.append( prefix + "y" + suffix );
-                               self._vScrollBar = self._$clip.children( ".ui-scrollbar-y" );
-                               self._vScrollBar.find( ".ui-scrollbar-thumb" ).addClass( "ui-scrollbar-thumb-y" );
+                               o = event;
                        }
+
+                       t._container_w = $( o.id ).innerWidth();
+
+                       padding = parseInt( $( o.id + o.childSelector ).css( "padding-left" ), 10 )
+                               + parseInt( $( o.id + o.childSelector ).css( "padding-right" ), 10 );
+
+                       $( o.id + o.childSelector ).each( function (index) {
+                               margin = parseInt( $( this ).css( "margin-left" ), 10 )
+                                       + parseInt( $( this ).css( "margin-right" ), 10 );
+                               $( this ).css( "width", t._container_w - padding - margin );
+                       } );
                },
 
-               _setScrollBarSize: function () {
-                       var self = this,
-                               scrollBarSize = 0,
-                               currentSize = 0,
-                               $scrollBar,
-                               attrName,
-                               className;
+               // New scrollmove function supporting scrollTo
+               _scrollmove: function ( ev ) {
+                       var t = ev.data,        // vlist (JQM object)
+                               o = t.options,  // options
+                               prevTopBufLen = t._num_top_items,       // Previous(remembered) top buf length
+                               timerInterval = 100,
+                               i,
+                               _scrollView,
+                               _normalScroll;
 
-                       if ( self.options.rotation ) {
-                               return ;
+                       _scrollView = {
+                               viewTop: function ( ) {
+                                       var sv = $( o.id ).parentsUntil( ".ui-page" ).find( ".ui-scrollview-view" ),
+                                               svTrans = sv.css( "-webkit-transform" ),
+                                               svTransVal = "0,0,0,0,0,0";
+                                       if ( svTrans ) {
+                                               svTransVal = svTrans.replace( /matrix\s*\((.*)\)/, "$1" );      // matrix(a,c,b,d,tx,ty)
+                                       }
+                                       return - parseInt( svTransVal.split(',')[5], 10 );
+                               }
+                       };
+                       _normalScroll = {
+                               viewTop: function ( ) {
+                                       return $( window ).scrollTop( );        // TODO: - _line_h?
+                               }
+                       };
+                       // Get current view top position
+                       function viewTop ( ) {
+                               return o.scrollview ? _scrollView.viewTop() : _normalScroll.viewTop();
                        }
-
-                       scrollBarSize = parseInt( self._maxViewSize / self._clipSize, 10 );
-                       if ( self._direction ) {
-                               $scrollBar = self._hScrollBar.find( ".ui-scrollbar-thumb" );
-                               attrName = "width";
-                               currentSize = $scrollBar.width();
-                               className = "ui-scrollbar-thumb-x";
-                               self._hScrollBar.css( "width", self._clipSize );
-                       } else {
-                               $scrollBar = self._vScrollBar.find( ".ui-scrollbar-thumb" );
-                               attrName = "height";
-                               className = "ui-scrollbar-thumb-y";
-                               currentSize = $scrollBar.height();
-                               self._vScrollBar.css( "height", self._clipSize );
+                       // log function for debug
+                       function log ( msg ) {
+                               var debug = false;
+                               if ( debug ) {
+                                       console.log( ">>virtualllist: " + msg );
+                               }
                        }
 
-                       if ( scrollBarSize > currentSize ) {
-                               $scrollBar.removeClass( className );
-                               $scrollBar.css( attrName, scrollBarSize );
-                       } else {
-                               scrollBarSize = currentSize;
-                       }
+                       // Timer interval function
+                       // @param[in]   vl      virtuallist object (JQM object)
+                       function timerMove ( vl, undefined ) {
+                               var cy,                         // current y position
+                                       cti,            // current top idx
+                                       cbi,            // current bottom idx
+                                       oti = vl._first_index,  // old top idx
+                                       obi = vl._last_index,   // old botton idx
+                                       dti,                    // delta of top idx
+                                       fromIdx,
+                                       toIdx,  // index range to be moved
+                                       delta,                  // moveItem delta
+                                       rowLen = vl.options.row,        // max. # of items handled at once
+                                       bufSize,                // top/bottom buffer size. unit: # of items
+                                       i;
 
-                       self._itemScrollSize = parseFloat( ( self._clipSize - scrollBarSize ) / ( self._totalRowCnt - self._rowsPerView ) );
-                       self._itemScrollSize = Math.round( self._itemScrollSize * 100 ) / 100;
-               },
+                               // subroutine: Move itemContents in i2 into i1
+                               function moveItemContents( vl, i1, i2 ) {
+                                       // TODO: Find a efficient way to replace data!
+                                       // Assumption: i1 and i2 has same children.
+                                       var NODETYPE = { ELEMENT_NODE: 1, TEXT_NODE: 3 },
+                                               c1,     // child item 1 (old)
+                                               c2,     // child item 2 (new)
+                                               newText,
+                                               newImg,
+                                               i;
 
-               _setScrollBarPosition : function ( di, duration ) {
-                       var self = this,
-                               $sbt = null,
-                               x = "0px",
-                               y = "0px",
-                               translate;
+                                       $( i1 ).find( ".ui-li-text-main", ".ui-li-text-sub", ".ui-li-text-sub2", "ui-btn-text" ).each( function ( index ) {
+                                               c1 = $( this );
+                                               newText = $( i2 ).find( ".ui-li-text-main", ".ui-li-text-sub", "ui-btn-text" ).eq( index ).text();
 
-                       if ( self.options.rotation ) {
-                               return ;
-                       }
+                                               $( c1 ).contents().filter( function () {
+                                                       return ( this.nodeType == NODETYPE.TEXT_NODE );
+                                               } ).get( 0 ).data = newText;
+                                       } );
 
-                       self._currentItemCount = self._currentItemCount + di;
-                       if ( self._vScrollBar ) {
-                               $sbt = self._vScrollBar.find( ".ui-scrollbar-thumb" );
-                               y = ( self._currentItemCount * self._itemScrollSize ) + "px";
-                       } else {
-                               $sbt = self._hScrollBar.find( ".ui-scrollbar-thumb" );
-                               x = ( self._currentItemCount * self._itemScrollSize ) + "px";
-                       }
-                       self._setStyleTransform( $sbt, x, y, duration );
-               },
+                                       $( i1 ).find( "img" ).each( function ( imgIdx ) {
+                                               var c1 = $( this );
+                                               newImg = $( i2 ).find( "img" ).eq( imgIdx ).attr( "src" );
 
-               _hideScrollBars : function () {
-                       var self = this,
-                               vclass = "ui-scrollbar-visible";
+                                               $( c1 ).attr( "src", newImg );
+                                       } );
 
-                       if ( self.options.rotation ) {
-                               return ;
-                       }
+                                       $( i1 ).removeData( );  // Clear old data
+                               }
 
-                       if ( self._vScrollBar ) {
-                               self._vScrollBar.removeClass( vclass );
-                       } else {
-                               self._hScrollBar.removeClass( vclass );
-                       }
-               },
+                               // subroutine: Move item
+                               function moveItem( vl, fromIdx, toIdx ) {
+                                       var itemData,   // data from itemData()
+                                               item,           // item element
+                                               newItem,        // new item element
+                                               tmpl;           // template
 
-               _showScrollBars : function () {
-                       var self = this,
-                               vclass = "ui-scrollbar-visible";
+                                       log( ">> move item: " + fromIdx + " --> " + toIdx );
 
-                       if ( self.options.rotation ) {
-                               return ;
-                       }
+                                       // Find current item
+                                       item = $( '#' + vl.options.itemIDPrefix + fromIdx );    // TODO: refactor ID generation!
+                                       if ( ! item || ! item.length ) {
+                                               return false;
+                                       }
 
-                       if ( self._vScrollBar ) {
-                               self._vScrollBar.addClass( vclass );
-                       } else {
-                               self._hScrollBar.addClass( vclass );
-                       }
-               },
+                                       // Get new item
+                                       tmpl = $( "#" + vl.options.template );
+                                       if ( tmpl ) {
+                                               newItem = tmpl.tmpl( vl._itemData( toIdx ) );
 
-               //----------------------------------------------------//
-               //              scroll process          //
-               //----------------------------------------------------//
-               centerTo: function ( selector ) {
-                       var self = this,
-                               i,
-                               newX = 0,
-                               newY = 0;
+                                               // TODO: Consider touch block while moving?
 
-                       if ( !self.options.rotation ) {
-                               return;
-                       }
+                                               // Move item contents
+                                               moveItemContents( vl, item, newItem );
 
-                       for ( i = 0; i < self._$rows.length; i++ ) {
-                               if ( $( self._$rows[i] ).hasClass( selector ) ) {
-                                       if ( self._direction ) {
-                                               newX = -( i * self._cellSize - self._clipSize / 2 + self._cellSize * 2 );
-                                       } else {
-                                               newY = -( i * self._cellSize - self._clipSize / 2 + self._cellSize * 2 );
+                                               // clean up temporary item
+                                               newItem.remove();
                                        }
-                                       self.scrollTo( newX, newY );
-                                       return;
+
+                                       // Move position, and set id
+                                       item.css( 'top', toIdx * vl._line_h )
+                                               .attr( 'id' , vl.options.itemIDPrefix + toIdx );        // TODO: refactor ID generation!
+
+                                       // TODO: Apply jqmdata? check following old code;
+                                       // $( oldItem ).removeData( );  // Clear old data
+                                       // if (key) { $( oldItem ).data( key, $( newItem ).data( key ) ); }
+
+                                       return true;
                                }
-                       }
-               },
 
-               scrollTo: function ( x, y, duration ) {
-                       var self = this;
-                       if ( self._direction ) {
-                               x -= self._cellSize;
-                               self._sx = self._reservedPos;
-                               self._reservedPos = x;
-                       } else {
-                               y -= self._cellSize;
-                               self._sy = self._reservedPos;
-                               self._reservedPos = y;
-                       }
-                       self._scrollView.scrollTo.apply( this, [ x, y, duration ] );
-               },
 
-               getScrollPosition: function () {
-                       if ( this.direction ) {
-                               return { x: -this._ry, y: 0 };
-                       }
-                       return { x: 0, y: -this._ry };
-               },
+                               // Get current view position
+                               cy = viewTop();
 
-               _setScrollPosition: function ( x, y ) {
-                       var self = this,
-                               sy = self._scalableSize,
-                               distance = self._direction ? x : y,
-                               dy = distance - sy,
-                               di = parseInt( dy / self._cellSize, 10 ),
-                               i = 0,
-                               idx = 0,
-                               replaceStartIdx = 0,
-                               realRowCount = self._rowsPerView + 2,
-                               rawView = self._$view[0];
+                               // Calculate bufSize: rowLen / 3
+                               // NOTE: Assumption: total row length = visible items * 3 (upper+visible+lower)
+                               bufSize = Math.ceil( rowLen / 3 );
 
-                       if ( self._blockScroll ) {
-                               if ( dy > 0 && distance >= -self._cellSize && self._scalableSize >= -self._cellSize ) {
-                                       self._overflowDir = _OVERFLOW_DIR_UP;
-                               }
-                               if ( dy < 0 && self._scalableSize <= -( self._maxSizeExceptClip + self._cellSize ) ) {
-                                       self._overflowDir = _OVERFLOW_DIR_DOWN;
-                               }
-                               return;
-                       }
+                               // Calculate current top/bottom index (to be applied)
+                               // top index = current position / line height
+                               cti = Math.floor( cy / vl._line_h ) - bufSize;  // TODO: consider buffer!
+                               cbi = cti + rowLen - 1;
 
-                       if ( ! self.options.rotation ) {
-                               if ( dy > 0 && distance >= -self._cellSize && self._scalableSize >= -self._cellSize ) {
-                                       // top
-                                       self._stopMScroll();
-                                       self._scalableSize = -self._cellSize;
-                                       self._setElementTransform( -self._cellSize );
-                                       if ( self._overflowDir === _OVERFLOW_DIR_NONE ) {
-                                               self._overflowDir = _OVERFLOW_DIR_UP;
-                                       }
-                                       return;
+                               if ( cti < 0 ) {                // Top boundary check
+                                       cbi += ( - cti );
+                                       cti = 0;
+                               } else if ( cbi > ( vl._numItemData - 1 ) ) {           // Bottom boundary check
+                                       cti -= ( cbi - ( vl._numItemData - 1 ) );
+                                       cbi = ( vl._numItemData - 1 );
                                }
-                               if ( dy < 0 && self._scalableSize <= -( self._maxSizeExceptClip + self._cellSize ) ) {
-                                       // bottom
-                                       self._stopMScroll();
-                                       self._scalableSize = -( self._maxSizeExceptClip + self._cellSize );
-                                       self._setElementTransform( self._modifyViewPos );
-                                       if ( self._overflowDir === _OVERFLOW_DIR_NONE ) {
-                                               self._overflowDir = _OVERFLOW_DIR_DOWN;
+
+                               // Calculate dti
+                               dti = cti - oti;
+                               log( "cy=" + cy + ", oti=" + oti + ", obi=" + obi + ", cti=" + cti + ", cbi=" + cbi + ", dti=" + dti );
+
+                               // switch: dti = 0 --> timer stop condition: delta=0 or scrollstop event comes. END.
+                               if ( 0 == dti ) {
+                                       // Check timer runtime
+                                       vl.timerStillCount += 1;
+                                       if ( vl.timerStillCount < 12 ) {        // check count ( TODO: test and adjust )
+                                               log("dti=0 " + vl.timerStillCount + " times");
+                                               vl.timerMoveID = setTimeout( timerMove, timerInterval, vl );    // run once more
+                                               return;
                                        }
-                                       return;
-                               }
-                       }
 
-                       replaceStartIdx = ( Math.abs( di ) < realRowCount ) ? 0 : ( di > 0 ) ? di - realRowCount : di + realRowCount;
-                       if ( di > 0 ) { // scroll up
-                               for ( i = replaceStartIdx; i < di; i++ ) {
-                                       idx = -parseInt( ( sy / self._cellSize ) + i + 3, 10 );
-                                       self._replaceRow( rawView.lastChild, circularNum( idx, self._totalRowCnt ) );
-                                       rawView.insertBefore( rawView.lastChild, rawView.firstChild );
-                               }
-                       } else if ( di < 0 ) { // scroll down
-                               for ( i = replaceStartIdx; i > di; i-- ) {
-                                       idx = self._rowsPerView - parseInt( ( sy / self._cellSize ) + i, 10 );
-                                       self._replaceRow( rawView.firstChild, circularNum( idx, self._totalRowCnt ) );
-                                       rawView.insertBefore( rawView.firstChild, rawView.lastChild.nextSibling );
-                               }
-                       }
-                       self._setScrollBarPosition( -di );
-                       self._scalableSize += di * self._cellSize;
-                       self._setElementTransform( distance - self._scalableSize - self._cellSize );
-               },
+                                       log("dti=0 " + vl.timerStillCount + " times. End timer.");
+                                       vl.timerStillCount = 0;
+                                       // Stop timer
+                                       if ( vl.timerMoveID ) {
+                                               clearTimeout( vl.timerMoveID );
+                                               vl.timerMoveID = null;
+                                       }
+                               } else {
+                                       // switch: dti >= # of max elements --> total replace.
+                                       vl.timerStillCount = 0;         // Reset still counter
 
-               _setElementTransform : function ( value ) {
-                       var self = this,
-                               x = 0,
-                               y = 0;
+                                       if ( Math.abs( dti ) >= rowLen ) {
+                                               fromIdx = oti;
+                                               toIdx = obi;
+                                               delta = dti;
+                                               log( ">>> WHOLE CHANGE! delta=" + delta );
+                                       } else {
+                                               // switch: dti < # of max elements --> move t2b or b2t until new top/bottom idx is covered
+                                               if ( dti > 0 ) {
+                                                       fromIdx = oti;
+                                                       toIdx = oti + dti - 1;
+                                                       delta = rowLen;
+                                               } else {
+                                                       fromIdx = obi + dti + 1;        // dti < 0
+                                                       toIdx = obi;
+                                                       delta = -rowLen;
+                                               }
+                                               log( ">>> partial change. delta=" + delta );
+                                       }
 
-                       if ( self._direction ) {
-                               x = value + "px";
-                       } else {
-                               y = value + "px";
-                       }
-                       self._setStyleTransform( self._$view, x, y );
-               },
+                                       // Move items
+                                       for ( i = fromIdx; i <= toIdx; i++ ) {
+                                               moveItem( vl, i, i + delta );           // Change data and position
+                                       }
 
-               //----------------------------------------------------//
-               //              Event handler           //
-               //----------------------------------------------------//
-               _handleMomentumScroll: function () {
-                       var self = this,
-                               opts = self.options,
-                               keepGoing = false,
-                               v = this._$view,
-                               x = 0,
-                               y = 0,
-                               t = self._tracker;
+                                       // Store current top/bottom idx into vl
+                                       vl._first_index = cti;
+                                       vl._last_index = cbi;
 
-                       if ( t ) {
-                               t.update();
-                               if ( self._direction ) {
-                                       x = t.getPosition();
-                               } else {
-                                       y = t.getPosition();
+                                       // Register timer to check again
+                                       vl.timerMoveID = setTimeout( timerMove, timerInterval, vl );
                                }
-                               keepGoing = !t.done();
+                               return; // End of function
                        }
 
-                       self._setScrollPosition( x, y );
-                       if ( !opts.rotation ) {
-                               keepGoing = !t.done();
-                               self._reservedPos = self._direction ? x : y;
-                               // bottom
-                               self._reservedPos = self._reservedPos <= (-(self._maxSizeExceptClip - self._modifyViewPos)) ? ( - ( self._maxSizeExceptClip + self._cellSize) ) : self._reservedPos;
-                               // top
-                               self._reservedPos = self._reservedPos > -self._cellSize ? -self._cellSize : self._reservedPos;
-                       } else {
-                               self._reservedPos = self._direction ? x : y;
-                       }
-                       self._$clip.trigger( self.options.updateEventName, [ { x: x, y: y } ] );
+                       // ==== function start ====
 
-                       if ( keepGoing ) {
-                               self._timerID = setTimeout( self._timerCB, self._timerInterval );
-                       } else {
-                               self._stopMScroll();
-                       }
-               },
+                       t.timerStillCount = 0;  // Count do-nothing time.       For behavior tuning.
 
-               _startMScroll: function ( speedX, speedY ) {
-                       var self = this;
-                       if ( self._direction ) {
-                               self._sx = self._reservedPos;
-                       } else {
-                               self._sy = self._reservedPos;
+                       // If a timer function is alive, clear it
+                       if ( t.timerMoveID ) {
+                               clearTimeout( t.timerMoveID );
+                               t.timerMoveID = null;
                        }
-                       self._scrollView._startMScroll.apply( self, [ speedX, speedY ] );
+                       // run TimerMove()
+                       timerMove( t );
                },
 
-               _stopMScroll: function () {
-                       this._scrollView._stopMScroll.apply( this );
-               },
+               _recreate: function ( newArray ) {
+                       var t = this,
+                               o = this.options;
 
-               _enableTracking: function () {
-                       var self = this;
-                       self._$view.bind( self._dragMoveEvt, self._dragMoveCB );
-                       self._$view.bind( self._dragStopEvt, self._dragStopCB );
-                       self._scrollView._enableTracking.apply( self );
-               },
+                       $( o.id ).empty();
 
-               _disableTracking: function () {
-                       var self = this;
-                       self._$view.unbind( self._dragMoveEvt, self._dragMoveCB );
-                       self._$view.unbind( self._dragStopEvt, self._dragStopCB );
-                       self._scrollView._disableTracking.apply( self );
-               },
+                       t._numItemData = newArray.length;
+                       t._direction = _NO_SCROLL;
+                       t._first_index = 0;
+                       t._last_index = o.row - 1;
 
-               _handleDragStart: function ( e, ex, ey ) {
-                       var self = this;
-                       self._scrollView._handleDragStart.apply( this, [ e, ex, ey ] );
-                       self._eventPos = self._direction ? ex : ey;
-                       self._nextPos = self._reservedPos;
-               },
+                       t._pushData( o.template );
 
-               _handleDragMove: function ( e, ex, ey ) {
-                       var self = this,
-                               dx = ex - self._lastX,
-                               dy = ey - self._lastY,
-                               x = 0,
-                               y = 0,
-                               diffFromStartPos = 0,
-                               diffFromLastPos = 0,
-                               opacity = 0,
-                               overflowPos = 0,
-                               overFlowTarget = null;
+                       if (o.childSelector == " ul" ) {
+                               $( o.id + " ul" ).swipelist();
+                       }
 
-                       self._lastMove = getCurrentTime();
-                       self._speedX = dx;
-                       self._speedY = dy;
+                       $( o.id ).virtuallistview();
 
-                       self._didDrag = true;
+                       t.refresh( true );
 
-                       self._lastX = ex;
-                       self._lastY = ey;
+                       t._reposition( o );
+               },
 
-                       if ( self._direction ) {
-                               self._movePos = ex - self._eventPos;
-                               x = self._nextPos + self._movePos;
-                               overflowPos = ex;
-                       } else {
-                               self._movePos = ey - self._eventPos;
-                               y = self._nextPos + self._movePos;
-                               overflowPos = ey;
-                       }
-                       self._showScrollBars();
-                       self._setScrollPosition( x, y );
-                       if ( self._overflowDir !== _OVERFLOW_DIR_NONE ) {
-                               overFlowTarget = ( self._overflowDir === _OVERFLOW_DIR_UP ) ? self._overflowTop : self._overflowBottom;
-                               if ( !self._overflowDisplayed ) {
-                                       self._overflowDisplayed = true;
-                                       self._overflowStartPos = overflowPos;
-                               }
-                               diffFromStartPos = ( overflowPos - self._overflowStartPos ) * self._overflowDir;
-                               opacity = ( diffFromStartPos < 0 ) ?
-                                                       0 : ( diffFromStartPos > self._overflowMaxDragDist ) ?
-                                                               1 : ( diffFromStartPos / self._overflowMaxDragDist );
-                               overFlowTarget.css( "opacity", opacity );
+               // Init virtuallistview
+               // this         virtuallistview object
+               _initList: function () {
+                       var t = this,
+                               o = this.options;
+
+                       /* After AJAX loading success */
+
+                       // Put initial <li> elements
+                       t._pushData( o.template );
+
+                       // find a parent page, and run _reposition() at 'pageshow' event
+                       // TODO: Consider replace parentsUntil().parent() to parent('.ui-page') ???
+                       $( o.id ).parentsUntil( ".ui-page" ).parent().one( "pageshow", function () {
+                               setTimeout( function () {
+                                       t._reposition( o );
+                               }, 0);
+                       });
+
+                       // Bind _scrollmove() at 'scrollstart.virtuallist' event
+                       $( document ).bind( "scrollstart.virtuallist scrollstop.vrituallist", t, t._scrollmove );
+
+                       // Bind _resize() at 'resize.virtuallist'
+                       $( window ).bind( "resize.virtuallist", t._resize );
+
+                       // when ul is a childselector, assume that this is also a swipelist,
+                       // and run swipelist constructor
+                       if ( o.childSelector == " ul" ) {
+                               $( o.id + " ul" ).swipelist();
                        }
 
-                       return false;
+                       t.refresh( true );
                },
 
-               _handleDragStop: function ( e ) {
-                       var self = this;
+               create: function () {
+                       var o = this.options;
 
-                       self._reservedPos = self._movePos ? self._nextPos + self._movePos : self._reservedPos;
-                       self._scrollView._handleDragStop.apply( this, [ e ] );
-                       if ( self._overflowDir !== _OVERFLOW_DIR_NONE ) {
-                               self._overflowDir = _OVERFLOW_DIR_NONE;
-                               self._hideVGOverflowIndicator();
-                       }
-                       return self._didDrag ? false : undefined;
+                       /* external API for AJAX callback */
+                       this._create.apply( this, arguments );
+
+                       // TODO: remove this line? _initList() calls reposition...
+                       this._reposition( o );
                },
 
-               _addBehaviors: function () {
-                       var self = this;
+               _create: function ( args ) {
+                       // Extend instance variables
+                       $.extend( this, {
+                               _itemData : function ( idx ) { return null; },
+                               _numItemData : 0,
+                               _cacheItemData : function ( minIdx, maxIdx ) { },
+                               _title_h : 0,
+                               _container_w : 0,
+                               _minimum_row : 100,
+                               _direction : _NO_SCROLL,
+                               _first_index : 0,
+                               _last_index : 0,
+                               _num_top_items : 0      // By scroll move, number of hidden elements.
+                       } );
 
-                       // scroll event handler.
-                       if ( self.options.eventType === "mouse" ) {
-                               self._dragStartEvt = "mousedown";
-                               self._dragStartCB = function ( e ) {
-                                       return self._handleDragStart( e, e.clientX, e.clientY );
-                               };
+                       // local variables
+                       var t = this,
+                               o = this.options,
+                               $el = this.element,
+                               shortcutsContainer = $('<div class="ui-virtuallist"/>'),
+                               shortcutsList = $('<ul></ul>'),
+                               dividers = $el.find(':jqmData(role="virtuallistview" )'),
+                               lastListItem = null,
+                               shortcutscroll = this,
+                               dbtable_name,
+                               dbtable;
 
-                               self._dragMoveEvt = "mousemove";
-                               self._dragMoveCB = function ( e ) {
-                                       return self._handleDragMove( e, e.clientX, e.clientY );
-                               };
 
-                               self._dragStopEvt = "mouseup";
-                               self._dragStopCB = function ( e ) {
-                                       return self._handleDragStop( e, e.clientX, e.clientY );
-                               };
+                       // Add CSS classes to $el (=virtuallistview)
+                       $el.addClass( function ( i, orig ) {
+                               return orig + " ui-listview ui-virtual-list-container" + ( t.options.inset ? " ui-listview-inset ui-corner-all ui-shadow " : "" );
+                       });
 
-                               self._$view.bind( "vclick", function ( e ) {
-                                       return !self._didDrag;
-                               } );
-                       } else { //touch
-                               self._dragStartEvt = "touchstart";
-                               self._dragStartCB = function ( e ) {
-                                       var t = e.originalEvent.targetTouches[0];
-                                       return self._handleDragStart( e, t.pageX, t.pageY );
-                               };
+                       // keep the vlist's ID
+                       o.itemIDPrefix = $el.attr( "id" ) + '_';
+                       o.id = "#" + $el.attr( "id" );
 
-                               self._dragMoveEvt = "touchmove";
-                               self._dragMoveCB = function ( e ) {
-                                       var t = e.originalEvent.targetTouches[0];
-                                       return self._handleDragMove( e, t.pageX, t.pageY );
-                               };
+                       // when page hides, empty all child elements
+                       $( o.id ).bind( "pagehide", function ( e ) {
+                               $( o.id ).empty();
+                       });
 
-                               self._dragStopEvt = "touchend";
-                               self._dragStopCB = function ( e ) {
-                                       return self._handleDragStop( e );
-                               };
+                       // Find if scrollview is used
+                       if ( $( ".ui-scrollview-clip" ).size() > 0 ) {
+                               o.scrollview = true;
+                       } else {
+                               o.scrollview = false;
                        }
-                       self._$view.bind( self._dragStartEvt, self._dragStartCB );
 
-                       // other events.
-                       self._$view.delegate( ".virtualgrid-item", "click", function ( event ) {
-                               var $selectedItem = $( this );
-                               $selectedItem.trigger( "select", this );
-                       } );
+                       // Calculate page buffer size
+                       if ( $el.data( "row" ) ) {
+                               o.row = $el.data( "row" );
 
-                       $( window ).bind( "resize", function ( e ) {
-                               var height = 0,
-                                       $virtualgrid = $( ".ui-virtualgrid-view" );
-                               if ( $virtualgrid.length !== 0 ) {
-                                       if ( self._direction ) {
-                                               height = self._calculateClipHeight();
-                                               self._$view.height( height );
-                                               self._$clip.height( height );
+                               if ( o.row < t._minimum_row ) {
+                                       o.row = t._minimum_row;
+                               }
+
+                               o.page_buf = parseInt( ( o.row / 2 ), 10 );
+                       }
+
+                       // Get arguments
+                       if ( args ) {
+                               if ( args.itemData && typeof args.itemData == 'function'  ) {
+                                       t._itemData = args.itemData;
+                               } else {
+                                       return;
+                               }
+                               if ( args.numItemData ) {
+                                       if ( typeof args.numItemData == 'function' ) {
+                                               t._numItemData = args.numItemData( );
+                                       } else if ( typeof args.numItemData == 'number' ) {
+                                               t._numItemData = args.numItemData;
                                        } else {
-                                               height = self._calculateClipWidth();
-                                               self._$view.width( height );
-                                               self._$clip.width( height );
+                                               return;
                                        }
-                                       self.resize();
+                               } else {
+                                       return;
                                }
-                       } );
+                       } else {        // No option is given
+                               // Legacy support: dbtable
+                               console.warn( "WARNING: The data interface of virtuallist is changed. \nOld data interface(data-dbtable) is still supported, but will be removed in next version. \nPlease fix your code soon!" );
 
-                       $( document ).one( "pageshow", function ( event ) {
-                               var $page = $( self.element ).parents( ".ui-page" ),
-                                       $header = $page.find( ":jqmData(role='header')" ),
-                                       $footer = $page.find( ":jqmData(role='footer')" ),
-                                       $content = $page.find( ":jqmData(role='content')" ),
-                                       footerHeight = $footer ? $footer.height() : 0,
-                                       headerHeight = $header ? $header.height() : 0;
+                               /* After DB Load complete, Init Vritual list */
+                               if ( $( o.id ).hasClass( "vlLoadSuccess" ) ) {
+                                       dbtable_name = $el.jqmData('dbtable');
+                                       dbtable = window[ dbtable_name ];
 
-                               if ( $page && $content ) {
-                                       $content.height( window.innerHeight - headerHeight - footerHeight ).css( "overflow", "hidden" );
-                                       $content.addClass( "ui-virtualgrid-content" );
-                               }
-                       } );
-               },
+                                       $( o.id ).empty();
 
-               //----------------------------------------------------//
-               //              Calculate size about dom element.               //
-               //----------------------------------------------------//
-               _calculateClipSize : function () {
-                       var self = this,
-                               clipSize = 0;
+                                       if ( !dbtable ) {
+                                               dbtable = { };
+                                       }
 
-                       if ( self._direction ) {
-                               clipSize = self._calculateClipWidth();
-                       } else {
-                               clipSize = self._calculateClipHeight();
+                                       t._itemData = function ( idx ) {
+                                               return dbtable[ idx ];
+                                       };
+                                       t._numItemData = dbtable.length;
+                               } else {
+                                       return; // Do nothing
+                               }
                        }
-                       return clipSize;
-               },
 
-               _calculateClipWidth : function () {
-                       var self = this,
-                               $parent = self._$clip.parent(),
-                               paddingValue = 0,
-                               clipSize = $( window ).width();
+                       // Get template data
+                       if ( $el.data( "template" ) ) {
+                               o.template = $el.data( "template" );
 
-                       if ( self._inheritedSize.isDefinedWidth ) {
-                               return self._inheritedSize.width;
+                               /* to support swipe list, <li> or <ul> can be main node of virtual list. */
+                               if ( $el.data( "swipelist" ) == true ) {
+                                       o.childSelector = " ul";
+                               } else {
+                                       o.childSelector = " li";
+                               }
                        }
 
-                       if ( $parent.hasClass( "ui-content" ) ) {
-                               paddingValue = parseInt( $parent.css( "padding-left" ), 10 );
-                               clipSize = clipSize - ( paddingValue || 0 );
-                               paddingValue = parseInt( $parent.css( "padding-right" ), 10 );
-                               clipSize = clipSize - ( paddingValue || 0 );
-                       } else {
-                               clipSize = self._$clip.width();
+                       // Set data's unique key
+                       // NOTE: Unnecessary?
+                       if ( $el.data( "dbkey" ) ) {
+                               o.dbkey = $el.data( "dbkey" );
                        }
-                       return clipSize;
+
+                       t._first_index = 0;                     // initial top idx of <li> element.
+                       t._last_index = o.row - 1;              // initial bottom idx of <li> element.
+                       t._initList();  // NOTE: Called at here only!
                },
 
-               _calculateClipHeight : function () {
-                       var self = this,
-                               $parent = self._$clip.parent(),
-                               header = null,
-                               footer = null,
-                               paddingValue = 0,
-                               clipSize = $( window ).height();
+               destroy : function () {
+                       var o = this.options;
 
-                       if ( self._inheritedSize.isDefinedHeight ) {
-                               return self._inheritedSize.height;
-                       }
+                       $( document ).unbind( "scrollstop" );
 
-                       if ( $parent.hasClass( "ui-content" ) ) {
-                               paddingValue = parseInt( $parent.css( "padding-top" ), 10 );
-                               clipSize = clipSize - ( paddingValue || 0 );
-                               paddingValue = parseInt( $parent.css( "padding-bottom" ), 10 );
-                               clipSize = clipSize - ( paddingValue || 0 );
-                               header = $parent.siblings( ".ui-header" );
-                               footer = $parent.siblings( ".ui-footer" );
+                       $( window ).unbind( "resize.virtuallist" );
 
-                               if ( header ) {
-                                       if ( header.outerHeight( true ) === null ) {
-                                               clipSize = clipSize - ( $( ".ui-header" ).outerHeight() || 0 );
-                                       } else {
-                                               clipSize = clipSize - header.outerHeight( true );
-                                       }
-                               }
-                               if ( footer ) {
-                                       clipSize = clipSize - footer.outerHeight( true );
-                               }
-                       } else {
-                               clipSize = self._$clip.height();
+                       $( o.id ).empty();
+
+                       if ( this.timerMoveID ) {
+                               clearTimeout( this.timerMoveID );
+                               this.timerMoveID = null;
                        }
-                       return clipSize;
                },
 
-               _calculateColumnSize : function () {
-                       var self = this,
-                               $tempBlock,
-                               $cell;
+               _itemApply: function ( $list, item ) {
+                       var $countli = item.find( ".ui-li-count" );
 
-                       $tempBlock = $( self._makeRows( 1 ) );
-                       self._$view.append( $tempBlock.children().first() );
-                       if ( self._direction ) {
-                               // x-axis
-                               self._viewSize = self._$view.width();
-                               $cell = self._$view.children().first().children().first();
-                               self._cellSize = $cell.outerWidth( true );
-                               self._cellOtherSize = $cell.outerHeight( true );
-                       } else {
-                               // y-axis
-                               self._viewSize = self._$view.height();
-                               $cell = self._$view.children().first().children().first();
-                               self._cellSize = $cell.outerHeight( true );
-                               self._cellOtherSize = $cell.outerWidth( true );
+                       if ( $countli.length ) {
+                               item.addClass( "ui-li-has-count" );
                        }
-                       $tempBlock.remove();
-                       self._$view.children().remove();
+
+                       $countli.addClass( "ui-btn-up-" + ( $list.jqmData( "counttheme" ) || this.options.countTheme ) + " ui-btn-corner-all" );
+
+                       // TODO class has to be defined in markup
+                       item.find( "h1, h2, h3, h4, h5, h6" ).addClass( "ui-li-heading" ).end()
+                               .find( "p, dl" ).addClass( "ui-li-desc" ).end()
+                               .find( ">img:eq(0), .ui-link-inherit>img:eq(0)" ).addClass( "ui-li-thumb" ).each( function () {
+                                       item.addClass( $( this ).is( ".ui-li-icon" ) ? "ui-li-has-icon" : "ui-li-has-thumb" );
+                               }).end()
+                               .find( ".ui-li-aside" ).each(function () {
+                                       var $this = $( this );
+                                       $this.prependTo( $this.parent() ); //shift aside to front for css float
+                               } );
                },
 
-               _calculateColumnCount : function ( ) {
-                       var self = this,
-                               $view = self._$clip,
-                               viewSize = self._direction ? $view.innerHeight() : $view.innerWidth(),
-                               itemCount = 0 ;
+               _removeCorners: function ( li, which ) {
+                       var top = "ui-corner-top ui-corner-tr ui-corner-tl",
+                               bot = "ui-corner-bottom ui-corner-br ui-corner-bl";
 
-                       if ( self._direction ) {
-                               viewSize = viewSize - ( parseInt( $view.css( "padding-top" ), 10 ) + parseInt( $view.css( "padding-bottom" ), 10 ) );
+                       li = li.add( li.find( ".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb" ) );
+
+                       if ( which === "top" ) {
+                               li.removeClass( top );
+                       } else if ( which === "bottom" ) {
+                               li.removeClass( bot );
                        } else {
-                               viewSize = viewSize - ( parseInt( $view.css( "padding-left" ), 10 ) + parseInt( $view.css( "padding-right" ), 10 ) );
+                               li.removeClass( top + " " + bot );
                        }
-
-                       itemCount = parseInt( ( viewSize / self._cellOtherSize ), 10 );
-                       return itemCount > 0 ? itemCount : 1 ;
                },
 
-               // Read the position of clip form property ('webkit-transform').
-               // @return : number - position of clip.
-               _getClipPosition : function () {
-                       var self = this,
-                               matrix = null,
-                               contents = null,
-                               result = -self._cellSize,
-                               $scrollview = self._$view.closest( ".ui-scrollview-view" );
+               _refreshCorners: function ( create ) {
+                       var $li,
+                               $visibleli,
+                               $topli,
+                               $bottomli;
 
-                       if ( $scrollview ) {
-                               matrix = $scrollview.css( "-webkit-transform" );
-                               contents = matrix.substr( 7 );
-                               contents = contents.substr( 0, contents.length - 1 );
-                               contents = contents.split( ', ' );
-                               result =  Math.abs( contents [5] );
-                       }
-                       return result;
-               },
+                       if ( this.options.inset ) {
+                               $li = this.element.children( "li" );
+                               // at create time the li are not visible yet so we need to rely on .ui-screen-hidden
+                               $visibleli = create ? $li.not( ".ui-screen-hidden" ) : $li.filter( ":visible" );
 
-               //----------------------------------------------------//
-               //              DOM Element handle              //
-               //----------------------------------------------------//
-               _makeRows : function ( count ) {
-                       var self = this,
-                               index = 0,
-                               row = null,
-                               wrapper = null;
+                               this._removeCorners( $li );
 
-                       wrapper = self._createElement( "div" );
-                       wrapper.setAttribute( "class", "ui-scrollview-view" );
-                       for ( index = 0; index < count ; index += 1 ) {
-                               row = self._makeRow( index );
-                               if ( self._direction ) {
-                                       row.style.top = 0;
-                                       row.style.left = index * self._cellSize;
-                               }
-                               wrapper.appendChild( row );
-                       }
-                       return wrapper;
-               },
+                               // Select the first visible li element
+                               $topli = $visibleli.first()
+                                       .addClass( "ui-corner-top" );
 
-               // make a single row block
-               _makeRow : function ( rowIndex ) {
-                       var self = this,
-                               index = rowIndex * self._itemCount,
-                               colIndex = 0,
-                               blockClassName = self._direction ? "ui-virtualgrid-wrapblock-x" : "ui-virtualgrid-wrapblock-y",
-                               wrapBlock = self._createElement( "div" ),
-                               strWrapInner = "",
-                               attrName = self._direction ? "top" : "left";
+                               $topli.add( $topli.find( ".ui-btn-inner" ) )
+                                       .find( ".ui-li-link-alt" )
+                                               .addClass( "ui-corner-tr" )
+                                       .end()
+                                       .find( ".ui-li-thumb" )
+                                               .not( ".ui-li-icon" )
+                                               .addClass( "ui-corner-tl" );
 
-                       for ( colIndex = 0; colIndex < self._itemCount; colIndex++ ) {
-                               strWrapInner += self._makeHtmlData( index, colIndex, attrName );
-                               index += 1;
+                               // Select the last visible li element
+                               $bottomli = $visibleli.last()
+                                       .addClass( "ui-corner-bottom" );
+
+                               $bottomli.add( $bottomli.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" );
                        }
-                       wrapBlock.innerHTML = strWrapInner;
-                       wrapBlock.setAttribute( "class", blockClassName );
-                       wrapBlock.setAttribute( "row-index", String( rowIndex ) );
-                       self._fragment.appendChild( wrapBlock );
-                       return wrapBlock;
                },
 
-               _makeHtmlData : function ( dataIndex, colIndex, attrName ) {
-                       var self = this,
-                               htmlStr = "",
-                               itemData = null;
+               // this         virtuallistview object
+               refresh: function ( create ) {
+                       this.parentPage = this.element.closest( ".ui-page" );
+                       // Make sub page, and move the virtuallist into it...
+                       // NOTE: check this subroutine.
+                       this._createSubPages();
 
-                       itemData = self._itemData( dataIndex );
-                       if ( itemData ) {
-                               htmlStr = self._getConvertedTmplStr( itemData );
-                               htmlStr = self._insertPosToTmplStr( htmlStr, attrName, ( colIndex * self._cellOtherSize ) );
+                       var o = this.options,
+                               $list = this.element,
+                               self = this,
+                               dividertheme = $list.jqmData( "dividertheme" ) || o.dividerTheme,
+                               listsplittheme = $list.jqmData( "splittheme" ),
+                               listspliticon = $list.jqmData( "spliticon" ),
+                               li = $list.children( "li" ),
+                               counter = $.support.cssPseudoElement || !$.nodeName( $list[ 0 ], "ol" ) ? 0 : 1,
+                               item,
+                               itemClass,
+                               temTheme,
+                               a,
+                               last,
+                               splittheme,
+                               countParent,
+                               icon,
+                               pos,
+                               numli,
+                               itemTheme;
+
+                       // TODO: ?
+                       if ( counter ) {
+                               $list.find( ".ui-li-dec" ).remove();
                        }
-                       return htmlStr;
-               },
 
-               _insertPosToTmplStr : function ( tmplStr, attrName, posVal ) {
-                       var tagCloseIdx = tmplStr.indexOf( '>' ),
-                               classIdx = -1,
-                               firstPart,
-                               lastPart,
-                               result,
-                               found = false,
-                               targetIdx = 0,
-                               firstPartLen,
-                               i = 0;
+                       for ( pos = 0, numli = li.length; pos < numli; pos++ ) {
+                               item = li.eq( pos );
+                               itemClass = "ui-li";
 
-                       if ( tagCloseIdx === -1 ) {
-                               return;
-                       }
+                               // If we're creating the element, we update it regardless
+                               if ( create || !item.hasClass( "ui-li" ) ) {
+                                       itemTheme = item.jqmData( "theme" ) || o.theme;
+                                       a = item.children( "a" );
 
-                       firstPart = tmplStr.slice( 0, tagCloseIdx );
-                       lastPart = tmplStr.slice( tagCloseIdx, tmplStr.length );
+                                       if ( a.length ) {
+                                               icon = item.jqmData( "icon" );
 
-                       classIdx = firstPart.indexOf( 'class' );
+                                               item.buttonMarkup({
+                                                       wrapperEls: "div",
+                                                       shadow: false,
+                                                       corners: false,
+                                                       iconpos: "right",
+                                                       /* icon: a.length > 1 || icon === false ? false : icon || "arrow-r",*/
+                                                       icon: false,    /* Remove unnecessary arrow icon */
+                                                       theme: itemTheme
+                                               });
 
-                       if ( classIdx !== -1 ) {
-                               firstPartLen = firstPart.length;
-                               for ( i = classIdx + 6; i < firstPartLen; i++ ) {
-                                       if ( firstPart.charAt( i ) === "\"" || firstPart.charAt( i ) === "\'" ) {
-                                               if ( found === false ) {
-                                                       found = true;
-                                               } else {
-                                                       targetIdx = i;
-                                                       break;
+                                               if ( ( icon != false ) && ( a.length == 1 ) ) {
+                                                       item.addClass( "ui-li-has-arrow" );
                                                }
-                                       }
-                               }
-                               result = firstPart.slice( 0, targetIdx ) + " virtualgrid-item" + firstPart.slice( targetIdx, firstPartLen ) + lastPart;
-                       } else {
-                               result = firstPart + " class=\"virtualgrid-item\"" + lastPart;
-                       }
 
-                       if ( !isNaN( posVal ) ) {
-                               result = result.replace( '>', " style=\"" + attrName + ": " + String( posVal ) + "px\">");
-                       }
+                                               a.first().addClass( "ui-link-inherit" );
 
-                       return result;
-               },
+                                               if ( a.length > 1 ) {
+                                                       itemClass += " ui-li-has-alt";
 
-               _increaseRow : function ( num ) {
-                       var self = this,
-                               rotation = self.options.rotation,
-                               $row = null,
-                               headItemIndex = 0,
-                               tailItemIndex = 0,
-                               itemIndex = 0,
-                               size = self._scalableSize,
-                               idx = 0;
+                                                       last = a.last();
+                                                       splittheme = listsplittheme || last.jqmData( "theme" ) || o.splitTheme;
+
+                                                       last.appendTo(item)
+                                                               .attr( "title", last.getEncodedText() )
+                                                               .addClass( "ui-li-link-alt" )
+                                                               .empty()
+                                                               .buttonMarkup({
+                                                                       shadow: false,
+                                                                       corners: false,
+                                                                       theme: itemTheme,
+                                                                       icon: false,
+                                                                       iconpos: false
+                                                               })
+                                                               .find( ".ui-btn-inner" )
+                                                               .append(
+                                                                       $( "<span />" ).buttonMarkup({
+                                                                               shadow: true,
+                                                                               corners: true,
+                                                                               theme: splittheme,
+                                                                               iconpos: "notext",
+                                                                               icon: listspliticon || last.jqmData( "icon" ) || o.splitIcon
+                                                                       })
+                                                               );
+                                               }
+                                       } else if ( item.jqmData( "role" ) === "list-divider" ) {
 
-                       headItemIndex = parseInt( $( self._$view.children().first() ).attr( "row-index" ), 10 ) - 1;
-                       tailItemIndex = parseInt( $( self._$view.children()[self._rowsPerView] ).attr( "row-index" ), 10 ) + 1;
+                                               itemClass += " ui-li-divider ui-btn ui-bar-" + dividertheme;
+                                               item.attr( "role", "heading" );
 
-                       for ( idx = 1 ; idx <= num ; idx++ ) {
-                               if ( tailItemIndex + idx  >= self._totalRowCnt ) {
-                                       $row = $( self._makeRow( headItemIndex ) );
-                                       self._$view.prepend( $row );
-                                       headItemIndex -= 1;
-                               } else {
-                                       $row = $( self._makeRow( tailItemIndex + idx ) );
-                                       self._$view.append( $row );
-                               }
-                               if ( self._direction ) {
-                                       $row.width( self._cellSize );
-                               } else {
-                                       $row.height( self._cellSize );
+                                               //reset counter when a divider heading is encountered
+                                               if ( counter ) {
+                                                       counter = 1;
+                                               }
+
+                                       } else {
+                                               itemClass += " ui-li-static ui-body-" + itemTheme;
+                                       }
                                }
-                       }
-               },
 
-               _decreaseRow : function ( num ) {
-                       var self = this,
-                               idx = 0;
+                               if ( counter && itemClass.indexOf( "ui-li-divider" ) < 0 ) {
+                                       countParent = item.is( ".ui-li-static:first" ) ? item : item.find( ".ui-link-inherit" );
 
-                       for ( idx = 0 ; idx < num ; idx++ ) {
-                               self._$view.children().last().remove();
-                       }
-               },
+                                       countParent.addClass( "ui-li-jsnumbering" )
+                                               .prepend( "<span class='ui-li-dec'>" + (counter++) + ". </span>" );
+                               }
 
-               _replaceRows : function ( curCnt, prevCnt, maxCnt, clipPosition ) {
-                       var self = this,
-                               $rows = self._$view.children(),
-                               prevRowIndex = 0,
-                               rowIndex = 0,
-                               diffRowCnt = 0,
-                               targetCnt = 1,
-                               filterCondition = ( self._filterRatio * self._cellSize ) + self._cellSize,
-                               idx = 0;
+                               item.add( item.children( ".ui-btn-inner" ) ).addClass( itemClass );
 
-                       if ( filterCondition < clipPosition ) {
-                               targetCnt += 1;
+                               self._itemApply( $list, item );
                        }
 
-                       prevRowIndex = parseInt( $( $rows[targetCnt] ).attr( "row-index" ), 10 );
-                       if ( prevRowIndex === 0 ) {
-                               // only top.
-                               rowIndex = maxCnt - targetCnt;
-                       } else {
-                               rowIndex = Math.round( ( prevRowIndex * prevCnt ) / curCnt );
-                               if ( rowIndex + self._rowsPerView >= maxCnt ) {
-                                       // only bottom.
-                                       rowIndex = maxCnt - self._rowsPerView;
-                               }
-                               diffRowCnt = prevRowIndex - rowIndex;
-                               rowIndex -= targetCnt;
-                       }
+                       this._refreshCorners( create );
+               },
 
-                       for ( idx = 0 ; idx < $rows.length ; idx += 1 ) {
-                               self._replaceRow( $rows[idx], circularNum( rowIndex, self._totalRowCnt ) );
-                               rowIndex++;
-                       }
-                       return -diffRowCnt;
+               //create a string for ID/subpage url creation
+               _idStringEscape: function ( str ) {
+                       return str.replace(/\W/g , "-");
                },
 
-               _replaceRow : function ( block, index ) {
-                       var self = this,
-                               tempBlocks = null;
+               // ?
+               // this         virtuallistview object
+               _createSubPages: function () {
+                       var parentList = this.element,
+                               parentPage = parentList.closest( ".ui-page" ),
+                               parentUrl = parentPage.jqmData( "url" ),
+                               parentId = parentUrl || parentPage[ 0 ][ $.expando ],
+                               parentListId = parentList.attr( "id" ),
+                               o = this.options,
+                               dns = "data-" + $.mobile.ns,
+                               self = this,
+                               persistentFooterID = parentPage.find( ":jqmData(role='footer')" ).jqmData( "id" ),
+                               hasSubPages,
+                               newRemove;
 
-                       while ( block.hasChildNodes() ) {
-                               block.removeChild( block.lastChild );
+                       if ( typeof listCountPerPage[ parentId ] === "undefined" ) {
+                               listCountPerPage[ parentId ] = -1;
                        }
 
-                       tempBlocks = self._makeRow( index );
-                       while ( tempBlocks.children.length ) {
-                               block.appendChild( tempBlocks.children[0] );
-                       }
-                       tempBlocks.parentNode.removeChild( tempBlocks );
-               },
+                       parentListId = parentListId || ++listCountPerPage[ parentId ];
 
-               _createElement : function ( tag ) {
-                       var element = document.createElement( tag );
+                       $( parentList.find( "li>ul, li>ol" ).toArray().reverse() ).each(function ( i ) {
+                               var self = this,
+                                       list = $( this ),
+                                       listId = list.attr( "id" ) || parentListId + "-" + i,
+                                       parent = list.parent(),
+                                       nodeEls,
+                                       title = nodeEls.first().getEncodedText(),//url limits to first 30 chars of text
+                                       id = ( parentUrl || "" ) + "&" + $.mobile.subPageUrlKey + "=" + listId,
+                                       theme = list.jqmData( "theme" ) || o.theme,
+                                       countTheme = list.jqmData( "counttheme" ) || parentList.jqmData( "counttheme" ) || o.countTheme,
+                                       newPage,
+                                       anchor;
 
-                       this._fragment.appendChild( element );
-                       return element;
-               },
+                               nodeEls = $( list.prevAll().toArray().reverse() );
+                               nodeEls = nodeEls.length ? nodeEls : $( "<span>" + $.trim( parent.contents()[ 0 ].nodeValue ) + "</span>" );
 
-               _getObjectNames : function ( obj ) {
-                       var properties = [],
-                               name = "";
+                               //define hasSubPages for use in later removal
+                               hasSubPages = true;
 
-                       for ( name in obj ) {
-                               properties.push( name );
-                       }
-                       this._properties = properties;
-               },
+                               newPage = list.detach()
+                                                       .wrap( "<div " + dns + "role='page' " + dns + "url='" + id + "' " + dns + "theme='" + theme + "' " + dns + "count-theme='" + countTheme + "'><div " + dns + "role='content'></div></div>" )
+                                                       .parent()
+                                                               .before( "<div " + dns + "role='header' " + dns + "theme='" + o.headerTheme + "'><div class='ui-title'>" + title + "</div></div>" )
+                                                               .after( persistentFooterID ? $( "<div " + dns + "role='footer' " + dns + "id='" + persistentFooterID + "'>" ) : "" )
+                                                               .parent()
+                                                               .appendTo( $.mobile.pageContainer );
 
-               _getConvertedTmplStr : function ( data ) {
-                       var self = this,
-                               dataProperties = self._properties,
-                               i = 0,
-                               plainMsg,
-                               ret = "";
+                               newPage.page();
 
-                       if ( !data ) {
-                               return ;
-                       }
+                               anchor = parent.find('a:first');
 
-                       plainMsg = self._templateText;
-                       for ( i = 0; i < dataProperties.length; i++ ) {
-                               plainMsg = self._strReplace( plainMsg, "${" + dataProperties[ i ] + "}" , data[ dataProperties[ i ] ] );
-                       }
-                       plainMsg = self._changeImgSrcAriaAttrFromTmpl( plainMsg );
+                               if ( !anchor.length ) {
+                                       anchor = $( "<a/>" ).html( nodeEls || title ).prependTo( parent.empty() );
+                               }
 
-                       return plainMsg;
-               },
+                               anchor.attr( "href", "#" + id );
 
-               _changeImgSrcAriaAttrFromTmpl : function ( plainMsg ) {
-                       var self = this,
-                               ret = "",
-                               targetTagIdx,
-                               beforeTargetTag = "",
-                               afterTargetTag = "",
-                               imgFileName,
-                               imgSrcSlashIdx,
-                               temp,
-                               srcRegExpResult;
+                       }).virtuallistview();
 
-                       temp = plainMsg;
-                       targetTagIdx = temp.indexOf( "$ARIA-IMG-SRC-ALT$" );
-                       while ( targetTagIdx !== -1 ) {
-                               imgFileName = "";
-                               beforeTargetTag = beforeTargetTag + temp.slice( 0, targetTagIdx + 19 );
-                               afterTargetTag = temp.slice( targetTagIdx + 19, temp.length );
-                               srcRegExpResult = afterTargetTag.match( imgTagSrcAttrRE );
-                               if ( srcRegExpResult ) {
-                                       imgSrcSlashIdx = srcRegExpResult[0].lastIndexOf( "/" );
-                                       if ( imgSrcSlashIdx !== -1 ) {
-                                               imgFileName = srcRegExpResult[0].slice( imgSrcSlashIdx + 1, -1 );
+                       // on pagehide, remove any nested pages along with the parent page, as long as they aren't active
+                       // and aren't embedded
+                       if ( hasSubPages &&
+                                               parentPage.is( ":jqmData(external-page='true')" ) &&
+                                               parentPage.data( "page" ).options.domCache === false ) {
+
+                               newRemove = function ( e, ui ) {
+                                       var nextPage = ui.nextPage, npURL;
+
+                                       if ( ui.nextPage ) {
+                                               npURL = nextPage.jqmData( "url" );
+                                               if ( npURL.indexOf( parentUrl + "&" + $.mobile.subPageUrlKey ) !== 0 ) {
+                                                       self.childPages().remove();
+                                                       parentPage.remove();
+                                               }
                                        }
-                               }
-                               beforeTargetTag = beforeTargetTag.replace( "$ARIA-IMG-SRC-ALT$", imgFileName );
-                               temp = afterTargetTag;
-                               targetTagIdx = temp.indexOf( "$ARIA-IMG-SRC-ALT$" );
-                               ret = beforeTargetTag + afterTargetTag;
-                       }
+                               };
 
-                       if ( ret === "" ) {
-                               ret = plainMsg;
+                               // unbind the original page remove and replace with our specialized version
+                               parentPage
+                                       .unbind( "pagehide.remove" )
+                                       .bind( "pagehide.remove", newRemove );
                        }
-
-                       return ret;
                },
 
-               _insertAriaAttrToTmpl : function ( plainMsg ) {
-                       var ret = "",
-                               targetTagIdx,
-                               beforeTargetTag = "",
-                               afterTargetTag = "",
-                               temp;
-
-                       temp = plainMsg.replace( "<div", "<div tabindex=\"0\" aria-selected=\"true\"" );
-                       targetTagIdx = temp.indexOf( "<img" );
-                       if ( targetTagIdx !== -1 ) {
-                               while ( targetTagIdx !== -1 ) {
-                                       beforeTargetTag = beforeTargetTag + temp.slice( 0, targetTagIdx + 4 );
-                                       afterTargetTag = temp.slice( targetTagIdx + 4, temp.length );
-                                       beforeTargetTag = beforeTargetTag + " role=\"img\" alt=\"$ARIA-IMG-SRC-ALT$\"";
-                                       temp = afterTargetTag;
-                                       targetTagIdx = temp.indexOf( "<img" );
-                                       ret = beforeTargetTag + afterTargetTag;
-                               }
-                               temp = ret;
-                               targetTagIdx = temp.indexOf( "<span" );
-                               beforeTargetTag = "";
-                               while ( targetTagIdx !== -1 ) {
-                                       beforeTargetTag = beforeTargetTag + temp.slice( 0, targetTagIdx + 5 );
-                                       afterTargetTag = temp.slice( targetTagIdx + 5, temp.length );
-                                       beforeTargetTag = beforeTargetTag + " aria-hidden=\"true\" tabindex=\"-1\"";
-                                       temp = afterTargetTag;
-                                       targetTagIdx = temp.indexOf( "<span" );
-                                       ret = beforeTargetTag + afterTargetTag;
-                               }
-                       }
-
-                       if ( ret === "" ) {
-                               ret = plainMsg;
-                       }
-
-                       return ret;
-               },
+               // TODO sort out a better way to track sub pages of the virtuallistview this is brittle
+               childPages: function () {
+                       var parentUrl = this.parentPage.jqmData( "url" );
 
-               _strReplace : function ( plainMsg, stringToFind, stringToReplace ) {
-                       var temp = plainMsg,
-                               index = plainMsg.indexOf( stringToFind );
-                       while ( index !== -1 ) {
-                               temp = temp.replace( stringToFind, stringToReplace );
-                               index = temp.indexOf( stringToFind );
-                       }
-                       return temp;
+                       return $( ":jqmData(url^='" +  parentUrl + "&" + $.mobile.subPageUrlKey + "')" );
                }
+       });
 
-       } );
-
+       //auto self-init widgets
        $( document ).bind( "pagecreate create", function ( e ) {
-               $( ":jqmData(role='virtualgrid')" ).virtualgrid();
-       } );
-} ( jQuery, window, document ) );
+               $( $.tizen.virtuallistview.prototype.options.initSelector, e.target ).virtuallistview();
+       });
+
+} ( jQuery ) );
 
 
 
@@ -8764,7 +8593,7 @@ jQuery.extend(jQuery.mobile.tizen, {
  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
+ * copy of this software and associated documentation files (the "Software" ),
  * to deal in the Software without restriction, including without limitation
  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  * and/or sell copies of the Software, and to permit persons to whom the
@@ -8782,973 +8611,689 @@ jQuery.extend(jQuery.mobile.tizen, {
  * DEALINGS IN THE SOFTWARE.
  * ***************************************************************************
  *
- *     Author: Wongi Lee <wongi11.lee@samsung.com>
- *             Youmin Ha <youmin.ha@samsung.com>
+ *     Author: Minkyu Kang <mk7.kang@samsung.com>
+ *     Author: Koeun Choi <koeun.choi@samsung.com>
  */
 
-/**
- * Virtual List Widget for unlimited data.
- * To support more then 1,000 items, special list widget developed. 
- * Fast initialize and light DOM tree.
- * DB connection and works like DB cursor.
- * 
- * HTML Attributes:
+/*
+ * Progress widget
  *
- *             data-role:      virtuallistview
- *             data-template : jQuery.template ID that populate into virtual list 
- *             data-row : Optional. Set number of <li> elements that are used for data handling. 
- *             
- *             ID : <UL> element that has "data-role=virtuallist" must have ID attribute.
+ * HTML Attributes
  *
- * * APIs:
+ *  data-role: set to 'progress'.
+ *  data-style: 'circle' or 'pending'.
  *
- *             create ( {
- *                             itemData: function ( idx ) { return json_obj; },
- *                             numItemData: number or function () { return number; },
- *                             cacheItemData: function ( minIdx, maxIdx ) {}
- *                             } )
- *                     : Create a virtuallist widget. At this moment, _create method is called.
- *                     args : A collection of options
- *                             itemData: A function that returns JSON object for given index. Mandatory.
- *                             numItemData: Total number of itemData. Mandatory.
- *                             cacheItemData: Virtuallist will ask itemData between minIdx and maxIdx.
- *                                            Developers can implement this function for preparing data.
- *                                            Optional.
+ * APIs
  *
- * Events:
+ *  show(): show the progress.
+ *  hide(): hide the progress.
+ *  running(boolean): start or stop the running.
  *
- *             touchstart : Temporary preventDefault applied on touchstart event to avoid broken screen.
+ * Events
  *
- * Examples:
+ *  N/A
  *
- *             <script id="tmp-3-2-7" type="text/x-jquery-tmpl">
- *                     <li class="ui-li-3-2-7">
- *                             <span class="ui-li-text-main">${NAME}</span>
- *                             <img src="00_winset_icon_favorite_on.png" class="ui-li-icon-sub">
- *                             <span class="ui-li-text-sub">${ACTIVE}</span>
- *                             <span class="ui-li-text-sub2">${FROM}</span>
- *                     </li>
- *             </script>
+ * Examples
  *
- *             <ul id="virtuallist-normal_3_2_7_ul" data-role="virtuallistview" data-template="tmp-3-2-7" data-dbtable="JSON_DATA" data-row="100">
- *             </ul>
+ * <li data-role="list-divider">Progress Pending</li>
+ * <li>
+ *     <div data-role="progress" data-style="pending" id="pending"></div>
+ * </li>
+ * <li data-role="list-divider">Progress ~ing</li>
+ * <li>
+ *     <div data-role="progress" data-style="circle" id="progress"></div>Loading..
+ * </li>
+ *
+ * $("#pending").progress( "running", true );
+ * $("#progress").progress( "running", true );
  *
  */
 
 /**
-       @class VirtualList
-       In the Web environment, it is challenging to display a large amount of data in a list, such as displaying a contact list of over 1000 list items. It takes time to display the entire list in HTML and the DOM manipulation is complex.
-
-       The virtual list widget is used to display a list of unlimited data elements on the screen for better performance. This widget provides easy access to databases to retrieve and display data. Virtual lists are based on the jQuery.template plugin as described in the jQuery documentation for jQuery.template plugin.
-
-       To add a virtual list widget to the application, use the following code:
+       @class Progress
+       The progress widget shows that an operation is in progress. <br/>To add a progress widget to the application, use the following code:
 
-               <script id="tmp-3-2-7" type="text/x-jquery-tmpl">
-                       <li class="ui-li-3-2-7">
-                               <span class="ui-li-text-main">${NAME}</span>
-                               <img src="00_winset_icon_favorite_on.png" class="ui-li-icon-sub"/>
-                               <span class="ui-li-text-sub">${ACTIVE}</span>
-                               <span class="ui-li-text-sub2">${FROM}</span>
-                       </li>
-               </script>
-               <ul id="vlist" data-role="virtuallistview" data-template="tmp-3-2-7" data-dbtable="JSON_DATA" data-row="100"></ul>
+               <div data-role="progress" data-style="circle"></div>
 */
 /**
-       @property {String} data-role
-       Creates the virtual list view. The value must be set to virtuallistview.
-       Only the &gt;ul&lt; element, which a id attribute defined, supports this option. Also, the vlLoadSuccess class attribute must be defined in the &gt;ul&lt; element to ensure that loading data from the database is complete.
+       @property {String} data-style
+       Sets the style of the progress widget. The style options are pending (pending progress style) and circle (circular progress status style).
 */
 /**
-       @property {String} data-template
-       Defines the jQuery.template element ID.
-       The jQuery.template must be defined. The template style can use rem units to support scalability.
+       @method running
+       The running method is used to set the current running state of the pending or circular progress widget:
+
+               <div id="foo" data-role="progress" data-style="pending"></div>
+               $("#foo").progress("running", true);
 */
 /**
-       @property {Number} data-row
-       Defines the number of virtual list child elements.
-       The minimum value is 20 and the default value is 100. As the value gets higher, the loading time increases while the system performance improves. So you need to pick a value that provides the best performance without excessive loading time.
+       @method show
+       The show method is used to show the pending or circular progress widget:
+
+               <div id="foo" data-role="progress" data-style="pending"></div>
+               $("#foo").progress("show");
 */
 /**
-       @method create
-       @param {function} itemData(index)
-       : function itemData(index) returns the JSON object matched with the given index. The index value is between 0 and numItemData-1.
-       @param {Number} numItemData
-       : number numItemData or function numItemData() defines or returns a static number of items.
-       @param {function} cacheItemData(minIndex, maxIndex)
-       : function cacheItemData(minIndex, maxIndex) prepares the JSON data. This method is called before calling the itemData() method with index values between minIndex and maxIndex.
-*/
-
-(function ( $, undefined ) {
+       @method hide
+       The show method is used to hide the pending or circular progress widget:
 
-       /* Code for Virtual List Demo */
-       var listCountPerPage = {},      /* Keeps track of the number of lists per page UID. This allows support for multiple nested list in the same page. https://github.com/jquery/jquery-mobile/issues/1617 */
-               _NO_SCROLL = 0,                                 /* ENUM */
-               _SCROLL_DOWN = 1,                               /* ENUM */
-               _SCROLL_UP = -1;                                        /* ENUM */
+               <div id="foo" data-role="progress" data-style="pending"></div>
+               $("#foo").progress("hide");
+*/
 
-       $.widget( "tizen.virtuallistview", $.mobile.widget, {
+(function ( $, window, undefined ) {
+       $.widget( "tizen.progress", $.mobile.widget, {
                options: {
-                       theme: "s",
-                       countTheme: "s",
-                       headerTheme: "s",
-                       dividerTheme: "s",
-                       splitIcon: "arrow-r",
-                       splitTheme: "s",
-                       inset: false,
-                       id:     "",                                     /* Virtual list UL elemet's ID */
-                       childSelector: " li",   /* To support swipe list */
-                       dbtable: "",
-                       template : "",
-                       dbkey: false,                   /* Data's unique Key */
-                       scrollview: false,
-                       row: 100,
-                       page_buf: 30,
-                       initSelector: ":jqmData(role='virtuallistview')"
+                       style: "circle",
+                       running: false
                },
 
-               _stylerMouseUp: function () {
-                       $( this ).addClass( "ui-btn-up-s" );
-                       $( this ).removeClass( "ui-btn-down-s" );
+               show: function () {
+                       $( this.element ).show();
                },
 
-               _stylerMouseDown: function () {
-                       $( this ).addClass( "ui-btn-down-s" );
-                       $( this ).removeClass( "ui-btn-up-s" );
+               hide: function () {
+                       $( this.element ).hide();
                },
 
-               _stylerMouseOver: function () {
-                       $( this ).toggleClass( "ui-btn-hover-s" );
-               },
+               _start: function () {
+                       if ( !this.init ) {
+                               $( this.element ).append( this.html );
+                               this.init = true;
+                       }
 
-               _stylerMouseOut: function () {
-                       $( this ).toggleClass( "ui-btn-hover-s" );
-                       $( this ).addClass( "ui-btn-up-s" );
-                       $( this ).removeClass( "ui-btn-down-s" );
+                       this.show();
+
+                       $( this.element )
+                               .find( ".ui-progress-" + this.options.style )
+                               .addClass( this.runningClass );
                },
 
-               // ?
-               // this         virtuallistview object
-               // @param[in]   template        template name(string)
-               _pushData: function ( template ) {
-                       var o = this.options,
-                               i,
-                               myTemplate = $( "#" + template ),       // Get template object
-                               // NOTE: o.row = # of rows handled at once. Default value is 100.
-                               lastIndex = ( o.row > this._numItemData ? this._numItemData : o.row ),  // last index of handled data
-                               htmlData;
+               _stop: function () {
+                       $( this.element )
+                               .find( ".ui-progress-" + this.options.style )
+                               .removeClass( this.runningClass );
+               },
 
-                       for ( i = 0; i < lastIndex; i++ ) {
-                               htmlData = myTemplate.tmpl( this._itemData( i ) );      // Make rows with template,
-                               $( o.id ).append( $( htmlData ).attr( 'id', o.itemIDPrefix + i ) );     // and append it to the vlist object
+               running: function ( running ) {
+                       if ( running === undefined ) {
+                               return this.options.running;
                        }
 
-                       // After pushing data re-style virtuallist widget
-                       $( o.id ).trigger( "create" );
+                       this._setOption( "running", running );
                },
 
-               // Set children <li> elements' position
-               //
-               // this: virtuallist element
-               // event: virtuallistview.options
-               //              TODO: Why this arg name is 'event'? Not resonable.
-               //              (this function is not called with event element as args!)
-               _reposition: function ( event ) {
-                       var o,
-                               t = this,
-                               padding,
-                               margin;
+               _setOption: function ( key, value ) {
+                       if ( key === "running" ) {
+                               if ( typeof value !== "boolean" ) {
+                                       window.alert( "running value MUST be boolean type!" );
+                                       return;
+                               }
 
-                       if ( event.data ) {
-                               o = event.data;
-                       } else {
-                               o = event;
+                               this.options.running = value;
+                               this._refresh();
                        }
-                       if ( $( o.id + o.childSelector ).size() > 0 ) { // $("#vlistid li")
-                               // first child's top position
-                               // NOTE: the first element may not be '0'!!!
-                               t._title_h = $( o.id + o.childSelector + ':first' ).position().top;
-                               // first child's outer height (TODO: reuse selected items)
-                               t._line_h = $( o.id + o.childSelector + ':first' ).outerHeight();
-
-                               // container(vlist element)'s innerwidth
-                               t._container_w = $( o.id ).innerWidth();
-
-                               // get sum of container's left/right padding
-                               padding = parseInt( $( o.id + o.childSelector ).css( "padding-left" ), 10 )
-                                       + parseInt( $( o.id + o.childSelector ).css( "padding-right" ), 10 );
+               },
 
-                               // Add CSS to all <li> elements
-                               //      * absolute position
-                               //      * btn-up
-                               //      * mouse up/down/over/out styles
-                               $( o.id + ">" + o.childSelector )
-                                       .addClass( "position_absolute" )
-                                       .addClass( "ui-btn-up-s" )
-                                       .bind( "mouseup", t._stylerMouseUp )
-                                       .bind( "mousedown", t._stylerMouseDown )
-                                       .bind( "mouseover", t._stylerMouseOver )
-                                       .bind( "mouseout", t._stylerMouseOut );
+               _refresh: function () {
+                       if ( this.options.running ) {
+                               this._start();
+                       } else {
+                               this._stop();
                        }
+               },
 
-                       // Set absolute top/left position of each <li>
-                       $( o.id + ">" + o.childSelector ).each( function ( index ) {
-                               margin = parseInt( $( this ).css( "margin-left" ), 10 )
-                                       + parseInt( $( this ).css( "margin-right" ), 10 );
+               _create: function () {
+                       var self = this,
+                               element = this.element,
+                               style = element.jqmData( "style" ),
+                               _html,
+                               runningClass;
 
-                               $( this ).css( "top", t._title_h + t._line_h * index + 'px' )
-                                       .css( "width", t._container_w - padding - margin );
-                       } );
+                       if ( style ) {
+                               this.options.style = style;
+                       } else {
+                               style = this.options.style;
+                       }
 
-                       // Set Max Listview Height
-                       $( o.id ).height( t._numItemData * t._line_h );
-               },
+                       if ( style == "circle" ) {
+                               $( this.element ).addClass("ui-progress-container-circle");
 
-               _resize: function ( event ) {
-                       var o,
-                               t = this,
-                               padding,
-                               margin;
+                               _html = '<div class="ui-progress-circle"></div>';
+                       } else if ( style === "pending" ) {
+                               $( this.element ).addClass("ui-progressbar");
 
-                       if ( event.data ) {
-                               o = event.data;
-                       } else {
-                               o = event;
+                               _html = '<div class="ui-progressbar-bg">' +
+                                               '<div class="ui-progress-pending"></div>' +
+                                       '</div>';
                        }
 
-                       t._container_w = $( o.id ).innerWidth();
+                       this.html = $( _html );
 
-                       padding = parseInt( $( o.id + o.childSelector ).css( "padding-left" ), 10 )
-                               + parseInt( $( o.id + o.childSelector ).css( "padding-right" ), 10 );
+                       runningClass = "ui-progress-" + style + "-running";
 
-                       $( o.id + o.childSelector ).each( function (index) {
-                               margin = parseInt( $( this ).css( "margin-left" ), 10 )
-                                       + parseInt( $( this ).css( "margin-right" ), 10 );
-                               $( this ).css( "width", t._container_w - padding - margin );
+                       $.extend( this, {
+                               init: false,
+                               runningClass: runningClass
                        } );
-               },
-
-               // New scrollmove function supporting scrollTo
-               _scrollmove: function ( ev ) {
-                       var t = ev.data,        // vlist (JQM object)
-                               o = t.options,  // options
-                               prevTopBufLen = t._num_top_items,       // Previous(remembered) top buf length
-                               timerInterval = 100,
-                               i,
-                               _scrollView,
-                               _normalScroll;
 
-                       _scrollView = {
-                               viewTop: function ( ) {
-                                       var sv = $( o.id ).parentsUntil( ".ui-page" ).find( ".ui-scrollview-view" ),
-                                               svTrans = sv.css( "-webkit-transform" ),
-                                               svTransVal = "0,0,0,0,0,0";
-                                       if ( svTrans ) {
-                                               svTransVal = svTrans.replace( /matrix\s*\((.*)\)/, "$1" );      // matrix(a,c,b,d,tx,ty)
-                                       }
-                                       return - parseInt( svTransVal.split(',')[5], 10 );
-                               }
-                       };
-                       _normalScroll = {
-                               viewTop: function ( ) {
-                                       return $( window ).scrollTop( );        // TODO: - _line_h?
-                               }
-                       };
-                       // Get current view top position
-                       function viewTop ( ) {
-                               return o.scrollview ? _scrollView.viewTop() : _normalScroll.viewTop();
-                       }
-                       // log function for debug
-                       function log ( msg ) {
-                               var debug = false;
-                               if ( debug ) {
-                                       console.log( ">>virtualllist: " + msg );
-                               }
+                       if ( style === "pending" ) {
+                               $( this.element ).append( this.html );
+                               this.init = true;
                        }
 
-                       // Timer interval function
-                       // @param[in]   vl      virtuallist object (JQM object)
-                       function timerMove ( vl, undefined ) {
-                               var cy,                         // current y position
-                                       cti,            // current top idx
-                                       cbi,            // current bottom idx
-                                       oti = vl._first_index,  // old top idx
-                                       obi = vl._last_index,   // old botton idx
-                                       dti,                    // delta of top idx
-                                       fromIdx,
-                                       toIdx,  // index range to be moved
-                                       delta,                  // moveItem delta
-                                       rowLen = vl.options.row,        // max. # of items handled at once
-                                       bufSize,                // top/bottom buffer size. unit: # of items
-                                       i;
+                       this._refresh();
+               }
+       } ); /* End of widget */
 
-                               // subroutine: Move itemContents in i2 into i1
-                               function moveItemContents( vl, i1, i2 ) {
-                                       // TODO: Find a efficient way to replace data!
-                                       // Assumption: i1 and i2 has same children.
-                                       var NODETYPE = { ELEMENT_NODE: 1, TEXT_NODE: 3 },
-                                               c1,     // child item 1 (old)
-                                               c2,     // child item 2 (new)
-                                               newText,
-                                               newImg,
-                                               i;
+       $( document ).bind( "pagecreate create", function ( e ) {
+               $( e.target ).find( ":jqmData(role='progress')" ).progress();
+       } );
+}( jQuery, this ));
 
-                                       $( i1 ).find( ".ui-li-text-main", ".ui-li-text-sub", ".ui-li-text-sub2", "ui-btn-text" ).each( function ( index ) {
-                                               c1 = $( this );
-                                               newText = $( i2 ).find( ".ui-li-text-main", ".ui-li-text-sub", "ui-btn-text" ).eq( index ).text();
 
-                                               $( c1 ).contents().filter( function () {
-                                                       return ( this.nodeType == NODETYPE.TEXT_NODE );
-                                               } ).get( 0 ).data = newText;
-                                       } );
 
-                                       $( i1 ).find( "img" ).each( function ( imgIdx ) {
-                                               var c1 = $( this );
-                                               newImg = $( i2 ).find( "img" ).eq( imgIdx ).attr( "src" );
+/**
+ * @class core
+ * loader.js
+ *
+ * Youmin Ha <youmin.ha@samsung.com>
+ *
+ *
+ */
+/*
+       Web UI scaling concept in Tizen Web UI
 
-                                               $( c1 ).attr( "src", newImg );
-                                       } );
+Generally, web applications must be designed to be showed acceptable on various size and resolution of screens, and web winsets have to be scaled well.  Tizen Web UI Framework supports various viewport settings, and Tizen Web UI widgets are designed to be scalable on various screen sizes.  In order to make web applications scalable on many devices which have different screen size, it is necessary to understand how mobile web browsers deal with screen resolution, and how Tizen Web UI Framework supports scaling for web applications.
 
-                                       $( i1 ).removeData( );  // Clear old data
-                               }
 
-                               // subroutine: Move item
-                               function moveItem( vl, fromIdx, toIdx ) {
-                                       var itemData,   // data from itemData()
-                                               item,           // item element
-                                               newItem,        // new item element
-                                               tmpl;           // template
+* Viewport on mobile web browser
 
-                                       log( ">> move item: " + fromIdx + " --> " + toIdx );
+Viewport is an area showing web content on the browser.  Unlike desktop browsers, mobile browsers support logical viewport seting, which means that application can set viewport width/height and zoom level by itself.
+The very important thing that to be remembered is that the viewport resolution in pixel is 'Logical', not physical.  For example, if the viewport width is set to 480 on a mobile device having 720px screen width, the viewport width is considered to 480px logically. All elements put on right side from 480px horizontal position will not be shown on the viewport.
+Most mobile browsers set viewport with given content attribute with <meta name="viewport" content="..."> tag in <head> section in the application source html, whereas desktop browsers ignore the tag.
+Detailed usage of viewport meta tag is found in here: http://www.w3.org/TR/mwabp/#bp-viewport
 
-                                       // Find current item
-                                       item = $( '#' + vl.options.itemIDPrefix + fromIdx );    // TODO: refactor ID generation!
-                                       if ( ! item || ! item.length ) {
-                                               return false;
-                                       }
 
-                                       // Get new item
-                                       tmpl = $( "#" + vl.options.template );
-                                       if ( tmpl ) {
-                                               newItem = tmpl.tmpl( vl._itemData( toIdx ) );
+* Viewport setting by application developers
 
-                                               // TODO: Consider touch block while moving?
+When developers write <meta name="viewport" content="..."> in the <head> section of the web application HTML file, Tizen Web UI Framework does not add another viewport meta tag, nor modify developer-defined viewport.
 
-                                               // Move item contents
-                                               moveItemContents( vl, item, newItem );
 
-                                               // clean up temporary item
-                                               newItem.remove();
-                                       }
+* Automatic viewport setting by Tizen Web UI Framework
 
-                                       // Move position, and set id
-                                       item.css( 'top', toIdx * vl._line_h )
-                                               .attr( 'id' , vl.options.itemIDPrefix + toIdx );        // TODO: refactor ID generation!
+If developers do not give a viewport meta tag, Tizen Web UI Framework automatically add a viewport meta tag with default viewport setting.
 
-                                       // TODO: Apply jqmdata? check following old code;
-                                       // $( oldItem ).removeData( );  // Clear old data
-                                       // if (key) { $( oldItem ).data( key, $( newItem ).data( key ) ); }
 
-                                       return true;
-                               }
+* Portrait/landscape mode
 
 
-                               // Get current view position
-                               cy = viewTop();
+* Tizen Web UI widgets scaling
 
-                               // Calculate bufSize: rowLen / 3
-                               // NOTE: Assumption: total row length = visible items * 3 (upper+visible+lower)
-                               bufSize = Math.ceil( rowLen / 3 );
 
-                               // Calculate current top/bottom index (to be applied)
-                               // top index = current position / line height
-                               cti = Math.floor( cy / vl._line_h ) - bufSize;  // TODO: consider buffer!
-                               cbi = cti + rowLen - 1;
+ */
+( function ($, Globalize, window, undefined) {
 
-                               if ( cti < 0 ) {                // Top boundary check
-                                       cbi += ( - cti );
-                                       cti = 0;
-                               } else if ( cbi > ( vl._numItemData - 1 ) ) {           // Bottom boundary check
-                                       cti -= ( cbi - ( vl._numItemData - 1 ) );
-                                       cbi = ( vl._numItemData - 1 );
-                               }
+       var tizen = {
+               libFileName : "tizen-web-ui-fw(.min)?.js",
 
-                               // Calculate dti
-                               dti = cti - oti;
-                               log( "cy=" + cy + ", oti=" + oti + ", obi=" + obi + ", cti=" + cti + ", cbi=" + cbi + ", dti=" + dti );
+               frameworkData : {
+                       rootDir: '/usr/lib/tizen-web-ui-fw',
+                       version: '0.1',
+                       theme: "tizen-white",
+                       viewportWidth: "device-width",
+                       viewportScale: false,
 
-                               // switch: dti = 0 --> timer stop condition: delta=0 or scrollstop event comes. END.
-                               if ( 0 == dti ) {
-                                       // Check timer runtime
-                                       vl.timerStillCount += 1;
-                                       if ( vl.timerStillCount < 12 ) {        // check count ( TODO: test and adjust )
-                                               log("dti=0 " + vl.timerStillCount + " times");
-                                               vl.timerMoveID = setTimeout( timerMove, timerInterval, vl );    // run once more
-                                               return;
-                                       }
+                       defaultFontSize: 22,
+                       minified: false,
 
-                                       log("dti=0 " + vl.timerStillCount + " times. End timer.");
-                                       vl.timerStillCount = 0;
-                                       // Stop timer
-                                       if ( vl.timerMoveID ) {
-                                               clearTimeout( vl.timerMoveID );
-                                               vl.timerMoveID = null;
-                                       }
-                               } else {
-                                       // switch: dti >= # of max elements --> total replace.
-                                       vl.timerStillCount = 0;         // Reset still counter
+                       debug: false
+               },
 
-                                       if ( Math.abs( dti ) >= rowLen ) {
-                                               fromIdx = oti;
-                                               toIdx = obi;
-                                               delta = dti;
-                                               log( ">>> WHOLE CHANGE! delta=" + delta );
-                                       } else {
-                                               // switch: dti < # of max elements --> move t2b or b2t until new top/bottom idx is covered
-                                               if ( dti > 0 ) {
-                                                       fromIdx = oti;
-                                                       toIdx = oti + dti - 1;
-                                                       delta = rowLen;
+               log : {
+                       debug : function ( msg ) {
+                               if ( tizen.frameworkData.debug ) {
+                                       console.log( msg );
+                               }
+                       },
+                       warn : function ( msg ) {
+                               console.warn( msg );
+                       },
+                       error : function ( msg ) {
+                               console.error( msg );
+                       },
+                       alert : function ( msg ) {
+                               window.alert( msg );
+                       }
+               },
+
+               util : {
+
+                       loadScriptSync : function ( scriptPath, successCB, errorCB ) {
+                               $.ajax( {
+                                       url: scriptPath,
+                                       dataType: 'script',
+                                       async: false,
+                                       crossDomain: false,
+                                       success: successCB,
+                                       error: function ( jqXHR, textStatus, errorThrown ) {
+                                               if ( errorCB ) {
+                                                       errorCB( jqXHR, textStatus, errorThrown );
                                                } else {
-                                                       fromIdx = obi + dti + 1;        // dti < 0
-                                                       toIdx = obi;
-                                                       delta = -rowLen;
+                                                       var ignoreStatusList = [ 404 ],  // 404: not found
+                                                               errmsg = ( 'Error while loading ' + scriptPath + '\n' + jqXHR.status + ':' + jqXHR.statusText );
+                                                       if ( -1 == $.inArray( jqXHR.status, ignoreStatusList ) ) {
+                                                               tizen.log.alert( errmsg );
+                                                       } else {
+                                                               tizen.log.warn( errmsg );
+                                                       }
                                                }
-                                               log( ">>> partial change. delta=" + delta );
                                        }
+                               } );
+                       },
+                       isMobileBrowser: function ( ) {
+                               var mobileIdx = window.navigator.appVersion.indexOf("Mobile"),
+                                       isMobile = -1 < mobileIdx;
+                               return isMobile;
+                       }
+               },
 
-                                       // Move items
-                                       for ( i = fromIdx; i <= toIdx; i++ ) {
-                                               moveItem( vl, i, i + delta );           // Change data and position
+               css : {
+                       cacheBust: ( document.location.href.match( /debug=true/ ) ) ?
+                                       '?cacheBust=' + ( new Date( ) ).getTime( ) :
+                                       '',
+                       addElementToHead : function ( elem ) {
+                               var head = document.getElementsByTagName( 'head' )[0];
+                               if ( head ) {
+                                       $( head ).prepend( elem );
+                               }
+                       },
+                       makeLink : function ( href ) {
+                               var cssLink = document.createElement( 'link' );
+                               cssLink.setAttribute( 'rel', 'stylesheet' );
+                               cssLink.setAttribute( 'href', href );
+                               cssLink.setAttribute( 'name', 'tizen-theme' );
+                               return cssLink;
+                       },
+                       load: function ( path ) {
+                               var head = document.getElementsByTagName( 'head' )[0],
+                                       cssLinks = head.getElementsByTagName( 'link' ),
+                                       idx,
+                                       l = null;
+                               // Find css link element
+                               for ( idx = 0; idx < cssLinks.length; idx++ ) {
+                                       if ( cssLinks[idx].getAttribute( 'rel' ) != "stylesheet" ) {
+                                               continue;
+                                       }
+                                       if ( cssLinks[idx].getAttribute( 'name' ) == "tizen-theme"
+                                                       || cssLinks[idx].getAttribute( 'href' ) == path ) {
+                                               l = cssLinks[idx];
+                                               break;
                                        }
-
-                                       // Store current top/bottom idx into vl
-                                       vl._first_index = cti;
-                                       vl._last_index = cbi;
-
-                                       // Register timer to check again
-                                       vl.timerMoveID = setTimeout( timerMove, timerInterval, vl );
                                }
-                               return; // End of function
+                               if ( l ) {      // Found the link element!
+                                       if ( l.getAttribute( 'href' ) == path ) {
+                                               tizen.log.warn( "Theme is already loaded. Skip theme loading in the framework." );
+                                       } else {
+                                               l.setAttribute( 'href', path );
+                                       }
+                               } else {
+                                       this.addElementToHead( this.makeLink( path ) );
+                               }
                        }
+               },
 
-                       // ==== function start ====
+               getParams: function ( ) {
+                       /* Get data-* params from <script> tag, and set tizen.frameworkData.* values
+                        * Returns true if proper <script> tag is found, or false if not.
+                        */
+                       // Find current <script> tag element
+                       var scriptElems = document.getElementsByTagName( 'script' ),
+                               val = null,
+                               foundScriptTag = false,
+                               idx,
+                               elem,
+                               src,
+                               tokens,
+                               version_idx;
 
-                       t.timerStillCount = 0;  // Count do-nothing time.       For behavior tuning.
+                       function getTizenTheme( ) {
+                               var t = navigator.theme ? navigator.theme.split( ':' )[0] : null;
+                               if ( t ) {
+                                       t = t.replace('-hd', '');
+                                       if ( ! t.match( /^tizen-/ ) ) {
+                                               t = 'tizen-' + t;
+                                       }
+                               }
+                               return t;
+                       }
 
-                       // If a timer function is alive, clear it
-                       if ( t.timerMoveID ) {
-                               clearTimeout( t.timerMoveID );
-                               t.timerMoveID = null;
+                       for ( idx in scriptElems ) {
+                               elem = scriptElems[idx];
+                               src = elem.src ? elem.getAttribute( 'src' ) : undefined;
+                               if (src && src.match( this.libFileName )) {
+                                       // Set framework data, only when they are given.
+                                       tokens = src.split(/[\/\\]/);
+                                       version_idx = -3;
+                                       this.frameworkData.rootDir = ( elem.getAttribute( 'data-framework-root' )
+                                               || tokens.slice( 0, tokens.length + version_idx ).join( '/' )
+                                               || this.frameworkData.rootDir ).replace( /^file:(\/\/)?/, '' );
+                                       this.frameworkData.version = elem.getAttribute( 'data-framework-version' )
+                                               || tokens[ tokens.length + version_idx ]
+                                               || this.frameworkData.version;
+                                       this.frameworkData.theme = elem.getAttribute( 'data-framework-theme' )
+                                               || getTizenTheme( )
+                                               || this.frameworkData.theme;
+                                       this.frameworkData.viewportWidth = elem.getAttribute( 'data-framework-viewport-width' )
+                                               || this.frameworkData.viewportWidth;
+                                       this.frameworkData.viewportScale =
+                                               "true" === elem.getAttribute( 'data-framework-viewport-scale' ) ? true
+                                               : this.frameworkData.viewportScale;
+                                       this.frameworkData.minified = src.search(/\.min\.js$/) > -1 ? true : false;
+                                       this.frameworkData.debug = "true" === elem.getAttribute( 'data-framework-debug' ) ? true
+                                               : this.frameworkData.debug;
+                                       foundScriptTag = true;
+                                       break;
+                               }
                        }
-                       // run TimerMove()
-                       timerMove( t );
+                       return foundScriptTag;
                },
 
-               _recreate: function ( newArray ) {
-                       var t = this,
-                               o = this.options;
-
-                       $( o.id ).empty();
-
-                       t._numItemData = newArray.length;
-                       t._direction = _NO_SCROLL;
-                       t._first_index = 0;
-                       t._last_index = o.row - 1;
-
-                       t._pushData( o.template );
+               loadTheme: function ( theme ) {
+                       var themePath,
+                               cssPath,
+                               jsPath;
 
-                       if (o.childSelector == " ul" ) {
-                               $( o.id + " ul" ).swipelist();
+                       if ( ! theme ) {
+                               theme = tizen.frameworkData.theme;
                        }
+                       themePath = [
+                               tizen.frameworkData.rootDir,
+                               tizen.frameworkData.version,
+                               'themes',
+                               theme
+                       ].join( '/' );
 
-                       $( o.id ).virtuallistview();
-
-                       t.refresh( true );
+                       jsPath = [ themePath, 'theme.js' ].join( '/' );
 
-                       t._reposition( o );
+                       if ( tizen.frameworkData.minified ) {
+                               cssPath = [themePath, 'tizen-web-ui-fw-theme.min.css'].join( '/' );
+                       } else {
+                               cssPath = [themePath, 'tizen-web-ui-fw-theme.css'].join( '/' );
+                       }
+                       tizen.css.load( cssPath );
+                       tizen.util.loadScriptSync( jsPath );
                },
 
-               // Init virtuallistview
-               // this         virtuallistview object
-               _initList: function () {
-                       var t = this,
-                               o = this.options;
-
-                       /* After AJAX loading success */
-
-                       // Put initial <li> elements
-                       t._pushData( o.template );
-
-                       // find a parent page, and run _reposition() at 'pageshow' event
-                       // TODO: Consider replace parentsUntil().parent() to parent('.ui-page') ???
-                       $( o.id ).parentsUntil( ".ui-page" ).parent().one( "pageshow", function () {
-                               setTimeout( function () {
-                                       t._reposition( o );
-                               }, 0);
-                       });
-
-                       // Bind _scrollmove() at 'scrollstart.virtuallist' event
-                       $( document ).bind( "scrollstart.virtuallist scrollstop.vrituallist", t, t._scrollmove );
-
-                       // Bind _resize() at 'resize.virtuallist'
-                       $( window ).bind( "resize.virtuallist", t._resize );
+               /** Load Globalize culture file, and set default culture.
+                *  @param[in]  language  (optional) Language code. ex) en-US, en, ko-KR, ko
+                *                        If language is not given, read language from html 'lang' attribute, 
+                *                        or from system setting.
+                *  @param[in]  cultureDic (optional) Dictionary having language code->
+                */
+               loadGlobalizeCulture: function ( language, cultureDic ) {
+                       var self = this,
+                               cFPath,
+                               lang,
+                               mockJSXHR;
 
-                       // when ul is a childselector, assume that this is also a swipelist,
-                       // and run swipelist constructor
-                       if ( o.childSelector == " ul" ) {
-                               $( o.id + " ul" ).swipelist();
+                       function getLang ( language ) {
+                               var lang = language
+                                               || $( 'html' ).attr( 'lang' )
+                                               || window.navigator.language.split( '.' )[0]    // Webkit, Safari + workaround for Tizen
+                                               || window.navigator.userLanguage        // IE
+                                               || 'en',
+                                       countryCode = null,
+                                       countryCodeIdx = lang.lastIndexOf('-'),
+                                       ignoreCodes = ['Cyrl', 'Latn', 'Mong']; // Not country code!
+                               if ( countryCodeIdx != -1 ) {   // Found country code!
+                                       countryCode = lang.substr( countryCodeIdx + 1 );
+                                       if ( ignoreCodes.join( '-' ).indexOf( countryCode ) < 0 ) {
+                                               // countryCode is not found from ignoreCodes.
+                                               // Make countryCode to uppercase.
+                                               lang = [ lang.substr( 0, countryCodeIdx ), countryCode.toUpperCase( ) ].join( '-' );
+                                       }
+                               }
+                               // NOTE: 'en' to 'en-US', because globalize has no 'en' culture file.
+                               lang = lang == 'en' ? 'en-US' : lang;
+                               return lang;
                        }
 
-                       t.refresh( true );
-               },
-
-               create: function () {
-                       var o = this.options;
-
-                       /* external API for AJAX callback */
-                       this._create.apply( this, arguments );
-
-                       // TODO: remove this line? _initList() calls reposition...
-                       this._reposition( o );
-               },
-
-               _create: function ( args ) {
-                       // Extend instance variables
-                       $.extend( this, {
-                               _itemData : function ( idx ) { return null; },
-                               _numItemData : 0,
-                               _cacheItemData : function ( minIdx, maxIdx ) { },
-                               _title_h : 0,
-                               _container_w : 0,
-                               _minimum_row : 100,
-                               _direction : _NO_SCROLL,
-                               _first_index : 0,
-                               _last_index : 0,
-                               _num_top_items : 0      // By scroll move, number of hidden elements.
-                       } );
-
-                       // local variables
-                       var t = this,
-                               o = this.options,
-                               $el = this.element,
-                               shortcutsContainer = $('<div class="ui-virtuallist"/>'),
-                               shortcutsList = $('<ul></ul>'),
-                               dividers = $el.find(':jqmData(role="virtuallistview" )'),
-                               lastListItem = null,
-                               shortcutscroll = this,
-                               dbtable_name,
-                               dbtable;
-
-
-                       // Add CSS classes to $el (=virtuallistview)
-                       $el.addClass( function ( i, orig ) {
-                               return orig + " ui-listview ui-virtual-list-container" + ( t.options.inset ? " ui-listview-inset ui-corner-all ui-shadow " : "" );
-                       });
-
-                       // keep the vlist's ID
-                       o.itemIDPrefix = $el.attr( "id" ) + '_';
-                       o.id = "#" + $el.attr( "id" );
-
-                       // when page hides, empty all child elements
-                       $( o.id ).bind( "pagehide", function ( e ) {
-                               $( o.id ).empty();
-                       });
-
-                       // Find if scrollview is used
-                       if ( $( ".ui-scrollview-clip" ).size() > 0 ) {
-                               o.scrollview = true;
-                       } else {
-                               o.scrollview = false;
+                       function getNeutralLang ( lang ) {
+                               var neutralLangIdx = lang.lastIndexOf( '-' ),
+                                       neutralLang;
+                               if ( neutralLangIdx != -1 ) {
+                                       neutralLang = lang.substr( 0, neutralLangIdx );
+                               }
+                               return neutralLang;
                        }
 
-                       // Calculate page buffer size
-                       if ( $el.data( "row" ) ) {
-                               o.row = $el.data( "row" );
+                       function getCultureFilePath ( lang, cFDic ) {
+                               var cFPath = null;      // error value
 
-                               if ( o.row < t._minimum_row ) {
-                                       o.row = t._minimum_row;
+                               if ( "string" != typeof lang ) {
+                                       return null;
+                               }
+                               if ( cFDic && cFDic[lang] ) {
+                                       cFPath = cFDic[lang];
+                               } else {
+                                       // Default Globalize culture file path
+                                       cFPath = [
+                                               self.frameworkData.rootDir,
+                                               self.frameworkData.version,
+                                               'js',
+                                               'cultures',
+                                               ['globalize.culture.', lang, '.js'].join( '' ),
+                                       ].join( '/' );
                                }
+                               return cFPath;
+                       }
 
-                               o.page_buf = parseInt( ( o.row / 2 ), 10 );
+                       function printLoadError( cFPath, jqXHR ) {
+                               tizen.log.error( "Error " + jqXHR.status + ": " + jqXHR.statusText
+                                               + "::Culture file (" + cFPath + ") is failed to load.");
                        }
 
-                       // Get arguments
-                       if ( args ) {
-                               if ( args.itemData && typeof args.itemData == 'function'  ) {
-                                       t._itemData = args.itemData;
-                               } else {
-                                       return;
+                       function loadCultureFile ( cFPath, errCB ) {
+                               function _successCB ( ) {
+                                       tizen.log.debug( "Culture file (" + cFPath + ") is loaded successfully." );
                                }
-                               if ( args.numItemData ) {
-                                       if ( typeof args.numItemData == 'function' ) {
-                                               t._numItemData = args.numItemData( );
-                                       } else if ( typeof args.numItemData == 'number' ) {
-                                               t._numItemData = args.numItemData;
+                               function _errCB ( jqXHR, textStatus, err ) {
+                                       if ( errCB ) {
+                                               errCB( jqXHR, textStatus, err );
                                        } else {
-                                               return;
+                                               printLoadError( cFPath, jqXHR );
                                        }
-                               } else {
-                                       return;
                                }
-                       } else {        // No option is given
-                               // Legacy support: dbtable
-                               console.warn( "WARNING: The data interface of virtuallist is changed. \nOld data interface(data-dbtable) is still supported, but will be removed in next version. \nPlease fix your code soon!" );
-
-                               /* After DB Load complete, Init Vritual list */
-                               if ( $( o.id ).hasClass( "vlLoadSuccess" ) ) {
-                                       dbtable_name = $el.jqmData('dbtable');
-                                       dbtable = window[ dbtable_name ];
 
-                                       $( o.id ).empty();
-
-                                       if ( !dbtable ) {
-                                               dbtable = { };
-                                       }
-
-                                       t._itemData = function ( idx ) {
-                                               return dbtable[ idx ];
+                               if ( ! cFPath ) {       // Invalid cFPath -> Regard it as '404 Not Found' error.
+                                       mockJSXHR = {
+                                               status: 404,
+                                               statusText: "Not Found"
                                        };
-                                       t._numItemData = dbtable.length;
-                               } else {
-                                       return; // Do nothing
-                               }
-                       }
-
-                       // Get template data
-                       if ( $el.data( "template" ) ) {
-                               o.template = $el.data( "template" );
-
-                               /* to support swipe list, <li> or <ul> can be main node of virtual list. */
-                               if ( $el.data( "swipelist" ) == true ) {
-                                       o.childSelector = " ul";
+                                       _errCB( mockJSXHR, null, null );
                                } else {
-                                       o.childSelector = " li";
+                                       $.ajax( {
+                                               url: cFPath,
+                                               dataType: 'script',
+                                               cache: true,
+                                               async: false,
+                                               success: _successCB,
+                                               error: _errCB
+                                       } );
                                }
                        }
 
-                       // Set data's unique key
-                       // NOTE: Unnecessary?
-                       if ( $el.data( "dbkey" ) ) {
-                               o.dbkey = $el.data( "dbkey" );
-                       }
+                       lang = getLang( language );
+                       cFPath = getCultureFilePath( lang, cultureDic );
+                       loadCultureFile( cFPath,
+                               function ( jqXHR, textStatus, err ) {
+                                       if ( jqXHR.status == 404 ) {
+                                               // If culture file is not found, try once more with neutral lang.
+                                               var nLang = getNeutralLang( lang ),
+                                                       ncFPath = getCultureFilePath( nLang, cultureDic );
+                                               loadCultureFile( ncFPath, null );
+                                       } else {
+                                               printLoadError( cFPath, jqXHR );
+                                       }
+                               } );
 
-                       t._first_index = 0;                     // initial top idx of <li> element.
-                       t._last_index = o.row - 1;              // initial bottom idx of <li> element.
-                       t._initList();  // NOTE: Called at here only!
+                       return lang;
                },
+               setGlobalize: function ( ) {
+                       var lang = this.loadGlobalizeCulture( );
 
-               destroy : function () {
-                       var o = this.options;
-
-                       $( document ).unbind( "scrollstop" );
-
-                       $( window ).unbind( "resize.virtuallist" );
-
-                       $( o.id ).empty();
-
-                       if ( this.timerMoveID ) {
-                               clearTimeout( this.timerMoveID );
-                               this.timerMoveID = null;
-                       }
+                       // Set culture
+                       // NOTE: It is not needed to set with neutral lang.
+                       //       Globalize automatically deals with it.
+                       Globalize.culture( lang );
                },
-
-               _itemApply: function ( $list, item ) {
-                       var $countli = item.find( ".ui-li-count" );
-
-                       if ( $countli.length ) {
-                               item.addClass( "ui-li-has-count" );
-                       }
-
-                       $countli.addClass( "ui-btn-up-" + ( $list.jqmData( "counttheme" ) || this.options.countTheme ) + " ui-btn-corner-all" );
-
-                       // TODO class has to be defined in markup
-                       item.find( "h1, h2, h3, h4, h5, h6" ).addClass( "ui-li-heading" ).end()
-                               .find( "p, dl" ).addClass( "ui-li-desc" ).end()
-                               .find( ">img:eq(0), .ui-link-inherit>img:eq(0)" ).addClass( "ui-li-thumb" ).each( function () {
-                                       item.addClass( $( this ).is( ".ui-li-icon" ) ? "ui-li-has-icon" : "ui-li-has-thumb" );
-                               }).end()
-                               .find( ".ui-li-aside" ).each(function () {
-                                       var $this = $( this );
-                                       $this.prependTo( $this.parent() ); //shift aside to front for css float
-                               } );
+               /**
+                * Load custom globalize culture file
+                * Find current system language, and load appropriate culture file from given colture file list.
+                *
+                * @param[in]   cultureDic      collection of 'language':'culture file path' key-val pair.
+                * @example
+                * var myCultures = {
+                *      "en"    : "culture/en.js",
+                *      "fr"    : "culture/fr.js",
+                *      "ko-KR" : "culture/ko-KR.js"
+                * };
+                * loadCultomGlobalizeCulture( myCultures );
+                *
+                * ex) culture/fr.js
+                * -------------------------------
+                * Globalize.addCultureInfo( "fr", {
+                *   messages: {
+                *     "hello" : "bonjour",
+                *     "translate" : "traduire"
+                *   }
+                * } );
+                * -------------------------------
+                */
+               loadCustomGlobalizeCulture: function ( cultureDic ) {
+                       tizen.loadGlobalizeCulture( null, cultureDic );
                },
 
-               _removeCorners: function ( li, which ) {
-                       var top = "ui-corner-top ui-corner-tr ui-corner-tl",
-                               bot = "ui-corner-bottom ui-corner-br ui-corner-bl";
-
-                       li = li.add( li.find( ".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb" ) );
+               /** Set viewport meta tag for mobile devices.
+                *
+                * @param[in]   viewportWidth   viewport width. "device-width" is OK.
+                */
+               setViewport: function ( viewportWidth ) {
+                       var meta = null,
+                               head,
+                               content;
 
-                       if ( which === "top" ) {
-                               li.removeClass( top );
-                       } else if ( which === "bottom" ) {
-                               li.removeClass( bot );
+                       // Do nothing if viewport setting code is already in the code.
+                       $( "meta[name=viewport]" ).each( function ( ) {
+                               meta = this;
+                               return;
+                       });
+                       if ( meta ) {   // Found custom viewport!
+                               content = $( meta ).prop( "content" );
+                               viewportWidth = content.replace( /.*width=(device-width|\d+)\s*,?.*$/gi, "$1" );
+                               tizen.log.warn( "Viewport is set to '" + viewportWidth + "' in a meta tag. Framework skips viewport setting." );
                        } else {
-                               li.removeClass( top + " " + bot );
+                               // Create a meta tag
+                               meta = document.createElement( "meta" );
+                               if ( meta ) {
+                                       meta.name = "viewport";
+                                       content = [ "width=", viewportWidth, ", user-scalable=no" ].join( "" );
+                                       if ( ! isNaN( viewportWidth ) ) {
+                                               // Fix scale to 1.0, if viewport width is set to fixed value.
+                                               // NOTE: Works wrong in Tizen browser!
+                                               //content = [ content, ", initial-scale=1.0, maximum-scale=1.0" ].join( "" );
+                                       }
+                                       meta.content = content;
+                                       tizen.log.debug( content );
+                                       head = document.getElementsByTagName( 'head' ).item( 0 );
+                                       head.insertBefore( meta, head.firstChild );
+                               }
                        }
+                       return viewportWidth;
                },
 
-               _refreshCorners: function ( create ) {
-                       var $li,
-                               $visibleli,
-                               $topli,
-                               $bottomli;
-
-                       if ( this.options.inset ) {
-                               $li = this.element.children( "li" );
-                               // at create time the li are not visible yet so we need to rely on .ui-screen-hidden
-                               $visibleli = create ? $li.not( ".ui-screen-hidden" ) : $li.filter( ":visible" );
-
-                               this._removeCorners( $li );
-
-                               // Select the first visible li element
-                               $topli = $visibleli.first()
-                                       .addClass( "ui-corner-top" );
-
-                               $topli.add( $topli.find( ".ui-btn-inner" ) )
-                                       .find( ".ui-li-link-alt" )
-                                               .addClass( "ui-corner-tr" )
-                                       .end()
-                                       .find( ".ui-li-thumb" )
-                                               .not( ".ui-li-icon" )
-                                               .addClass( "ui-corner-tl" );
-
-                               // Select the last visible li element
-                               $bottomli = $visibleli.last()
-                                       .addClass( "ui-corner-bottom" );
+               /**     Read body's font-size, scale it, and reset it.
+                *  param[in]   desired font-size / base font-size.
+                */
+               scaleBaseFontSize: function ( themeDefaultFontSize, ratio ) {
+                       tizen.log.debug( "themedefaultfont size: " + themeDefaultFontSize + ", ratio: " + ratio );
+                       var scaledFontSize = Math.max( Math.floor( themeDefaultFontSize * ratio ), 4 );
 
-                               $bottomli.add( $bottomli.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" );
-                       }
+                       $( 'html.ui-mobile' ).css( { 'font-size': scaledFontSize + "px" } );
+                       tizen.log.debug( 'html:font size is set to ' + scaledFontSize );
+                       $( document ).ready( function ( ) {
+                               $( '.ui-mobile' ).children( 'body' ).css( { 'font-size': scaledFontSize + "px" } );
+                       } );
                },
 
-               // this         virtuallistview object
-               refresh: function ( create ) {
-                       this.parentPage = this.element.closest( ".ui-page" );
-                       // Make sub page, and move the virtuallist into it...
-                       // NOTE: check this subroutine.
-                       this._createSubPages();
+               setScaling: function ( ) {
+                       var viewportWidth = this.frameworkData.viewportWidth,
+                               themeDefaultFontSize = this.frameworkData.defaultFontSize, // comes from theme.js
+                               ratio = 1;
 
-                       var o = this.options,
-                               $list = this.element,
-                               self = this,
-                               dividertheme = $list.jqmData( "dividertheme" ) || o.dividerTheme,
-                               listsplittheme = $list.jqmData( "splittheme" ),
-                               listspliticon = $list.jqmData( "spliticon" ),
-                               li = $list.children( "li" ),
-                               counter = $.support.cssPseudoElement || !$.nodeName( $list[ 0 ], "ol" ) ? 0 : 1,
-                               item,
-                               itemClass,
-                               temTheme,
-                               a,
-                               last,
-                               splittheme,
-                               countParent,
-                               icon,
-                               pos,
-                               numli,
-                               itemTheme;
+                       // Keep original font size
+                       $( 'body' ).attr( 'data-tizen-theme-default-font-size', themeDefaultFontSize );
 
-                       // TODO: ?
-                       if ( counter ) {
-                               $list.find( ".ui-li-dec" ).remove();
+                       if ( !tizen.util.isMobileBrowser() ) {
+                               return;
                        }
 
-                       for ( pos = 0, numli = li.length; pos < numli; pos++ ) {
-                               item = li.eq( pos );
-                               itemClass = "ui-li";
+                       // Legacy support: tizen.frameworkData.viewportScale
+                       if ( this.frameworkData.viewportScale == true ) {
+                               viewportWidth = "screen-width";
+                       }
 
-                               // If we're creating the element, we update it regardless
-                               if ( create || !item.hasClass( "ui-li" ) ) {
-                                       itemTheme = item.jqmData( "theme" ) || o.theme;
-                                       a = item.children( "a" );
+                       // screen-width support
+                       if ( "screen-width" == viewportWidth ) {
+                               if ( window.self == window.top ) {
+                                       // Top frame: for target. Use window.outerWidth.
+                                       viewportWidth = window.outerWidth;
+                               } else {
+                                       // iframe: for web simulator. Use clientWidth.
+                                       viewportWidth = document.documentElement.clientWidth;
+                               }
+                       }
 
-                                       if ( a.length ) {
-                                               icon = item.jqmData( "icon" );
+                       // set viewport meta tag
+                       viewportWidth = this.setViewport( viewportWidth );      // If custom viewport setting exists, get viewport width
 
-                                               item.buttonMarkup({
-                                                       wrapperEls: "div",
-                                                       shadow: false,
-                                                       corners: false,
-                                                       iconpos: "right",
-                                                       /* icon: a.length > 1 || icon === false ? false : icon || "arrow-r",*/
-                                                       icon: false,    /* Remove unnecessary arrow icon */
-                                                       theme: itemTheme
-                                               });
+                       if ( viewportWidth == "device-width" ) {
+                               // Do nothing!
+                       } else {        // fixed width!
+                               ratio = parseFloat( viewportWidth / this.frameworkData.defaultViewportWidth );
+                               this.scaleBaseFontSize( themeDefaultFontSize, ratio );
+                       }
+               },
+       };
 
-                                               if ( ( icon != false ) && ( a.length == 1 ) ) {
-                                                       item.addClass( "ui-li-has-arrow" );
-                                               }
+       function export2TizenNS ( $, tizen ) {
+               if ( !$.tizen ) {
+                       $.tizen = { };
+               }
 
-                                               a.first().addClass( "ui-link-inherit" );
+               $.tizen.frameworkData = tizen.frameworkData;
+               $.tizen.loadCustomGlobalizeCulture = tizen.loadCustomGlobalizeCulture;
+               $.tizen.loadTheme = tizen.loadTheme;
 
-                                               if ( a.length > 1 ) {
-                                                       itemClass += " ui-li-has-alt";
+               $.tizen.__tizen__ = tizen;      // for unit-test
+       }
 
-                                                       last = a.last();
-                                                       splittheme = listsplittheme || last.jqmData( "theme" ) || o.splitTheme;
+       export2TizenNS( $, tizen );
 
-                                                       last.appendTo(item)
-                                                               .attr( "title", last.getEncodedText() )
-                                                               .addClass( "ui-li-link-alt" )
-                                                               .empty()
-                                                               .buttonMarkup({
-                                                                       shadow: false,
-                                                                       corners: false,
-                                                                       theme: itemTheme,
-                                                                       icon: false,
-                                                                       iconpos: false
-                                                               })
-                                                               .find( ".ui-btn-inner" )
-                                                               .append(
-                                                                       $( "<span />" ).buttonMarkup({
-                                                                               shadow: true,
-                                                                               corners: true,
-                                                                               theme: splittheme,
-                                                                               iconpos: "notext",
-                                                                               icon: listspliticon || last.jqmData( "icon" ) || o.splitIcon
-                                                                       })
-                                                               );
-                                               }
-                                       } else if ( item.jqmData( "role" ) === "list-divider" ) {
+       tizen.getParams( );
+       tizen.loadTheme( );
+       tizen.setScaling( );    // Run after loadTheme(), for the default font size.
+       tizen.setGlobalize( );
+       // Turn off JQM's auto initialization option.
+       // NOTE: This job must be done before domready.
+       $.mobile.autoInitializePage = false;
 
-                                               itemClass += " ui-li-divider ui-btn ui-bar-" + dividertheme;
-                                               item.attr( "role", "heading" );
+       $(document).ready( function ( ) {
+               $.mobile.initializePage( );
+       });
 
-                                               //reset counter when a divider heading is encountered
-                                               if ( counter ) {
-                                                       counter = 1;
-                                               }
-
-                                       } else {
-                                               itemClass += " ui-li-static ui-body-" + itemTheme;
-                                       }
-                               }
-
-                               if ( counter && itemClass.indexOf( "ui-li-divider" ) < 0 ) {
-                                       countParent = item.is( ".ui-li-static:first" ) ? item : item.find( ".ui-link-inherit" );
-
-                                       countParent.addClass( "ui-li-jsnumbering" )
-                                               .prepend( "<span class='ui-li-dec'>" + (counter++) + ". </span>" );
-                               }
-
-                               item.add( item.children( ".ui-btn-inner" ) ).addClass( itemClass );
-
-                               self._itemApply( $list, item );
-                       }
-
-                       this._refreshCorners( create );
-               },
-
-               //create a string for ID/subpage url creation
-               _idStringEscape: function ( str ) {
-                       return str.replace(/\W/g , "-");
-               },
-
-               // ?
-               // this         virtuallistview object
-               _createSubPages: function () {
-                       var parentList = this.element,
-                               parentPage = parentList.closest( ".ui-page" ),
-                               parentUrl = parentPage.jqmData( "url" ),
-                               parentId = parentUrl || parentPage[ 0 ][ $.expando ],
-                               parentListId = parentList.attr( "id" ),
-                               o = this.options,
-                               dns = "data-" + $.mobile.ns,
-                               self = this,
-                               persistentFooterID = parentPage.find( ":jqmData(role='footer')" ).jqmData( "id" ),
-                               hasSubPages,
-                               newRemove;
-
-                       if ( typeof listCountPerPage[ parentId ] === "undefined" ) {
-                               listCountPerPage[ parentId ] = -1;
-                       }
-
-                       parentListId = parentListId || ++listCountPerPage[ parentId ];
-
-                       $( parentList.find( "li>ul, li>ol" ).toArray().reverse() ).each(function ( i ) {
-                               var self = this,
-                                       list = $( this ),
-                                       listId = list.attr( "id" ) || parentListId + "-" + i,
-                                       parent = list.parent(),
-                                       nodeEls,
-                                       title = nodeEls.first().getEncodedText(),//url limits to first 30 chars of text
-                                       id = ( parentUrl || "" ) + "&" + $.mobile.subPageUrlKey + "=" + listId,
-                                       theme = list.jqmData( "theme" ) || o.theme,
-                                       countTheme = list.jqmData( "counttheme" ) || parentList.jqmData( "counttheme" ) || o.countTheme,
-                                       newPage,
-                                       anchor;
-
-                               nodeEls = $( list.prevAll().toArray().reverse() );
-                               nodeEls = nodeEls.length ? nodeEls : $( "<span>" + $.trim( parent.contents()[ 0 ].nodeValue ) + "</span>" );
-
-                               //define hasSubPages for use in later removal
-                               hasSubPages = true;
-
-                               newPage = list.detach()
-                                                       .wrap( "<div " + dns + "role='page' " + dns + "url='" + id + "' " + dns + "theme='" + theme + "' " + dns + "count-theme='" + countTheme + "'><div " + dns + "role='content'></div></div>" )
-                                                       .parent()
-                                                               .before( "<div " + dns + "role='header' " + dns + "theme='" + o.headerTheme + "'><div class='ui-title'>" + title + "</div></div>" )
-                                                               .after( persistentFooterID ? $( "<div " + dns + "role='footer' " + dns + "id='" + persistentFooterID + "'>" ) : "" )
-                                                               .parent()
-                                                               .appendTo( $.mobile.pageContainer );
-
-                               newPage.page();
-
-                               anchor = parent.find('a:first');
-
-                               if ( !anchor.length ) {
-                                       anchor = $( "<a/>" ).html( nodeEls || title ).prependTo( parent.empty() );
-                               }
-
-                               anchor.attr( "href", "#" + id );
-
-                       }).virtuallistview();
-
-                       // on pagehide, remove any nested pages along with the parent page, as long as they aren't active
-                       // and aren't embedded
-                       if ( hasSubPages &&
-                                               parentPage.is( ":jqmData(external-page='true')" ) &&
-                                               parentPage.data( "page" ).options.domCache === false ) {
-
-                               newRemove = function ( e, ui ) {
-                                       var nextPage = ui.nextPage, npURL;
-
-                                       if ( ui.nextPage ) {
-                                               npURL = nextPage.jqmData( "url" );
-                                               if ( npURL.indexOf( parentUrl + "&" + $.mobile.subPageUrlKey ) !== 0 ) {
-                                                       self.childPages().remove();
-                                                       parentPage.remove();
-                                               }
-                                       }
-                               };
-
-                               // unbind the original page remove and replace with our specialized version
-                               parentPage
-                                       .unbind( "pagehide.remove" )
-                                       .bind( "pagehide.remove", newRemove );
-                       }
-               },
-
-               // TODO sort out a better way to track sub pages of the virtuallistview this is brittle
-               childPages: function () {
-                       var parentUrl = this.parentPage.jqmData( "url" );
-
-                       return $( ":jqmData(url^='" +  parentUrl + "&" + $.mobile.subPageUrlKey + "')" );
-               }
-       });
-
-       //auto self-init widgets
-       $( document ).bind( "pagecreate create", function ( e ) {
-               $( $.tizen.virtuallistview.prototype.options.initSelector, e.target ).virtuallistview();
-       });
-
-} ( jQuery ) );
+} ( jQuery, window.Globalize, window ) );
 
 
 
@@ -9756,7 +9301,7 @@ jQuery.extend(jQuery.mobile.tizen, {
  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software" ),
+ * copy of this software and associated documentation files (the "Software"),
  * to deal in the Software without restriction, including without limitation
  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  * and/or sell copies of the Software, and to permit persons to whom the
@@ -9774,1006 +9319,993 @@ jQuery.extend(jQuery.mobile.tizen, {
  * DEALINGS IN THE SOFTWARE.
  * ***************************************************************************
  *
- *     Author: Minkyu Kang <mk7.kang@samsung.com>
- *     Author: Koeun Choi <koeun.choi@samsung.com>
+ *     Author: Jinhyuk Jun <jinhyuk.jun@samsung.com>
  */
 
-/*
- * Progress widget
- *
- * HTML Attributes
- *
- *  data-role: set to 'progress'.
- *  data-style: 'circle' or 'pending'.
- *
- * APIs
- *
- *  show(): show the progress.
- *  hide(): hide the progress.
- *  running(boolean): start or stop the running.
- *
- * Events
- *
- *  N/A
- *
- * Examples
- *
- * <li data-role="list-divider">Progress Pending</li>
- * <li>
- *     <div data-role="progress" data-style="pending" id="pending"></div>
- * </li>
- * <li data-role="list-divider">Progress ~ing</li>
- * <li>
- *     <div data-role="progress" data-style="circle" id="progress"></div>Loading..
- * </li>
- *
- * $("#pending").progress( "running", true );
- * $("#progress").progress( "running", true );
- *
- */
+(function ( $, undefined ) {
 
-/**
-       @class Progress
-       The progress widget shows that an operation is in progress. <br/>To add a progress widget to the application, use the following code:
+       $.widget( "mobile.pagelayout", $.mobile.widget, {
+               options: {
+                       visibleOnPageShow: true,
+                       disablePageZoom: true,
+                       transition: "slide", //can be none, fade, slide (slide maps to slideup or slidedown)
+                       fullscreen: false,
+                       tapToggle: true,
+                       tapToggleBlacklist: "a, input, select, textarea, .ui-header-fixed, .ui-footer-fixed",
+                       hideDuringFocus: "input, textarea, select",
+                       updatePagePadding: true,
+                       // Browser detection! Weeee, here we go...
+                       // Unfortunately, position:fixed is costly, not to mention probably impossible, to feature-detect accurately.
+                       // Some tests exist, but they currently return false results in critical devices and browsers, which could lead to a broken experience.
+                       // Testing fixed positioning is also pretty obtrusive to page load, requiring injected elements and scrolling the window
+                       // The following function serves to rule out some popular browsers with known fixed-positioning issues
+                       // This is a plugin option like any other, so feel free to improve or overwrite it
+                       supportBlacklist: function () {
+                               var w = window,
+                                       ua = navigator.userAgent,
+                                       platform = navigator.platform,
+                                       // Rendering engine is Webkit, and capture major version
+                                       wkmatch = ua.match( /AppleWebKit\/([0-9]+)/ ),
+                                       wkversion = !!wkmatch && wkmatch[ 1 ],
+                                       ffmatch = ua.match( /Fennec\/([0-9]+)/ ),
+                                       ffversion = !!ffmatch && ffmatch[ 1 ],
+                                       operammobilematch = ua.match( /Opera Mobi\/([0-9]+)/ ),
+                                       omversion = !!operammobilematch && operammobilematch[ 1 ];
 
-               <div data-role="progress" data-style="circle"></div>
-*/
-/**
-       @property {String} data-style
-       Sets the style of the progress widget. The style options are pending (pending progress style) and circle (circular progress status style).
-*/
-/**
-       @method running
-       The running method is used to set the current running state of the pending or circular progress widget:
+                               if (
+                                       // iOS 4.3 and older : Platform is iPhone/Pad/Touch and Webkit version is less than 534 (ios5)
+                                       ( ( platform.indexOf( "iPhone" ) > -1 || platform.indexOf( "iPad" ) > -1  || platform.indexOf( "iPod" ) > -1 ) && wkversion && wkversion < 534 ) ||
+                                               // Opera Mini
+                                               ( w.operamini && ({}).toString.call( w.operamini ) === "[object OperaMini]" ) ||
+                                               ( operammobilematch && omversion < 7458 ) ||
+                                               //Android lte 2.1: Platform is Android and Webkit version is less than 533 (Android 2.2)
+                                               ( ua.indexOf( "Android" ) > -1 && wkversion && wkversion < 533 ) ||
+                                               // Firefox Mobile before 6.0 -
+                                               ( ffversion && ffversion < 6 ) ||
+                                               // WebOS less than 3
+                                               ( window.palmGetResource !== undefined && wkversion && wkversion < 534 ) ||
+                                               // MeeGo
+                                               ( ua.indexOf( "MeeGo" ) > -1 && ua.indexOf( "NokiaBrowser/8.5.0" ) > -1 )
+                               ) {
+                                       return true;
+                               }
 
-               <div id="foo" data-role="progress" data-style="pending"></div>
-               $("#foo").progress("running", true);
-*/
-/**
-       @method show
-       The show method is used to show the pending or circular progress widget:
+                               return false;
+                       },
+                       initSelector: ":jqmData(role='content')"
+               },
 
-               <div id="foo" data-role="progress" data-style="pending"></div>
-               $("#foo").progress("show");
-*/
-/**
-       @method hide
-       The show method is used to hide the pending or circular progress widget:
+               _create: function () {
 
-               <div id="foo" data-role="progress" data-style="pending"></div>
-               $("#foo").progress("hide");
-*/
+                       var self = this,
+                               o = self.options,
+                               $el = self.element;
 
-(function ( $, window, undefined ) {
-       $.widget( "tizen.progress", $.mobile.widget, {
-               options: {
-                       style: "circle",
-                       running: false
-               },
+                       // Feature detecting support for
+                       if ( o.supportBlacklist() ) {
+                               self.destroy();
+                               return;
+                       }
 
-               show: function () {
-                       $( this.element ).show();
+                       self._addFixedClass();
+                       self._addTransitionClass();
+                       self._bindPageEvents();
+
+                       // only content
+                       self._bindContentControlEvents();
+
+                       // Store back-button, to show again
+                       self._backBtnQueue = [];
                },
 
-               hide: function () {
-                       $( this.element ).hide();
-               },
+               /* add minimum fixed css style to bar(header/footer) and content
+               *  it need to update when core source modified(jquery.mobile.page.section.js)
+               *  modified from core source cuz initSelector different */
+               _addFixedClass: function () {
+                       var self = this,
+                               o = self.options,
+                               $el = self.element,
+                               $elHeader = $el.siblings( ":jqmData(role='header')" ),
+                               $elFooter = $el.siblings( ":jqmData(role='footer')" ),
+                               $elPage = $el.closest(".ui-page");
 
-               _start: function () {
-                       if ( !this.init ) {
-                               $( this.element ).append( this.html );
-                               this.init = true;
+                       $elHeader.addClass( "ui-header-fixed" );
+                       $elFooter.addClass( "ui-footer-fixed" );
+
+                       // "fullscreen" overlay positioning
+                       if ( o.fullscreen ) {
+                               $elHeader.addClass( "ui-header-fullscreen" );
+                               $elFooter.addClass( "ui-footer-fullscreen" );
+                               $elPage
+                                       .addClass( "ui-page-header-fullscreen" )
+                                       .addClass( "ui-page-footer-fullscreen" );
+                       } else {
+                       // If not fullscreen, add class to page to set top or bottom padding
+                               $elPage.addClass( "ui-page-header-fixed" )
+                                       .addClass( "ui-page-footer-fixed" );
                        }
+               },
 
-                       this.show();
+               /* original core source(jquery.mobile.fixedToolbar.js)
+               * never changed */
+               _addTransitionClass: function () {
+                       var tclass = this.options.transition;
 
-                       $( this.element )
-                               .find( ".ui-progress-" + this.options.style )
-                               .addClass( this.runningClass );
-               },
+                       if ( tclass && tclass !== "none" ) {
+                               // use appropriate slide for header or footer
+                               if ( tclass === "slide" ) {
+                                       tclass = this.element.is( ".ui-header" ) ? "slidedown" : "slideup";
+                               }
 
-               _stop: function () {
-                       $( this.element )
-                               .find( ".ui-progress-" + this.options.style )
-                               .removeClass( this.runningClass );
+                               this.element.addClass( tclass );
+                       }
                },
 
-               running: function ( running ) {
-                       if ( running === undefined ) {
-                               return this.options.running;
-                       }
 
-                       this._setOption( "running", running );
-               },
+               /* Set default page positon
+               * 1. add title style to header
+               * 2. Set default header/footer position */
+               setHeaderFooter: function ( thisPage ) {
+                       var $elPage = $( thisPage ),
+                               $elHeader = $elPage.find( ":jqmData(role='header')" ).length ? $elPage.find( ":jqmData(role='header')") : $elPage.siblings( ":jqmData(role='header')"),
+                               $elContent = $elPage.find( ".ui-content" ),
+                               $elFooter = $elPage.find( ":jqmData(role='footer')" ),
+                               $elFooterGroup = $elFooter.find( ":jqmData(role='fieldcontain')" ),
+                               $elFooterControlGroup = $elFooter.find( ".ui-controlgroup" );
 
-               _setOption: function ( key, value ) {
-                       if ( key === "running" ) {
-                               if ( typeof value !== "boolean" ) {
-                                       window.alert( "running value MUST be boolean type!" );
-                                       return;
+                       // divide content mode scrollview and non-scrollview
+                       if ( !$elPage.is( ".ui-dialog" ) ) {
+                               if ( $elHeader.jqmData("position") == "fixed" || ( $.support.scrollview && $.tizen.frameworkData.theme.match(/tizen/) ) ) {
+                                       $elHeader
+                                               .css( "position", "fixed" )
+                                               .css( "top", "0px" );
+                               } else if ( !$.support.scrollview && $elHeader.jqmData("position") != "fixed" ) {
+                                       $elHeader.css( "position", "relative" );
                                }
+                       }
 
-                               this.options.running = value;
-                               this._refresh();
+                       /* set Title style */
+                       if ( $elHeader.find("span.ui-title-text-sub").length ) {
+                               $elHeader.addClass( "ui-title-multiline");
                        }
-               },
 
-               _refresh: function () {
-                       if ( this.options.running ) {
-                               this._start();
-                       } else {
-                               this._stop();
+                       if ( $elFooterGroup.find( "div" ).is( ".ui-controlgroup-label" ) ) {
+                               $elFooterGroup.find( "div.ui-controlgroup-label" ).remove();
+                       }
+
+                       if ( $elFooterControlGroup.length ) {
+                               var anchorPer = 100 / $elFooterControlGroup.find( "a" ).length;
+                               $elFooterControlGroup.find( "a" ).each( function ( i ) {
+                                       $elFooterControlGroup.find( "a" ).eq( i ).width( anchorPer + "%" );
+                               });
                        }
                },
 
-               _create: function () {
+               _bindPageEvents: function () {
                        var self = this,
-                               element = this.element,
-                               style = element.jqmData( "style" ),
-                               _html,
-                               runningClass;
+                               o = self.options,
+                               $el = self.element,
+                               $elCurrentFooter;
 
-                       if ( style ) {
-                               this.options.style = style;
-                       } else {
-                               style = this.options.style;
-                       }
+                       //page event bindings
+                       // Fixed toolbars require page zoom to be disabled, otherwise usability issues crop up
+                       // This method is meant to disable zoom while a fixed-positioned toolbar page is visible
+                       $el.closest( ".ui-page" )
+                               .bind( "pagebeforeshow", function ( event ) {
+                                       var thisPage = this;
+                                       if ( o.disablePageZoom ) {
+                                               $.mobile.zoom.disable( true );
+                                       }
+                                       if ( !o.visibleOnPageShow ) {
+                                               self.hide( true );
+                                       }
+                                       self.setHeaderFooter( thisPage );
+                                       self._setContentMinHeight( thisPage );
+                               } )
+                               .bind( "webkitAnimationStart animationstart updatelayout", function ( e, data ) {
+                                       var thisPage = this;
+                                       if ( o.updatePagePadding ) {
+                                               self.updatePagePadding(thisPage);
+                                               self.updatePageLayout( thisPage, data);
+                                       }
+                               })
 
-                       if ( style == "circle" ) {
-                               $( this.element ).addClass("ui-progress-container-circle");
+                               .bind( "pageshow", function ( event ) {
+                                       var thisPage = this;
+                                       self._setContentMinHeight( thisPage );
+                                       self.updatePagePadding( thisPage );
+                                       self._updateHeaderArea( thisPage );
+                                       if ( o.updatePagePadding ) {
+                                               $( window ).bind( "throttledresize." + self.widgetName, function () {
+                                                       self.updatePagePadding(thisPage);
 
-                               _html = '<div class="ui-progress-circle"></div>';
-                       } else if ( style === "pending" ) {
-                               $( this.element ).addClass("ui-progressbar");
+                                                       self.updatePageLayout( thisPage, false);
+                                                       self._updateHeaderArea( thisPage );
+                                                       self._setContentMinHeight( thisPage );
+                                               });
+                                       }
+                               })
 
-                               _html = '<div class="ui-progressbar-bg">' +
-                                               '<div class="ui-progress-pending"></div>' +
-                                       '</div>';
-                       }
+                               .bind( "pagebeforehide", function ( e, ui ) {
+                                       if ( o.disablePageZoom ) {
+                                               $.mobile.zoom.enable( true );
+                                       }
+                                       if ( o.updatePagePadding ) {
+                                               $( window ).unbind( "throttledresize." + self.widgetName );
+                                       }
+                               });
 
-                       this.html = $( _html );
+                       window.addEventListener( "softkeyboardchange", function ( e ) {
+                               var $elDownBtn = $( "<div class='ui-btn-footer-down'></div>" ),
+                                       $elPage = $( ".ui-page-active" ),
+                                       backBtn,
+                                       backBtnPosition = "footer";
 
-                       runningClass = "ui-progress-" + style + "-running";
+                               if ( $elPage.data( "addBackBtn" ) ) {
+                                       $elPage.data( "addBackBtn" ) == "header" ? backBtnPosition = "header" : backBtnPosition = "footer";
 
-                       $.extend( this, {
-                               init: false,
-                               runningClass: runningClass
-                       } );
+                                       if ( e.state == "on" ) {
+                                               if ( !$elPage.find( ".ui-" + backBtnPosition + " .ui-btn-footer-down" ).length ) {
+                                                       $elDownBtn.buttonMarkup( { icon: "down" } ).appendTo( $elPage.find( ".ui-" + backBtnPosition ) );
+                                               }
 
-                       if ( style === "pending" ) {
-                               $( this.element ).append( this.html );
-                               this.init = true;
-                       }
+                                               // N_SE-32900: If an app moves a page when the pop is shown, the .ui-page-active page
+                                               //             is changed.
+                                               //             In this case, the '.ui-page-active .ui-btn-back' selector indicates a
+                                               //             new page's one, and the old page's .ui-btn-back button is still hidden.
+                                               //             So, the current back button is remembered to be shown at the
+                                               //             softkeyboardchange.off event.
+                                               backBtn = $( ".ui-page-active .ui-btn-back" );
+                                               backBtn.hide();
+                                               self._backBtnQueue.push( backBtn );     // Store hidden backBtn
+                                       } else if ( e.state == "off" ) {
+                                               self._backBtnQueue.forEach( function ( b ) {
+                                                       b.show();       // Show each backBtn,
+                                               } );
+                                               self._backBtnQueue.length = 0;  // and clear queue.
 
-                       this._refresh();
-               }
-       } ); /* End of widget */
+                                               $( ".ui-btn-footer-down" ).remove();
+                                       }
+                               }
 
-       $( document ).bind( "pagecreate create", function ( e ) {
-               $( e.target ).find( ":jqmData(role='progress')" ).progress();
-       } );
-}( jQuery, this ));
+                       });
+               },
 
+               _bindContentControlEvents: function () {
+                       var self = this,
+                               o = self.options,
+                               $el = self.element;
 
+                       $el.closest( ".ui-page" )
+                               .bind( "pagebeforeshow", function ( event ) {
 
-/* ***************************************************************************
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * ***************************************************************************
- *
- *     Author: Kangsik Kim <kangsik81.kim@samsung.com>
- *                             Minkyeong Kim <minkyeong.kim@samsung.com>
-*/
+                               });
+               },
 
-/**
- *     The TokenTextArea widget changes a text item to a button. It can be comprised of a number of button widgets. 
- *     When a user types text and the text gets a specific event to change from a text to a button, 
- *     the input text is changed to a TokenTextArea widget.
- *     A user can add the TokenTextArea widget to a contact list, email list, or another list.
- *     The typical use of this widget is composing a number of contacts or phone numbers in a specific area of the screen.
- *
- *     HTML Attributes:
- *
- *             data-link : Represents the page id.
- *                             The page contains data for the user, for example, an address book.
- *                             If the value is null, anchor button doesn't work. (Default : null)
- *             data-label:     Provide a label for a user-guide. (Default : 'To : ')
- *             data-description : This attribute is managing message format.
- *                             This message is displayed when widget status was changed to 'focusout'. (Default : '+ {0}')
- *
- *     APIs:
- *
- *             inputtext (  [string]  )
- *                     : If argument is not exist, will get a string from inputbox.
- *                     If argument is exist, will set a string to inputbox.
- *             select (  [number]  )
- *                     : If no argument exists, gets a string of the selected block.
- *                     If any button isn't selected on a token text area widget, this method returns "null" value.
- *                     When a user call this method with an argument which is a number type,
- *                     this method selects the button which is matched with the argument.
- *             add ( text, [number] )
- *                     :  If second argument does not exist, will insert to a new button at last position.
- *                     Insert a new button at indexed position. The position is decided by the second argument.
- *                     "index of position" means that the position of inserting a new button is decided by the second argument on "add" method.
- *                     For example, if a user call the method like this "add("Tizen", 2)",
- *                     new button labed "Tizen" will be inserted on the third position.
- *             remove ( [number] )
- *                     : If no argument exists, all buttons are removed.
- *                     Remove a button at indexed position.
- *                     The position is decided by the second argument. (index: index of button)
- *             length ( void )
- *                     : Get a number of buttons.
- *             foucsIn ( void )
- *                     : This method change a status to 'focusin'.
- *                     This status is able to manage a widget.
- *             focusOut ( void )
- *                     : Changes the focus status to 'focus out'.
- *                     The status is not able to manage a widget.
- *                     All buttons that contained in the widget are removed and
- *                     summarized message is displayed.
- *             destroy ( void )
- *                     : Remove all of the new DOM elements for the current widget that you created.
- *
- *     Events:
- *
- *             create : Occur when create TokenTextArea widget.
- *             select : Occur when a button is selected.
- *             add : Occur when new button is inserted. (@since Tizen 2.1 deprecated, You can still use this event. But not recommended.)
- *             remove : Occur when a button is removed. (@since Tizen 2.1 deprecated, You can still use this event. But not recommended.)
- *
- *     Examples:
- *
- *             <div data-role="tokentextarea" data-label="To : " data-link:"#addressbook" data-description="+ {0}">
- *             </div>
- *
- */
+               _setContentMinHeight : function ( thisPage ) {
+                       var $elPage = $( thisPage ),
+                               $elHeader = $elPage.find( ":jqmData(role='header')" ),
+                               $elFooter = $elPage.find( ":jqmData(role='footer')" ),
+                               $elContent = $elPage.find( ":jqmData(role='content')" ),
+                               resultMinHeight,
+                               dpr = 1,
+                               layoutInnerHeight = window.innerHeight;
 
+                        if ( !$.support.scrollview ) {
+                                dpr = window.outerWidth / window.innerWidth;
+                                layoutInnerHeight = Math.floor( window.outerHeight / dpr );
+                        }
 
-/**
-       @class TokenTextArea
-       The TokenTextArea widget enables the user to enter text and convert it to a button. Each button that is created from entered text as a result of a change event forms a token text area widget. This widget is useful in composing an e-mail or SMS message to a group of addresses, each of which is a clickable item for more actions, such as copying, editing, or removing the address.
+                       resultMinHeight = layoutInnerHeight - $elHeader.height() - $elFooter.height();
 
-       To add a token text area widget to the application, use the following code:
+                       $elContent.css( "min-height", resultMinHeight - parseFloat( $elContent.css("padding-top") ) - parseFloat( $elContent.css("padding-bottom") ) + "px" );
+               },
 
-               <div data-role="tokentextarea" data-label="To : " data-link="pageId">
-               </div>
-*/
+               _updateHeaderArea : function ( thisPage ) {
+                       var $elPage = $( thisPage ),
+                               $elHeader = $elPage.find( ":jqmData(role='header')" ).length ? $elPage.find( ":jqmData(role='header')") : $elPage.siblings( ":jqmData(role='header')"),
+                               headerBtnNum = $elHeader.children("a").length,
+                               headerSrcNum = $elHeader.children("img").length;
 
-/**
-       @property {String}  data-label
-       Sets a label as a guide for the user.
-       For example, while composing an e-mail message, the 'To : ' label is a guide for the user to enter e-mail addresses.
-*/
+                       if ( !$elPage.is( ".ui-dialog" ) ) {
+                               $elHeader.find( "h1" ).css( "width", window.innerWidth - parseInt( $elHeader.find( "h1" ).css( "margin-left" ), 10 ) * 2 - $elHeader.children( "a" ).width() * headerBtnNum - $elHeader.children( "a" ).width() / 4 - $elHeader.children( "img" ).width() * headerSrcNum * 4 );
+                       }
+                       /* add half width for default space between text and button, and img tag area is too narrow, so multiply three for img width*/
+               },
 
-/**
-       @property {String} data-decription
-       Manages the message format.
-       The message is displayed when the widget status changes to focus out
- */
-/**
-       @property {String} data-link
-       Sets the ID of the page to which the button links.
-*/
-/**
-       @event create
-       The create event is fired when the token text area widget is created:
+               _visible: true,
 
-               <div data-role="tokentextarea">
-               </div>
-               $(".selector").tokentextarea
-               ({
-                       create: function(event, ui)
-                       {
-                               // Handle the create event
+               // This will set the content element's top or bottom padding equal to the toolbar's height
+               updatePagePadding: function ( tbPage ) {
+                       var $el = this.element,
+                               header = $el.siblings( ".ui-header" ).length,
+                               footer = $el.siblings( ".ui-footer" ).length;
+
+                       // This behavior only applies to "fixed", not "fullscreen"
+                       if ( this.options.fullscreen ) {
+                               return;
                        }
-               });
-**/
-/**
-       @event select
-       The select event is fired when a token text area widget button is selected:
 
-               <div data-role="tokentextarea">
-               </div>
-               $(".selector").bind("select", function(event, ui)
-               {
-                       // Handle the select event
-               });     
-*/
-/**
-       @event add (@since Tizen 2.1 deprecated, You can still use this event. But not recommended.)
-       The add event is fired when a token text area widget button is created:
+                       tbPage = tbPage || $el.closest( ".ui-page" );
 
-               <div data-role="tokentextarea">
-               </div>
-               $(".selector").bind("add", function(event, ui)
-               {
-                       // Handle the add event
-               });
-*/
-/**
-       @event remove (@since Tizen 2.1 deprecated, You can still use this event. But not recommended.)
-       The remove event is fired when a token text area widget button is removed:
-       Restriction : "remove" event works under only "bind" event handling.
+                       if ( $el.siblings( ".ui-header" ).jqmData("position") == "fixed" || $.support.scrollview ) {
+                               $( tbPage ).css( "padding-top", ( header ? $el.siblings( ".ui-header" ).outerHeight() : 0 ) );
+                       }
+                       $( tbPage ).css( "padding-bottom", ( footer ? $el.siblings( ".ui-footer" ).outerHeight() : 0 ) );
+               },
 
-               <div data-role="tokentextarea">
-               </div>
-               $(".selector").bind("remove", function(event, ui)
-               {
-                       // Handle the remove event
-               });
-*/
-/**
-       @method destroy
-       The destroy method is used to remove in the current widget all the new DOM elements that you have created.
-       
-               <div data-role="tokentextarea">
-               </div>
-               $(".selector").tokentextarea("destroy");
-       
-       @since Tizen2.0
-*/
-/**
-       @method inputText
-       The inputText method is used to manage the widget input box text. If no parameter is set, the method gets the input box text. If a parameter is set, the parameter text is set in the input box.
-       
-               <div data-role="tokentextarea">
-               </div>
-               $(".selector").tokentextarea("inputText", [text]);
-*/
-/**
-       @method select
-       The select method is used to select a token text area widget button based on its index value. If no index value is defined, the method returns the string of the selected block. If there are no buttons present in the widget, the method returns null.
+               /* 1. Calculate and update content height   */
+               updatePageLayout: function ( thisPage, receiveType ) {
+                       var $elFooter,
+                               $elPage = $( thisPage ),
+                               $elHeader = $elPage.find( ":jqmData(role='header')" ),
+                               $elContent = $elPage.find( ":jqmData(role='content')" ),
+                               resultContentHeight = 0,
+                               resultFooterHeight = 0,
+                               resultHeaderHeight = 0,
+                               layoutInnerHeight = window.innerHeight,
+                               dpr = 1;
 
-               <div data-role="tokentextarea">
-               </div>
-               $(".selector").tokentextarea("select", [index]);
-*/
-/**
-       @method add
-       The add method is used to add a new token text area widget button with the specified label text at the specified index position. If the index parameter is not defined, the widget button is added at the bottom of the list. For example, the $(".selector").tokentextarea("add", "Tizen", 2) method call creates a new widget button labeled 'Tizen' at the third position in the widget.
+                       if ( $elPage.length ) {
+                               $elFooter = $elPage.find( ":jqmData(role='footer')" );
+                       } else {
+                               $elFooter = $( document ).find( ":jqmData(role='footer')" ).eq( 0 );
+                       }
 
-               <div data-role="tokentextarea">
-               </div>
-               $(".selector").tokentextarea("add", [text], [index]);
-*/
-/**
-       @method remove
-       The remove method is used to remove a token text area widget button at the specified index position. If the parameter is not defined, all the widget buttons are removed.
+                       // calculate footer height
+                       resultFooterHeight = ( $elFooter.css( "display" ) == "none" || $elFooter.length == 0 ) ? 0 : $elFooter.height();
+                       resultHeaderHeight = ( $elHeader.css( "display" ) == "none" || $elHeader.length == 0 ) ? 0 : $elHeader.height();
 
-               <div data-role="tokentextarea">
-               </div>
-               $(".selector").tokentextarea("remove", [index]);
-*/
-/**
-       @method length
-       The length method is used to retrieve the number of buttons in the token text area widget:
-               <div data-role="tokentextarea">
-               </div>
-               $(".selector").tokentextarea("length");
-*/
-/**
-       @method focusIn
-       The focusIn method is used to set the focus status to "focus in". This focus state enables the user to add or remove buttons in the token text area widget.
+                       if (resultFooterHeight != 0 ) {
+                               $elFooter.css( "bottom", 0 );
+                       }
 
-               <div data-role="tokentextarea">
-               </div>
-               $(".selector").tokentextarea("focusIn");
-*/
-/**
-       @method focusOut
-       The focusOut method is used to set the focus status to "focus out". In this focus state, the user cannot manage the buttons in the widget, all the buttons are removed, and a message is displayed.
+                       if ( !$.support.scrollview ) {
+                               dpr = window.outerWidth / window.innerWidth;
+                               layoutInnerHeight = Math.floor( window.outerHeight / dpr );
+                       }
 
-               <div data-role="tokentextarea">
-               </div>
-               $(".selector").tokentextarea("focusOut");
-*/
-( function ( $, window, document, undefined ) {
-       $.widget( "tizen.tokentextarea", $.mobile.widget, {
-               _focusStatus : null,
-               _items : null,
-               _viewWidth : 0,
-               _reservedWidth : 0,
-               _currentWidth : 0,
-               _fontSize : 0,
-               _anchorWidth : 0,
-               _labelWidth : 0,
-               _marginWidth : 0,
-               options : {
-                       label : "To : ",
-                       link : null,
-                       description : "+ {0}"
-               },
+                       resultContentHeight = layoutInnerHeight - resultFooterHeight - resultHeaderHeight;
 
-               _create : function () {
-                       var self = this,
-                               $view = this.element,
-                               role = $view.jqmData( "role" ),
-                               option = this.options,
-                               className = "ui-tokentextarea-link",
-                               inputbox = $( document.createElement( "input" ) ),
-                               labeltag = $( document.createElement( "span" ) ),
-                               moreBlock = $( document.createElement( "a" ) );
+                       if ( $.support.scrollview ) {
+                               $elContent.height( resultContentHeight -
+                                               parseFloat( $elContent.css("padding-top") ) -
+                                               parseFloat( $elContent.css("padding-bottom") ) );
+                       }
 
-                       $view.hide().empty().addClass( "ui-" + role );
+                       // External call page( "refresh") - in case title changed
+                       if ( receiveType ) {
+                               $elPage
+                                       .css( "min-height", resultContentHeight )
+                                       .css( "padding-top", resultHeaderHeight )
+                                       .css( "padding-bottom", resultFooterHeight );
+                       }
+               },
 
-                       // create a label tag.
-                       $( labeltag ).text( option.label ).addClass( "ui-tokentextarea-label" ).attr( "tabindex", 0 );
-                       $view.append( labeltag );
+               show: function ( notransition ) {
+                       /* blank function: deprecated */
+               },
 
-                       // create a input tag
-                       $( inputbox ).addClass( "ui-tokentextarea-input ui-tokentextarea-input-visible ui-input-text ui-body-s" ).attr( "role", "textbox" );
-                       $view.append( inputbox );
+               hide: function ( notransition ) {
+                       /* blank function: deprecated */
+               },
 
-                       // create a anchor tag.
-                       if ( option.link === null || $.trim( option.link ).length < 1 || $( option.link ).length === 0 ) {
-                               className += "-dim";
-                       }
-                       $( moreBlock ).attr( "data-role", "button" )
-                               .buttonMarkup( {
-                                       inline: true,
-                                       icon: "plus",
-                                       style: "circle"
-                               })
-                               .attr( { "href" : $.trim( option.link ), "tabindex" : 0 } )
-                               .addClass( "ui-tokentextarea-link-base" )
-                               .addClass( className )
-                               .find( "span.ui-btn-text" )
-                               .text( "Add recipient" );
-
-                       // append default htmlelements to main widget.
-                       $view.append( moreBlock );
-
-                       // bind a event
-                       this._bindEvents();
-                       self._focusStatus = "init";
-                       // display widget
-                       $view.show();
+               toggle: function () {
+                       this[ this._visible ? "hide" : "show" ]();
+               },
 
-                       // assign global variables
-                       self._viewWidth = $view.innerWidth();
-                       self._reservedWidth += self._calcBlockWidth( moreBlock );
-                       self._reservedWidth += self._calcBlockWidth( labeltag );
-                       self._fontSize = parseInt( $( moreBlock ).css( "font-size" ), 10 );
-                       self._currentWidth = self._reservedWidth;
-                       self._modifyInputBoxWidth();
+               destroy: function () {
+                       this.element.removeClass( "ui-header-fixed ui-footer-fixed ui-header-fullscreen ui-footer-fullscreen in out fade slidedown slideup ui-fixed-hidden" );
+                       this.element.closest( ".ui-page" ).removeClass( "ui-page-header-fixed ui-page-footer-fixed ui-page-header-fullscreen ui-page-footer-fullscreen" );
                },
 
-               // bind events
-               _bindEvents : function () {
-                       var self = this,
-                               $view = self.element,
-                               option = self.options,
-                               inputbox = $view.find( ".ui-tokentextarea-input" ),
-                               moreBlock = $view.find( ".ui-tokentextarea-link-base" ),
-                               isSeparator = false;
+               refresh: function () {
+                       var $elPage = $( ".ui-page-active" );
+                       this.setHeaderFooter( $elPage );
+                       this._updateHeaderArea( $elPage );
+               }
+       });
 
-                       // delegate a event to HTMLDivElement(each block).
-                       $view.delegate( "div", "click", function ( event ) {
-                               if ( $( this ).hasClass( "ui-tokentextarea-sblock" ) ) {
-                                       // If block is selected, it will be removed.
-                                       self._removeTextBlock();
-                               }
+       //auto self-init widgets
+       $( document )
+               .bind( "pagecreate create", function ( e ) {
+                       // DEPRECATED in 1.1: support for data-fullscreen=true|false on the page element.
+                       // This line ensures it still works, but we recommend moving the attribute to the toolbars themselves.
+                       if ( $( e.target ).jqmData( "fullscreen" ) ) {
+                               $( $.mobile.pagelayout.prototype.options.initSelector, e.target ).not( ":jqmData(fullscreen)" ).jqmData( "fullscreen", true );
+                       }
+                       $.mobile.pagelayout.prototype.enhanceWithin( e.target );
+               });
 
-                               var lockBlock = $view.find( "div.ui-tokentextarea-sblock" );
-                               if ( typeof lockBlock !== "undefined" ) {
-                                       lockBlock.removeClass( "ui-tokentextarea-sblock" ).addClass( "ui-tokentextarea-block" );
-                               }
-                               $( this ).removeClass( "ui-tokentextarea-block" ).addClass( "ui-tokentextarea-sblock" );
-                               $view.trigger( "select" );
-                       });
+}( jQuery ));
 
-                       inputbox.bind( "keyup", function ( event ) {
-                               // 8  : backspace
-                               // 13 : Enter
-                               // 186 : semi-colon
-                               // 188 : comma
-                               var keyValue = event.keyCode,
-                                       valueString = $( inputbox ).val(),
-                                       valueStrings = [],
-                                       index;
 
-                               if ( keyValue === 8 ) {
-                                       if ( valueString.length === 0 ) {
-                                               self._validateTargetBlock();
-                                       }
-                               } else if ( keyValue === 13 || keyValue === 186 || keyValue === 188 ) {
-                                       if ( valueString.length !== 0 ) {
-                                               // split content by separators(',', ';')
-                                               valueStrings = valueString.split ( /[,;]/ );
-                                               for ( index = 0; index < valueStrings.length; index++ ) {
-                                                       if ( valueStrings[index].length !== 0 && valueStrings[index].replace( /\s/g, "" ).length !== 0 ) {
-                                                               self._addTextBlock( valueStrings[index] );
-                                                       }
-                                               }
-                                       }
-                                       inputbox.val( "" );
-                                       isSeparator = true;
-                               } else {
-                                       self._unlockTextBlock();
-                               }
 
-                               return !isSeparator;
-                       });
+/*
+ * jQuery Mobile Widget @VERSION
+ *
+ * This software is licensed under the MIT licence (as defined by the OSI at
+ * http://www.opensource.org/licenses/mit-license.php)
+ *
+ * ***************************************************************************
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2011 by Intel Corporation Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ *
+ * Authors: Max Waterman <max.waterman@intel.com>
+ * Authors: Minkyu Kang <mk7.kang@samsung.com>
+ */
 
-                       moreBlock.click( function () {
-                               if ( $( moreBlock ).hasClass( "ui-tokentextarea-link-dim" ) ) {
-                                       return;
-                               }
+/**
+ * tizenslider modifies the JQuery Mobile slider and is created in the same way.
+ *
+ * See the JQuery Mobile slider widget for more information :
+ *     http://jquerymobile.com/demos/1.0a4.1/docs/forms/forms-slider.html
+ *
+ * The JQuery Mobile slider option:
+ *     theme: specify the theme using the 'data-theme' attribute
+ *
+ * Options:
+ *     theme: string; the theme to use if none is specified using the 'data-theme' attribute
+ *            default: 'c'
+ *     popup: boolean; controls whether the popup is displayed or not
+ *                   specify if the popup is enabled using the 'data-popup' attribute
+ *                   set from javascript using .tizenslider('option','popup',newValue)
+ *
+ * Events:
+ *     changed: triggers when the value is changed (rather than when the handle is moved)
+ *
+ * Examples:
+ *
+ *     <a href="#" id="popupEnabler" data-role="button" data-inline="true">Enable popup</a>
+ *     <a href="#" id="popupDisabler" data-role="button" data-inline="true">Disable popup</a>
+ *     <div data-role="fieldcontain">
+ *         <input id="mySlider" data-theme='a' data-popup='false' type="range" name="slider" value="7" min="0" max="9" />
+ *     </div>
+ *     <div data-role="fieldcontain">
+ *         <input id="mySlider2" type="range" name="slider" value="77" min="0" max="777" />
+ *     </div>
+ *
+ *     // disable popup from javascript
+ *     $('#mySlider').tizenslider('option','popup',false);
+ *
+ *     // from buttons
+ *     $('#popupEnabler').bind('vclick', function() {
+ *         $('#mySlider').tizenslider('option','popup',true);
+ *     });
+ *     $('#popupDisabler').bind('vclick', function() {
+ *         $('#mySlider').tizenslider('option','popup',false);
+ *     });
+ */
 
-                               $( inputbox ).removeClass( "ui-tokentextarea-input-visible" ).addClass( "ui-tokentextarea-input-invisible" );
+/**
+       @class Slider
+       The slider widget shows a control on the screen that you can use to change values by dragging a handle on a horizontal scale. Sliders can be used in Tizen as described in the jQueryMobile documentation for sliders.
 
-                               $.mobile.changePage( option.link, {
-                                       transition: "slide",
-                                       reverse: false,
-                                       changeHash: false
-                               });
-                       });
+       To add a slider widget to the application, use the following code:
 
-                       $( document ).bind( "pagechange.mbe", function ( event ) {
-                               if ( $view.innerWidth() === 0 ) {
-                                       return ;
-                               }
-                               self._modifyInputBoxWidth();
-                               $( inputbox ).removeClass( "ui-tokentextarea-input-invisible" ).addClass( "ui-tokentextarea-input-visible" );
-                       });
+               <input data-popup='false' type="range" name="slider" value="5" min="0" max="10" data-icon="text" data-text-left="Min" data-text-right="Max" />
 
-                       $view.bind( "click", function ( event ) {
-                               if ( self._focusStatus === "focusOut" ) {
-                                       self.focusIn();
-                               }
-                       });
+       The slider can define callbacks for events as described in the jQueryMobile documentation for slider events.
+       You can use methods with the slider as described in the jQueryMobile documentation for slider methods.
+*/
+/**
+       @property {String} data-icon
+       Defines the icon style for the slider ends. The icon options are bright, volume, and text.
+       The default value is text.
+*/
+/**
+       @property {Boolean} data-popup
+       Enables or disables a pop-up showing the current value while the handle is dragged.
+       The default value is true.
+*/
+/**
+       @property {String} data-text-left
+       Defines the text displayed on the left side of the slider.
+       The data-icon option must be set to text.
+*/
+/**
+       @property {String} data-text-right
+       Defines the text displayed on the right side of the slider.
+       The data-icon option must be set to text.
+*/
+
+(function ($, window, undefined) {
+       $.widget("tizen.tizenslider", $.mobile.widget, {
+               options: {
+                       popup: true
                },
 
-               // create a textbutton and append this button to parent layer.
-               // @param arg1 : string
-               // @param arg2 : index
-               _addTextBlock : function ( messages, blockIndex ) {
-                       if ( arguments.length === 0 ) {
-                               return;
-                       }
+               popup: null,
+               handle: null,
+               handleText: null,
 
-                       if ( !messages ) {
-                               return ;
-                       }
+               _create: function () {
+                       this.currentValue = null;
+                       this.popupVisible = false;
 
                        var self = this,
-                               $view = self.element,
-                               content = messages,
-                               index = blockIndex,
-                               blocks = null,
-                               textBlock = null;
-
-                       if ( self._viewWidth === 0 ) {
-                               self._viewWidth = $view.innerWidth();
-                       }
+                               inputElement = $( this.element ),
+                               slider,
+                               handle_press,
+                               popupEnabledAttr,
+                               icon,
+                               text_right,
+                               text_left,
+                               text_length,
+                               elem_left,
+                               elem_right,
+                               margin_left,
+                               margin_right;
 
-                       // Create a new text HTMLDivElement.
-                       textBlock = $( document.createElement( 'div' ) );
+                       // apply jqm slider
+                       inputElement.slider();
 
-                       textBlock.text( content ).addClass( "ui-tokentextarea-block" ).attr( { "aria-label" : "double tap to edit", "tabindex" : 0 } );
-                       textBlock.css( {'visibility': 'hidden'} );
+                       // hide the slider input element proper
+                       inputElement.hide();
 
-                       blocks = $view.find( "div" );
-                       if ( index !== null && index <= blocks.length ) {
-                               $( blocks[index] ).before( textBlock );
-                       } else {
-                               $view.find( ".ui-tokentextarea-input" ).before( textBlock );
+                       self.popup = $('<div class="ui-slider-popup"></div>');
+
+                       // set the popup according to the html attribute
+                       popupEnabledAttr = inputElement.jqmData('popup');
+                       if ( popupEnabledAttr !== undefined ) {
+                               self.options.popup = ( popupEnabledAttr == true );
                        }
 
-                       textBlock = self._ellipsisTextBlock( textBlock );
-                       textBlock.css( {'visibility': 'visible'} );
+                       // get the actual slider added by jqm
+                       slider = inputElement.next('.ui-slider');
 
-                       self._modifyInputBoxWidth();
+                       icon = inputElement.attr('data-icon');
 
-                       textBlock.hide();
-                       textBlock.fadeIn( "fast", function () {
-                               self._currentWidth += self._calcBlockWidth( textBlock );
-                               $view.trigger( "add" );
-                       });
-               },
+                       // wrap the background
+                       slider.wrap('<div class="ui-slider-container"></div>');
 
-               _removeTextBlock : function () {
-                       var self = this,
-                               $view = this.element,
-                               lockBlock = $view.find( "div.ui-tokentextarea-sblock" ),
-                               _temp = null,
-                               _dummy = function () {};
+                       // get the handle
+                       self.handle = slider.find('.ui-slider-handle');
 
-                       if ( lockBlock !== null && lockBlock.length > 0 ) {
-                               self._currentWidth -= self._calcBlockWidth( lockBlock );
+                       // remove the rounded corners from the slider and its children
+                       slider.removeClass('ui-btn-corner-all');
+                       slider.find('*').removeClass('ui-btn-corner-all');
 
-                               lockBlock.fadeOut( "fast", function () {
-                                       lockBlock.remove();
-                                       self._modifyInputBoxWidth();
-                               });
+                       // add icon
+                       switch ( icon ) {
+                       case 'bright':
+                       case 'volume':
+                               elem_left = $('<div class="ui-slider-left-' + icon + '"></div>');
+                               elem_right = $('<div class="ui-slider-right-' + icon + '"></div>');
 
-                               this._eventRemoveCall = true;
-                               if ( $view[0].remove ) {
-                                       _temp = $view[0].remove;
-                                       $view[0].remove = _dummy;
-                               }
-                               $view.triggerHandler( "remove" );
-                               if ( _temp) {
-                                       $view[0].remove = _temp;
-                               }
-                               this._eventRemoveCall = false;
-                       } else {
-                               $view.find( "div:last" ).removeClass( "ui-tokentextarea-block" ).addClass( "ui-tokentextarea-sblock" );
-                       }
-               },
+                               slider.before( elem_left );
+                               slider.after( elem_right );
 
-               _calcBlockWidth : function ( block ) {
-                       return $( block ).outerWidth( true );
-               },
+                               margin_left = elem_left.width() + 16;
+                               margin_right = elem_right.width() + 16;
+                               break;
 
-               _unlockTextBlock : function () {
-                       var $view = this.element,
-                               lockBlock = $view.find( "div.ui-tokentextarea-sblock" );
-                       if ( lockBlock ) {
-                               lockBlock.removeClass( "ui-tokentextarea-sblock" ).addClass( "ui-tokentextarea-block" );
-                       }
-               },
+                       case 'text':
+                               text_left = ( inputElement.attr('data-text-left') === undefined ) ? '' :
+                                               inputElement.attr('data-text-left').substring( 0, 3 );
+                               text_right = ( inputElement.attr('data-text-right') === undefined ) ? '' :
+                                               inputElement.attr('data-text-right').substring( 0, 3 );
 
-               // call when remove text block by backspace key.
-               _validateTargetBlock : function () {
-                       var self = this,
-                               $view = self.element,
-                               lastBlock = $view.find( "div:last" ),
-                               tmpBlock = null;
+                               text_length = Math.max( text_left.length, text_right.length ) + 1;
 
-                       if ( lastBlock.hasClass( "ui-tokentextarea-sblock" ) ) {
-                               self._removeTextBlock();
-                       } else {
-                               tmpBlock = $view.find( "div.ui-tokentextarea-sblock" );
-                               tmpBlock.removeClass( "ui-tokentextarea-sblock" ).addClass( "ui-tokentextarea-block" );
-                               lastBlock.removeClass( "ui-tokentextarea-block" ).addClass( "ui-tokentextarea-sblock" );
-                       }
-               },
+                               margin_left = text_length + "rem";
+                               margin_right = text_length + "rem";
 
-               _ellipsisTextBlock : function ( textBlock ) {
-                       var self = this,
-                               $view = self.element,
-                               maxWidth = self._viewWidth / 2;
+                               elem_left = $('<div class="ui-slider-left-text" style="left:' +
+                                       -( text_length ) + 'rem; width:' + text_length + 'rem;">' +
+                                       '<span style="position:relative;top:0.4em;">' +
+                                       text_left +
+                                       '</span></div>');
+                               elem_right = $('<div class="ui-slider-right-text" style="right:' +
+                                       -( text_length ) + 'rem; width:' + text_length + 'rem;">' +
+                                       '<span style="position:relative;top:0.4em;">' +
+                                       text_right +
+                                       '</span></div>');
 
-                       if ( self._calcBlockWidth( textBlock ) > maxWidth ) {
-                               $( textBlock ).width( maxWidth - self._marginWidth );
+                               slider.before( elem_left );
+                               slider.after( elem_right );
+                               break;
                        }
 
-                       return textBlock;
-               },
+                       if ( icon ) {
+                               slider.parent('.ui-slider-container').css({
+                                       "margin-left": margin_left,
+                                       "margin-right": margin_right
+                               });
+                       }
 
-               _modifyInputBoxWidth : function () {
-                       var self = this,
-                               $view = self.element,
-                               margin = 0,
-                               labelWidth = 0,
-                               anchorWidth = 0,
-                               inputBoxWidth = 0,
-                               blocks = $view.find( "div" ),
-                               blockWidth = 0,
-                               index = 0,
-                               inputBoxMargin = 10,
-                               inputBox = $view.find( ".ui-tokentextarea-input" );
+                       // handle press
+                       slider.append($('<div class="ui-slider-handle-press"></div>'));
+                       self.handle_press = slider.find('.ui-slider-handle-press');
+                       self.handle_press.css('display', 'none');
 
-                       if ( $view.width() === 0 ) {
-                               return;
-                       }
+                       // add a popup element (hidden initially)
+                       slider.parents(".ui-page").append( self.popup );
+                       self.popup.hide();
 
-                       if ( self._labelWidth === 0 ) {
-                               self._labelWidth = $view.find( ".ui-tokentextarea-label" ).outerWidth( true );
-                               self._anchorWidth = $view.find( ".ui-tokentextarea-link-base" ).outerWidth( true );
-                               self._marginWidth = parseInt( ( $( inputBox ).css( "margin-left" ) ), 10 );
-                               self._marginWidth += parseInt( ( $( inputBox ).css( "margin-right" ) ), 10 );
-                               self._viewWidth = $view.innerWidth();
-                       }
+                       // get the element where value can be displayed
+                       self.handleText = slider.find('.ui-btn-text');
 
-                       margin = self._marginWidth;
-                       labelWidth = self._labelWidth;
-                       anchorWidth = self._anchorWidth;
-                       inputBoxWidth = self._viewWidth - labelWidth;
+                       // set initial value
+                       self.updateSlider();
 
-                       for ( index = 0; index < blocks.length; index += 1 ) {
-                               blockWidth = self._calcBlockWidth( blocks[index] );
+                       // bind to changes in the slider's value to update handle text
+                       this.element.bind('change', function () {
+                               self.updateSlider();
+                       });
 
-                               if ( blockWidth >= inputBoxWidth + anchorWidth ) {
-                                       if ( blockWidth >= inputBoxWidth ) {
-                                               inputBoxWidth = self._viewWidth - blockWidth;
-                                       } else {
-                                               inputBoxWidth = self._viewWidth;
-                                       }
-                               } else {
-                                       if ( blockWidth > inputBoxWidth ) {
-                                               inputBoxWidth = self._viewWidth - blockWidth;
-                                       } else {
-                                               inputBoxWidth -= blockWidth;
-                                       }
-                               }
-                       }
+                       // bind clicks on the handle to show the popup
+                       self.handle.bind('vmousedown', function () {
+                               self.showPopup();
+                       });
 
-                       inputBoxWidth -= margin;
-                       if ( inputBoxWidth < anchorWidth * 2 ) {
-                               inputBoxWidth = self._viewWidth - margin;
-                       }
-                       $( inputBox ).width( inputBoxWidth - anchorWidth - inputBoxMargin );
+                       // watch events on the document to turn off the slider popup
+                       slider.add( document ).bind('vmouseup', function () {
+                               self.hidePopup();
+                       });
                },
 
-               _stringFormat : function ( expression ) {
-                       var pattern = null,
-                               message = expression,
-                               i = 0;
-                       for ( i = 1; i < arguments.length; i += 1 ) {
-                               pattern = "{" + ( i - 1 ) + "}";
-                               message = message.replace( pattern, arguments[i] );
-                       }
-                       return message;
+               _handle_press_show: function () {
+                       this.handle_press.css('display', '');
                },
 
-               _resizeBlocks : function () {
-                       var self = this,
-                               $view = self.element,
-                               blocks = $view.find( "div" ),
-                               index = 0;
-
-                       for ( index = 0 ; index < blocks.length ; index += 1 ) {
-                               $( blocks[index] ).css( "width", "auto" );
-                               blocks[index] = self._ellipsisTextBlock( blocks[index] );
-                       }
+               _handle_press_hide: function () {
+                       this.handle_press.css('display', 'none');
                },
 
-               //---------------------------------------------------- //
-               //                                      Public Method   //
-               //----------------------------------------------------//
-               //
-               // Focus In Event
-               //
-               focusIn : function () {
-                       if ( this._focusStatus === "focusIn" ) {
-                               return;
-                       }
-
-                       var $view = this.element;
+               // position the popup
+               positionPopup: function () {
+                       var dstOffset = this.handle.offset();
 
-                       $view.find( ".ui-tokentextarea-label" ).attr( "tabindex", 0 ).show();
-                       $view.find( ".ui-tokentextarea-desclabel" ).remove();
-                       $view.find( "div.ui-tokentextarea-sblock" ).removeClass( "ui-tokentextarea-sblock" ).addClass( "ui-tokentextarea-block" );
-                       $view.find( "div" ).attr( { "aria-label" : "double tap to edit", "tabindex" : 0 } ).show();
-                       $view.find( ".ui-tokentextarea-input" ).removeClass( "ui-tokentextarea-input-invisible" ).addClass( "ui-tokentextarea-input-visible" ).attr( "tabindex", 0 );
-                       $view.find( "a" ).attr( "tabindex", 0 ).show();
+                       this.popup.offset({
+                               left: dstOffset.left + ( this.handle.width() - this.popup.width() ) / 2,
+                               top: dstOffset.top - this.popup.height()
+                       });
 
-                       // change focus state.
-                       this._modifyInputBoxWidth();
-                       this._focusStatus = "focusIn";
-                       $view.removeClass( "ui-tokentextarea-focusout" ).addClass( "ui-tokentextarea-focusin" ).removeAttr( "tabindex" );
-                       $view.find( ".ui-tokentextarea-input" ).focus();
+                       this.handle_press.offset({
+                               left: dstOffset.left,
+                               top: dstOffset.top
+                       });
                },
 
-               focusOut : function () {
-                       if ( this._focusStatus === "focusOut" ) {
-                               return;
-                       }
+               // show value on the handle and in popup
+               updateSlider: function () {
+                       var font_size,
+                               font_length,
+                               font_top,
+                               padding_size,
+                               newValue,
+                               get_value_length = function ( v ) {
+                                       var val = Math.abs( v ),
+                                               len;
 
-                       var self = this,
-                               $view = self.element,
-                               tempBlock = null,
-                               stateBlock = null,
-                               numBlock = null,
-                               statement = "",
-                               index = 0,
-                               lastIndex = 10,
-                               label = $view.find( ".ui-tokentextarea-label" ),
-                               more = $view.find( "span" ),
-                               blocks = $view.find( "div" ),
-                               currentWidth = $view.outerWidth( true ) - more.outerWidth( true ) - label.outerWidth( true ),
-                               blockWidth = 0;
+                                       if ( val > 999 ) {
+                                               len = 4;
+                                       } else if ( val > 99 ) {
+                                               len = 3;
+                                       } else if ( val > 9 ) {
+                                               len = 2;
+                                       } else {
+                                               len = 1;
+                                       }
 
-                       label.removeAttr( "tabindex" );
-                       $view.find( ".ui-tokentextarea-input" ).removeClass( "ui-tokentextarea-input-visible" ).addClass( "ui-tokentextarea-input-invisible" ).removeAttr( "tabindex" );
-                       $view.find( "a" ).removeAttr( "tabindex" ).hide();
-                       blocks.removeAttr( "aria-label" ).removeAttr( "tabindex" ).hide();
+                                       if ( v < 0 ) {
+                                               len++;
+                                       }
 
-                       currentWidth = currentWidth - self._reservedWidth;
+                                       return len;
+                               };
 
-                       for ( index = 0; index < blocks.length; index++ ) {
-                               blockWidth = $( blocks[index] ).outerWidth( true );
-                               if ( currentWidth - blockWidth <= 0 ) {
-                                       lastIndex = index - 1;
+                       // remove the title attribute from the handle (which is
+                       // responsible for the annoying tooltip); NB we have
+                       // to do it here as the jqm slider sets it every time
+                       // the slider's value changes :(
+                       this.handle.removeAttr('title');
+
+                       newValue = this.element.val();
+
+                       font_length = get_value_length( newValue );
+
+                       if ( this.popupVisible ) {
+                               this.positionPopup();
+
+                               switch ( font_length ) {
+                               case 1:
+                               case 2:
+                                       font_size = '1.5rem';
+                                       padding_size = '0.15rem';
+                                       break;
+                               case 3:
+                                       font_size = '1rem';
+                                       padding_size = '0.5rem';
+                                       break;
+                               default:
+                                       font_size = '0.8rem';
+                                       padding_size = '0.5rem';
                                        break;
                                }
 
-                               $( blocks[index] ).show();
-                               currentWidth -= blockWidth;
+                               this.popup.css({
+                                       "font-size": font_size,
+                                       "padding-top": padding_size
+                               });
                        }
 
-                       if ( lastIndex !== blocks.length ) {
-                               statement = self._stringFormat( self.options.description, blocks.length - lastIndex - 1 );
-                               tempBlock = $( document.createElement( 'span' ) );
-                               tempBlock.addClass( "ui-tokentextarea-desclabel" ).attr( { "aria-label" : "more, double tap to edit", "tabindex" : "-1" } );
-                               stateBlock = $( document.createElement( 'span' ) ).text( statement ).attr( "aria-hidden", "true" );
-                               numBlock = $( document.createElement( 'span' ) ).text( blocks.length - lastIndex - 1 ).attr( "aria-label", "and" ).css( "visibility", "hidden" );
-                               tempBlock.append( stateBlock );
-                               tempBlock.append( numBlock );
-                               $( blocks[lastIndex] ).after( tempBlock );
+                       if ( newValue === this.currentValue ) {
+                               return;
                        }
 
-                       // update focus state
-                       this._focusStatus = "focusOut";
-                       $view.removeClass( "ui-tokentextarea-focusin" ).addClass( "ui-tokentextarea-focusout" ).attr( "tabindex", 0 );
-               },
-
-               inputText : function ( message ) {
-                       var $view = this.element;
+                       switch ( font_length ) {
+                       case 1:
+                               font_size = '0.95rem';
+                               font_top = '0';
+                               break;
+                       case 2:
+                               font_size = '0.85rem';
+                               font_top = '-0.01rem';
+                               break;
+                       case 3:
+                               font_size = '0.65rem';
+                               font_top = '-0.05rem';
+                               break;
+                       default:
+                               font_size = '0.45rem';
+                               font_top = '-0.15rem';
+                               break;
+                       }
 
-                       if ( arguments.length === 0 ) {
-                               return $view.find( ".ui-tokentextarea-input" ).val();
+                       if ( font_size != this.handleText.css('font-size') ) {
+                               this.handleText.css({
+                                       'font-size': font_size,
+                                       'top': font_top
+                               });
                        }
-                       $view.find( ".ui-tokentextarea-input" ).val( message );
-                       return message;
-               },
 
-               select : function ( index ) {
-                       var $view = this.element,
-                               lockBlock = null,
-                               blocks = null;
+                       this.currentValue = newValue;
+                       this.handleText.text( newValue );
+                       this.popup.html( newValue );
 
-                       if ( this._focusStatus === "focusOut" ) {
+                       this.element.trigger( 'update', newValue );
+               },
+
+               // show the popup
+               showPopup: function () {
+                       if ( !this.options.popup || this.popupVisible ) {
                                return;
                        }
 
-                       if ( arguments.length === 0 ) {
-                               // return a selected block.
-                               lockBlock = $view.find( "div.ui-tokentextarea-sblock" );
-                               if ( lockBlock ) {
-                                       return lockBlock.text();
-                               }
-                               return null;
-                       }
-                       // 1. unlock all blocks.
-                       this._unlockTextBlock();
-                       // 2. select pointed block.
-                       blocks = $view.find( "div" );
-                       if ( blocks.length > index ) {
-                               $( blocks[index] ).removeClass( "ui-tokentextarea-block" ).addClass( "ui-tokentextarea-sblock" );
-                               $view.trigger( "select" );
-                       }
-                       return null;
+                       this.popup.show();
+                       this.popupVisible = true;
+                       this._handle_press_show();
                },
 
-               add : function ( message, position ) {
-                       if ( this._focusStatus === "focusOut" ) {
+               // hide the popup
+               hidePopup: function () {
+                       if ( !this.options.popup || !this.popupVisible ) {
                                return;
                        }
 
-                       this._addTextBlock( message, position );
+                       this.popup.hide();
+                       this.popupVisible = false;
+                       this._handle_press_hide();
                },
 
-               remove : function ( position ) {
-                       var self = this,
-                               $view = this.element,
-                               blocks = $view.find( "div" ),
-                               index = 0,
-                               _temp = null,
-                               _dummy = function () {};
+               _setOption: function (key, value) {
+                       var needToChange = ( value !== this.options[key] );
 
-                       if ( this._focusStatus === "focusOut" ) {
+                       if ( !needToChange ) {
                                return;
                        }
 
-                       if ( arguments.length === 0 ) {
-                               blocks.fadeOut( "fast", function () {
-                                       blocks.remove();
-                                       self._modifyInputBoxWidth();
-                                       self._trigger( "clear" );
-                               });
-                       } else if ( !isNaN( position ) ) {
-                               // remove selected button
-                               index = ( ( position < blocks.length ) ? position : ( blocks.length - 1 ) );
-
-                               $( blocks[index] ).fadeOut( "fast", function () {
-                                       $( blocks[index] ).remove();
-                                       self._modifyInputBoxWidth();
-                               });
+                       switch ( key ) {
+                       case 'popup':
+                               this.options.popup = value;
 
-                               this._eventRemoveCall = true;
-                               if ( $view[0].remove ) {
-                                       _temp = $view[0].remove;
-                                       $view[0].remove = _dummy;
-                               }
-                               $view.triggerHandler( "remove" );
-                               if ( _temp) {
-                                       $view[0].remove = _temp;
+                               if ( this.options.popup) {
+                                       this.updateSlider();
+                               } else {
+                                       this.hidePopup();
                                }
-                               this._eventRemoveCall = false;
+
+                               break;
                        }
-               },
+               }
+       });
 
-               length : function () {
-                       return this.element.find( "div" ).length;
-               },
+       // stop jqm from initialising sliders
+       $( document ).bind( "pagebeforecreate", function ( e ) {
+               if ( $.data( window, "jqmSliderInitSelector" ) === undefined ) {
+                       $.data( window, "jqmSliderInitSelector",
+                               $.mobile.slider.prototype.options.initSelector );
+                       $.mobile.slider.prototype.options.initSelector = null;
+               }
+       });
 
-               refresh : function () {
-                       var self = this,
-                               $view = this.element;
+       // initialise sliders with our own slider
+       $( document ).bind( "pagecreate create", function ( e ) {
+               var jqmSliderInitSelector = $.data( window, "jqmSliderInitSelector" );
+               $( e.target ).find(jqmSliderInitSelector).not('select').tizenslider();
+               $( e.target ).find(jqmSliderInitSelector).filter('select').slider();
+       });
 
-                       self._viewWidth = $view.innerWidth();
-                       self._resizeBlocks();
-                       self._modifyInputBoxWidth();
+}( jQuery, this ));
+
+
+
+/*
+ * jQuery UI Progressbar @VERSION
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar
+ *
+ * Depends:
+ *   jquery.ui.core.js
+ *   jquery.ui.widget.js
+ * Original file:
+ *   jquery.ui.progressbar.js
+ */
+/* This is from jquery ui plugin - progressbar 11/16/2011 */
+
+
+/**
+       @class ProgressBar
+       The progress bar widget shows a control that indicates the progress percentage of an on-going operation. This widget can be scaled to fit inside a parent container.
+
+       To add a progress bar widget to the application, use the following code:
+
+               <div id="foo" data-role="progressbar"</div>
+*/
+/**
+       @event change
+       The progress bar can define a callback for the change event, which is fired when the progress value is changed:
+               <div id="foo" data-role="progressbar"></div>
+               $("#foo").bind("change", function (ev, val) {
+                       Console.log("Value is changed to " + val);
+               });
+*/
+/**
+       @method value
+       You can use the value method with the pickers to set or get the current default progress bar value:
+
+               <div id="foo" data-role="progressbar"></div>
+               var oldVal = $("#foo").progressbar("value");
+               $("#foo").progressbar("value", 50);
+*/
+
+(function ( $, window, undefined ) {
+
+       $.widget( "tizen.progressbar", $.mobile.widget, {
+               options: {
+                       value: 0,
+                       max: 100
                },
 
-               destroy : function () {
-                       var $view = this.element,
-                               _temp = null,
-                               _dummy = function () {};
+               min: 0,
 
-                       if ( this._eventRemoveCall ) {
-                               return;
+               _create: function () {
+                       this.element
+                               .addClass( "ui-progressbar" )
+                               .attr( {
+                                       role: "progressbar",
+                                       "aria-valuemin": this.min,
+                                       "aria-valuemax": this.options.max,
+                                       "aria-valuenow": this._value()
+                               } );
+
+                       this.valueDiv = $( "<div class='ui-progressbar-value'></div>" )
+                               .appendTo( this.element );
+
+                       this.valueDiv.wrap("<div class='ui-progressbar-bg'></div>");
+
+                       this.oldValue = this._value();
+                       this._refreshValue();
+               },
+
+               _destroy: function () {
+                       this.element
+                               .removeClass( "ui-progressbar" )
+                               .removeAttr( "role" )
+                               .removeAttr( "aria-valuemin" )
+                               .removeAttr( "aria-valuemax" )
+                               .removeAttr( "aria-valuenow" );
+
+                       this.valueDiv.remove();
+               },
+
+               value: function ( newValue ) {
+                       if ( newValue === undefined ) {
+                               return this._value();
                        }
 
-                       $view.find( ".ui-tokentextarea-label" ).remove();
-                       $view.find( "div" ).undelegate( "click" ).remove();
-                       $view.find( "a" ).remove();
-                       $view.find( ".ui-tokentextarea-input" ).unbind( "keyup" ).remove();
+                       this._setOption( "value", newValue );
+                       return this;
+               },
 
-                       this._eventRemoveCall = true;
-                       if ( $view[0].remove ) {
-                               _temp = $view[0].remove;
-                               $view[0].remove = _dummy;
+               _setOption: function ( key, value ) {
+                       if ( key === "value" ) {
+                               this.options.value = value;
+                               this._refreshValue();
+                               if ( this._value() === this.options.max ) {
+                                       this.element.trigger( "complete" );
+                               }
                        }
-                       $view.remove();
-                       if ( _temp) {
-                               $view[0].remove = _temp;
+                       // jquery.ui.widget.js MUST be updated to new version!
+                       //this._super( "_setOption", key, value );
+               },
+
+               _value: function () {
+                       var val = this.options.value;
+                       // normalize invalid value
+                       if ( typeof val !== "number" ) {
+                               val = 0;
                        }
-                       this._eventRemoveCall = false;
+                       return Math.min( this.options.max, Math.max( this.min, val ) );
+               },
 
-                       this._trigger( "destroy" );
+               _percentage: function () {
+                       return 100 * this._value() / this.options.max;
+               },
+
+               _refreshValue: function () {
+                       var value = this.value(),
+                               percentage = this._percentage();
+
+                       if ( this.oldValue !== value ) {
+                               this.oldValue = value;
+                               this.element.trigger( "change" );
+                       }
+
+                       this.valueDiv
+                               .toggle( value > this.min )
+                               .width( percentage.toFixed(0) + "%" );
+                       this.element.attr( "aria-valuenow", value );
                }
-       });
+       } );
 
-       $( document ).bind( "pagecreate create", function () {
-               $( ":jqmData(role='tokentextarea')" ).tokentextarea();
-       });
+       // auto self-init widgets
+       $( document ).bind( "pagecreate", function ( e ) {
+               $( e.target ).find( ":jqmData(role='progressbar')" ).progressbar();
+       } );
 
-       $( window ).bind( "resize", function () {
-               $( ":jqmData(role='tokentextarea')" ).tokentextarea( "refresh" );
-       });
-} ( jQuery, window, document ) );
+}( jQuery, this ) );
 
 
 
-/*
+/* ***************************************************************************
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
  *
- * This software is licensed under the MIT licence (as defined by the OSI at
- * http://www.opensource.org/licenses/mit-license.php)
- * 
- * ***************************************************************************
- * Copyright (C) 2011 by Intel Corporation Ltd.
- * 
  * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software" ),
+ * copy of this software and associated documentation files (the "Software"),
  * to deal in the Software without restriction, including without limitation
  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  * and/or sell copies of the Software, and to permit persons to whom the
  * Software is furnished to do so, subject to the following conditions:
- * 
+ *
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
- * 
+ *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -10783,351 +10315,290 @@ jQuery.extend(jQuery.mobile.tizen, {
  * DEALINGS IN THE SOFTWARE.
  * ***************************************************************************
  */
+/*
+* jQuery Mobile Framework : "textinput" plugin for text inputs, textareas
+* Copyright (c) jQuery Project
+* Dual licensed under the MIT or GPL Version 2 licenses.
+* http://jquery.org/license
+* Authors: Jinhyuk Jun <jinhyuk.jun@samsung.com>
+*          Wongi Lee <wongi11.lee@samsung.com>
+*/
 
-// Base class for widgets that need the following features:
-//
-// I. HTML prototype loading
-//
-// This class provides HTML prototype loading for widgets. That is, the widget implementation specifies its HTML portions
-// in one continuous HTML snippet, and it optionally provides an object containing selectors into the various parts of the
-// HTML snippet. This widget loads the HTML snippet into a jQuery object, and optionally assigns jQuery objects to each of
-// the selectors in the optionally provided object.
-//
-// To use this functionality you can either derive from this class, or you can call its prototype's gtype method.
-//
-// 1. Widgets deriving from this class should define _htmlProto as part of their prototype declaration. _htmlProto looks like
-// this:
-//
-// _htmlProto: {
-//     source: string|jQuery object (optional) default: string - The name of the widget
-//     ui: {
-//         uiElement1: "#ui-element-1-selector",
-//         uiElement2: "#ui-element-2-selector",
-//         ...
-//         subElement: {
-//             subElement1: "#sub-element-1-selector",
-//             subElement2: "#sub-element-2-selector",
-//             ...
-//         }
-//         ...
-//     }
-// }
-//
-// If neither 'source' nor 'ui' are defined, you must still include an empty _htmlProto key (_htmlProto: {}) to indicate
-// that you wish to make use of this feature. This will cause a prototype HTML file named after your widget to be loaded.
-// The loaded prototype will be placed into your widget's prototype's _protoHtml.source key.
-//
-// If 'source' is defined as a string, it is the name of the widget (including namespace). This is the default. If your
-// widget's HTML prototype is loaded via AJAX and the name of the AJAX file is different from the name of your widget
-// (that is, it is not "<widgetName>.prototype.html", then you should explicitly define 'source' as:
-//
-// If you wish to load HTML prototypes via AJAX, modify the getProtoPath() function defined below to reflect the directory
-// structure holding your widget HTML prototypes.
-//
-// source: "alternateWidgetName"
-//
-// If AJAX loading fails, source is set to a jQuery object containing a div with an error message. You can check whether
-// loading failed via the jQuery object's jqmData( "tizen.widgetex.ajax.fail" ) data item. If false, then the jQuery object
-// is the actual prototype loaded via AJAX or present inline. Otherwise, the jQuery object is the error message div.
-//
-// If 'source' is defined as a jQuery object, it is considered already loaded.
-//
-// if 'ui' is defined inside _htmlProto, It is assumed to be an object such that every one of its keys is either a string,
-// or another object with the same properties as itself.
-//
-// When a widget is instantiated, the HTML prototype is loaded if not already present in the prototype. If 'ui' is present
-// inside _htmlProto, the prototype is cloned. Then, a new structure is created based on 'ui' with each selector replaced
-// by a jQuery object containing the results of performing .find() on the prototype's clone with the filter set to the
-// value of the string. In the special case where the selector starts with a '#', the ID is removed from the element after
-// it is assigned into the structure being created. This structure is then made accessible from the widget instance via
-// the '_ui' key (i.e., this._ui).
-//
-// 2. Use the loadPrototype method when your widget does not derive from $.tizen.widgetex:
-// Add _htmlProto to your widget's prototype as described above. Then, in your widget's _create() method, call
-// loadPrototype in the following manner:
-//
-// $.tizen.widgetex.loadPrototype.call(this, "namespace.widgetName" );
-//
-// Thereafter, you may use the HTML prototype from your widget's prototype or, if you have specified a 'ui' key in your
-// _htmlProto key, you may use this._ui from your widget instance.
-//
-// II. realize method
-//
-// When a widget is created, some of its properties cannot be set immediately, because they depend on the widths/heights
-// of its constituent elements. They can only be calculated when the page containing the widget is made visible via the
-// "pageshow" event, because widths/heights always evaluate to 0 when retrieved from a widget that is not visible. When
-// you inherit from widgetex, you can add a "_realize" function to your prototype. This function will be called once right
-// after _create() if the element that anchors your widget is on a visible page. Otherwise, it will be called when the
-// page to which the widget belongs emits the "pageshow" event.
-//
-// NB: If your widget is inside a container which is itself not visible, such as an expandable or a collapsible, your
-// widget will remain hidden even though "pageshow" is fired and therefore _realize is called. In this case, widths and
-// heights will be unreliable even during _realize.
-//
-// III. systematic option handling
-//
-// If a widget has lots of options, the _setOption function can become a long switch for setting each recognized option.
-// It is also tempting to allow options to determine the way a widget is created, by basing decisions on various options
-// during _create(). Often, the actions based on option values in _create() are the same as those in _setOption. To avoid
-// such code duplication, this class calls _setOption once for each option after _create() has completed.
-//
-// Furthermore, to avoid writing long switches in a widget's _setOption method, this class implements _setOption in such
-// a way that, for any given option (e.g. "myOption" ), _setOption looks for a method _setMyOption in the widget's
-// implementation, and if found, calls the method with the value of the option.
-//
-// If your widget does not inherit from widgetex, you can still use widgetex' systematic option handling:
-// 1. define the _setOption method for your widget as follows:
-//      _setOption: $.tizen.widgetex.prototype._setOption
-// 2. Call this._setOptions(this.options) from your widget's _create() function.
-// 3. As with widgetex-derived widgets, implement a corresponding _setMyOptionName function for each option myOptionName
-// you wish to handle.
-//
-// IV. systematic value handling for input elements
-//
-// If your widget happens to be constructed from an <input> element, you have to handle the "value" attribute specially,
-// and you have to emit the "change" signal whenever it changes, in addition to your widget's normal signals and option
-// changes. With widgetex, you can assign one of your widget's "data-*" properties to be synchronized to the "value"
-// property whenever your widget is constructed onto an <input> element. To do this, define, in your prototype:
-//
-// _value: {
-//      attr: "data-my-attribute",
-//      signal: "signal-to-emit"
-// }
-//
-// Then, call this._setValue(newValue) whenever you wish to set the value for your widget. This will set the data-*
-// attribute, emit the custom signal (if set) with the new value as its parameter, and, if the widget is based on an
-// <input> element, it will also set the "value" attribute and emit the "change" signal.
-//
-// "attr" is required if you choose to define "_value", and identifies the data-attribute to set in addition to "value",
-// if your widget's element is an input.
-// "signal" is optional, and will be emitted when setting the data-attribute via this._setValue(newValue).
-//
-// If your widget does not derive from widgetex, you can still define "_value" as described above and call
-// $.tizen.widgetex.setValue(widget, newValue).
-//
-// V. Systematic enabled/disabled handling for input elements
-//
-// widgetex implements _setDisabled which will disable the input associated with this widget, if any. Thus, if you derive
-// from widgetex and you plan on implementing the disabled state, you should chain up to
-// $.tizen.widgetex.prototype._setDisabled(value), rather than $.Widget.prototype._setOption( "disabled", value).
+/**
+ * Searchbar can be created using <input> element with type=search
+ * <input type="search" name="search" id="search1" value=""  />
+ *
+ * Searchbar can be inserted 3 cases
+ * content : seachbar behave same as content element
+ * header : searchbar placed below title(header), It doesn't move when scrolling page
+ * inside optionheader : Searchbar placed inside optionheader, searchbar can be seen only expand optionheader
+ *
+ * Examples:
+ *
+ *     HTML markup for creating Searchbar
+ *             <input type="search"/>
+ *
+ *     How to make searchbar in content
+ *             <input type="search" name="" id="" value=""  />
+ *
+ *     How to make cancel button in searchbar
+ *             <div data-role="header" data-position ="fixed" >
+ *                     <h1>Searchbar</h1>
+ *                     <input type="search" data-cancel-btn=true name="" id="" value=""  />
+ *             </div>
+ *
+ *     How to make icon in front of searchbar
+ *             <div data-role="header" data-position ="fixed" >
+ *                     <h1>Searchbar</h1>
+ *                     <input type="search" data-icon="call" name="" id="" value=""  />
+ *             </div>
+*/
 
-(function ($, undefined) {
+/**
+       @class SearchBar
+       The search bar widget is used to search for page content. This widget can be placed in the header, option header, or page content.
 
-// Framework-specific HTML prototype path for AJAX loads
-       function getProtoPath() {
-               var theScriptTag = $( "script[data-framework-version][data-framework-root][data-framework-theme]" );
+       To add a search bar widget to the application, use the following code:
 
-               return (theScriptTag.attr( "data-framework-root" ) + "/" +
-                               theScriptTag.attr( "data-framework-version" ) + "/themes/" +
-                               theScriptTag.attr( "data-framework-theme" ) + "/proto-html" );
-       }
+               <label for="search-basic">Search Input:</label>
+               <input type="search" name="search" id="searc-basic" value="" data-mini="true" />
 
-       $.widget( "tizen.widgetex", $.mobile.widget, {
-               _createWidget: function () {
-                       $.tizen.widgetex.loadPrototype.call( this, this.namespace + "." + this.widgetName );
-                       $.mobile.widget.prototype._createWidget.apply( this, arguments );
+       Tizen supports many search bar options as described in the jQueryMobile documentation for search bar options.
+       The search bar can define callbacks for events as described in the jQueryMobile documentation for search bar events.
+       You can use methods with the search bar as described in the jQueryMobile documentation for search bar methods.
+*/
+
+(function ( $, undefined ) {
+
+       $.widget( "tizen.searchbar", $.mobile.widget, {
+               options: {
+                       theme: null,
+                       initSelector: "input[type='search'],:jqmData(type='search'), input[type='tizen-search'],:jqmData(type='tizen-search')"
                },
 
-               _init: function () {
-                       // TODO THIS IS TEMPORARY PATCH TO AVOID CTXPOPUP PAGE CRASH
-                       if ( this.element === undefined ) {
-                               return;
-                       }
+               _create: function () {
+                       var input = this.element,
+                               o = this.options,
+                               theme = o.theme || $.mobile.getInheritedTheme( this.element, "c" ),
+                               themeclass  = " ui-body-" + theme,
+                               focusedEl,
+                               clearbtn,
+                               cancelbtn,
+                               defaultText,
+                               defaultTextClass,
+                               trimedText,
+                               newClassName,
+                               newStyle,
+                               newDiv,
+                               searchimage,
+                               inputedText,
+                               useCancelBtn = false,
+                               frontIcon = false;
 
-                       var page = this.element.closest( ".ui-page" ),
-                               self = this,
-                               myOptions = {};
+                       $( "label[for='" + input.attr( "id" ) + "']" ).addClass( "ui-input-text" );
 
-                       if ( page.is( ":visible" ) ) {
-                               this._realize();
-                       } else {
-                               page.bind( "pageshow", function () { self._realize(); } );
+                       if ( typeof input[0].autocorrect !== "undefined" && !$.support.touchOverflow ) {
+                               // Set the attribute instead of the property just in case there
+                               // is code that attempts to make modifications via HTML.
+                               input[0].setAttribute( "autocorrect", "off" );
+                               input[0].setAttribute( "autocomplete", "off" );
                        }
 
-                       $.extend( myOptions, this.options );
-
-                       this.options = {};
+                       focusedEl = input.wrap( "<div class='ui-input-search ui-shadow-inset ui-corner-all ui-btn-shadow" + themeclass + "'></div>" ).parent();
 
-                       this._setOptions( myOptions );
-               },
+                       if ( $( this.element ).data( "cancel-btn" ) === true ) {
+                               useCancelBtn = true;
+                               focusedEl.addClass( "ui-input-search-default" );
+                       }
+                       if ( $( this.element ).data( "icon" ) != undefined ) {
+                               frontIcon = true;
+                               focusedEl.addClass( "ui-search-bar-icon" );
+                       }
 
-               _getCreateOptions: function () {
-                       // if we're dealing with an <input> element, value takes precedence over corresponding data-* attribute, if a
-                       // mapping has been established via this._value. So, assign the value to the data-* attribute, so that it may
-                       // then be assigned to this.options in the superclass' _getCreateOptions
+                       clearbtn = $( "<a href='#' class='ui-input-clear' title='clear text'>clear text</a>" )
+                               .bind('click', function ( event ) {
+                                       if ( input.attr( "disabled" ) == "disabled" ) {
+                                               return false;
+                                       }
+                                       input
+                                               .val( "" )
+                                               .focus()
+                                               .trigger( "change" );
+                                       clearbtn.addClass( "ui-input-clear-hidden" );
+                                       event.preventDefault();
+                               })
+                               .appendTo( focusedEl )
+                               .buttonMarkup({
+                                       icon: "deleteSearch",
+                                       iconpos: "notext",
+                                       corners: true,
+                                       shadow: true
+                               });
 
-                       if (this.element.is( "input" ) && this._value !== undefined) {
-                               var theValue =
-                                       ( ( this.element.attr( "type" ) === "checkbox" || this.element.attr( "type" ) === "radio" )
-                                                       ? this.element.is( ":checked" )
-                                                                       : this.element.is( "[value]" )
-                                                                       ? this.element.attr( "value" )
-                                                                                       : undefined);
+                       function toggleClear() {
+                               setTimeout(function () {
+                                       clearbtn.toggleClass( "ui-input-clear-hidden", !input.val() );
+                               }, 0);
+                       }
 
-                               if ( theValue != undefined ) {
-                                       this.element.attr( this._value.attr, theValue );
-                               }
+                       function showCancel() {
+                               focusedEl
+                                       .addClass( "ui-input-search-default" )
+                                       .removeClass( "ui-input-search-wide" );
+                               cancelbtn
+                                       .addClass( "ui-btn-cancel-show" )
+                                       .removeClass( "ui-btn-cancel-hide" );
                        }
 
-                       return $.mobile.widget.prototype._getCreateOptions.apply( this, arguments );
-               },
+                       function hideCancel() {
+                               focusedEl
+                                       .addClass( "ui-input-search-wide" )
+                                       .removeClass( "ui-input-search-default" );
+                               cancelbtn
+                                       .addClass( "ui-btn-cancel-hide" )
+                                       .removeClass( "ui-btn-cancel-show" );
+                               toggleClear();
+                       }
 
-               _setOption: function ( key, value ) {
-                       var setter = "_set" + key.replace(/^[a-z]/, function (c) { return c.toUpperCase(); } );
+                       function makeFrontIcon() {
+                               var IconStyle = $( input ).jqmData( "icon" ),
+                                       frontIcon = $( "<div data-role='button' data-style='circle'></div>" );
 
-                       if ( this[setter] !== undefined ) {
-                               this[setter]( value );
-                       } else {
-                               $.mobile.widget.prototype._setOption.apply( this, arguments );
+                               frontIcon
+                                       .appendTo( focusedEl.parent() )
+                                       .buttonMarkup( {
+                                               icon: IconStyle,
+                                               iconpos: "notext",
+                                               corners: true,
+                                               shadow: true
+                                       } );
+                               frontIcon.addClass( "ui-btn-search-front-icon" );
                        }
-               },
 
-               _setDisabled: function ( value ) {
-                       $.Widget.prototype._setOption.call( this, "disabled", value );
-                       if ( this.element.is( "input" ) ) {
-                               this.element.attr( "disabled", value );
-                       }
-               },
+                       toggleClear();
 
-               _setValue: function ( newValue ) {
-                       $.tizen.widgetex.setValue( this, newValue );
-               },
+                       input.bind( 'paste cut keyup focus change blur', toggleClear );
 
-               _realize: function () {}
-       } );
+                       //SLP --start search bar with cancel button
+                       focusedEl.wrapAll( "<div class='input-search-bar'></div>" );
+                       searchimage = $("<div class='ui-image-search'></div>").appendTo( focusedEl );
 
-       $.tizen.widgetex.setValue = function ( widget, newValue ) {
-               if ( widget._value !== undefined ) {
-                       var valueString = ( widget._value.makeString ? widget._value.makeString(newValue) : newValue ),
-                               inputType;
-
-                       widget.element.attr( widget._value.attr, valueString );
-                       if ( widget._value.signal !== undefined ) {
-                               widget.element.triggerHandler( widget._value.signal, newValue );
+                       if ( frontIcon ) {
+                               makeFrontIcon();
                        }
 
-                       if ( widget.element.is( "input" ) ) {
-                               inputType = widget.element.attr( "type" );
+                       if ( useCancelBtn ) {
+                               cancelbtn = $( "<div data-role='button' class='ui-input-cancel' title='clear text'>Cancel</div>" )
+                                       .bind('click', function ( event ) {
+                                               if ( input.attr( "disabled" ) == "disabled" ) {
+                                                       return false;
+                                               }
+                                               event.preventDefault();
+                                               event.stopPropagation();
 
-                               // Special handling for checkboxes and radio buttons, where the presence of the "checked" attribute is really
-                               // the value
-                               if ( inputType === "checkbox" || inputType === "radio" ) {
-                                       if ( newValue ) {
-                                               widget.element.attr( "checked", true );
-                                       } else {
-                                               widget.element.removeAttr( "checked" );
-                                       }
-                               } else {
-                                       widget.element.attr( "value", valueString );
-                               }
+                                               input
+                                                       .val( "" )
+                                                       .blur()
+                                                       .trigger( "change" );
 
-                               widget.element.trigger( "change" );
+                                               if ( useCancelBtn ) {
+                                                       hideCancel();
+                                               }
+                                       } )
+                                       .appendTo( focusedEl.parent() )
+                                       .buttonMarkup( {
+                                               iconpos: "cancel",
+                                               corners: true,
+                                               shadow: true
+                                       } );
                        }
-               }
-       };
-
-       $.tizen.widgetex.assignElements = function (proto, obj) {
-               var ret = {},
-                       key;
 
-               for ( key in obj ) {
-                       if ( ( typeof obj[key] ) === "string" ) {
-                               ret[key] = proto.find( obj[key] );
-                               if ( obj[key].match(/^#/) ) {
-                                       ret[key].removeAttr( "id" );
-                               }
-                       } else {
-                               if ( (typeof obj[key]) === "object" ) {
-                                       ret[key] = $.tizen.widgetex.assignElements( proto, obj[key] );
-                               }
-                       }
-               }
+                       // Input Focused
+                       input
+                               .focus( function () {
+                                       if ( input.attr( "disabled" ) == "disabled" ) {
+                                               return false;
+                                       }
+                                       if ( useCancelBtn ) {
+                                               showCancel();
+                                       }
+                                       focusedEl.addClass( $.mobile.focusClass );
+                               })
+                               .blur(function () {
+                                       focusedEl.removeClass( $.mobile.focusClass );
+                               });
 
-               return ret;
-       };
+                       // Default Text
+                       defaultText = input.jqmData( "default-text" );
 
-       $.tizen.widgetex.loadPrototype = function ( widget, ui ) {
-               var ar = widget.split( "." ),
-                       namespace,
-                       widgetName,
-                       source,
-                       noSource = false,
-                       htmlProto,
-                       protoPath;
+                       if ( ( defaultText != undefined ) && ( defaultText.length > 0 ) ) {
+                               defaultTextClass = "ui-input-default-text";
+                               trimedText = defaultText.replace(/\s/g, "");
 
-               if ( ar.length == 2 ) {
-                       namespace = ar[0];
-                       widgetName = ar[1];
+                               /* Make new class for default text string */
+                               newClassName = defaultTextClass + "-" + trimedText;
+                               newStyle = $( "<style>" + '.' + newClassName + ":after" + "{content:" + "'" + defaultText + "'" + "}" + "</style>" );
+                               $( 'html > head' ).append( newStyle );
 
-                       // If htmlProto is defined
-                       if ( $[namespace][widgetName].prototype._htmlProto !== undefined ) {
-                               // If no source is defined, use the widget name
-                               source = $[namespace][widgetName].prototype._htmlProto.source;
-                               if ( source === undefined ) {
-                                       source = widgetName;
-                                       noSource = true;
-                               }
+                               /* Make new empty <DIV> for default text */
+                               newDiv = $( "<div></div>" );
 
-                               // Load the HTML prototype via AJAX if not defined inline
-                               if ( typeof source === "string" ) {
-                                       if ( noSource ) {       // use external htmlproto file
-                                               // Establish the path for the proto file
-                                               widget = source;
-                                               protoPath = getProtoPath();
+                               /* Add class and append new div */
+                               newDiv.addClass( defaultTextClass );
+                               newDiv.addClass( newClassName );
+                               newDiv.tap( function ( event ) {
+                                       input.blur();
+                                       input.focus();
+                               } );
 
-                                               // Make the AJAX call
-                                               $.ajax( {
-                                                       url: protoPath + "/" + widget + ".prototype.html",
-                                                       async: false,
-                                                       dataType: "html"
-                                               }).success( function (data, textStatus, jqXHR ) {
-                                                       source = $( "<div></div>" ).html(data).jqmData( "tizen.widgetex.ajax.fail", false );
-                                               } );
+                               input.parent().append( newDiv );
 
-                                               // Assign the HTML proto to the widget prototype
-                                               source  = $( "<div></div>" )
-                                                       .text( "Failed to load proto for widget " + namespace + "." + widgetName + "!" )
-                                                       .css( {background: "red", color: "blue", border: "1px solid black"} )
-                                                       .jqmData( "tizen.widgetex.ajax.fail", true );
+                               /* When focus, default text will be hide. */
+                               input
+                                       .focus( function () {
+                                               input.parent().find( "div.ui-input-default-text" ).addClass( "ui-input-default-hidden" );
+                                       } )
+                                       .blur( function () {
+                                               var inputedText = input.val();
+                                               if ( inputedText.length > 0 ) {
+                                                       input.parent().find( "div.ui-input-default-text" ).addClass( "ui-input-default-hidden" );
+                                               } else {
+                                                       input.parent().find( "div.ui-input-default-text" ).removeClass( "ui-input-default-hidden" );
+                                               }
+                                       } );
+                       }
 
-                                       } else {
-                                               // inline definition (string)
-                                               source = $( source ).jqmData( "tizen.widgetex.ajax.fail", false );
-                                       }
+                       if ( !input.attr("placeholder") ) {
+                               input.attr( "placeholder", "Search" );
+                       }
+               },
 
-                               } else {
-                                       // inline definition (object)
-                                       // AJAX loading has trivially succeeded, since there was no AJAX loading at all
-                                       source.jqmData( "tizen.widgetex.ajax.fail", false );
-                               }
-                               htmlProto = source;
-                               $[namespace][widgetName].prototype._htmlProto.source = source;
+               disable: function () {
+                       this.element.attr( "disabled", true );
+                       this.element.parent().addClass( "ui-disabled" );
+                       $( this.element ).blur();
+                       this.element.parent().parent().find(".ui-input-cancel").addClass( "ui-disabled" );
+               },
 
-                               // If there's a "ui" portion in the HTML proto, copy it over to this instance, and
-                               // replace the selectors with the selected elements from a copy of the HTML prototype
-                               if ( $[namespace][widgetName].prototype._htmlProto.ui !== undefined ) {
-                                       // Assign the relevant parts of the proto
-                                       $.extend( this, {
-                                               _ui: $.tizen.widgetex.assignElements( htmlProto.clone(), $[namespace][widgetName].prototype._htmlProto.ui )
-                                       });
-                               }
-                       }
+               enable: function () {
+                       this.element.attr( "disabled", false );
+                       this.element.parent().removeClass( "ui-disabled" );
+                       this.element.parent().parent().find(".ui-input-cancel").removeClass( "ui-disabled" );
+                       $( this.element ).focus();
                }
-       };
+       } );
+
+       //auto self-init widgets
+       $( document ).bind( "pagecreate create", function ( e ) {
+               $.tizen.searchbar.prototype.enhanceWithin( e.target );
+       } );
 
 }( jQuery ) );
 
 
 
-/*
- * jQuery Mobile Widget @VERSION
- *
- * This software is licensed under the MIT licence (as defined by the OSI at
- * http://www.opensource.org/licenses/mit-license.php)
- *
- * ***************************************************************************
+/* ***************************************************************************
  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
- * Copyright (c) 2011 by Intel Corporation Ltd.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -11148,2886 +10619,1712 @@ jQuery.extend(jQuery.mobile.tizen, {
  * DEALINGS IN THE SOFTWARE.
  * ***************************************************************************
  *
- * Authors: Max Waterman <max.waterman@intel.com>
- * Authors: Minkyu Kang <mk7.kang@samsung.com>
- */
+ *     Author: Kangsik Kim <kangsik81.kim@samsung.com>
+ *                     Youmin Ha <youmin.ha@samsung.com>
+*/
 
 /**
- * tizenslider modifies the JQuery Mobile slider and is created in the same way.
+ * In the web environment, it is challenging to display a large amount of data in a grid.
+ * When an application needs to show, for example, image gallery with over 1,000 images,
+ * the same enormous data must be inserted into a HTML document.
+ * It takes a long time to display the data and manipulating DOM is complex.
+ * The virtual grid widget supports storing unlimited data without performance issues
+ * by reusing a limited number of grid elements.
+ * The virtual grid widget is based on the jQuery.template plug-in 
+ * For more information, see jQuery.template.
  *
- * See the JQuery Mobile slider widget for more information :
- *     http://jquerymobile.com/demos/1.0a4.1/docs/forms/forms-slider.html
+ * HTML Attributes:
  *
- * The JQuery Mobile slider option:
- *     theme: specify the theme using the 'data-theme' attribute
+ *             data-role:  virtualgrid
+ *             data-template : Has the ID of the jQuery.template element.
+ *                                             jQuery.template for a virtual grid must be defined.
+ *                                             Style for template would use rem unit to support scalability.
+ *             data-direction : This option define the direction of the scroll.
+ *                                             You must choose one of the 'x' and 'y' (Default : y)
+ *             data-rotation : This option defines whether or not the circulation of the data.
+ *                                             If option is 'true' and scroll is reached the last data,
+ *                                             Widget will present the first data on the screen.
+ *                                             If option is â€˜false’, Widget will operate like a scrollview.
  *
- * Options:
- *     theme: string; the theme to use if none is specified using the 'data-theme' attribute
- *            default: 'c'
- *     popup: boolean; controls whether the popup is displayed or not
- *                   specify if the popup is enabled using the 'data-popup' attribute
- *                   set from javascript using .tizenslider('option','popup',newValue)
+ *             ID : <DIV> element that has "data-role=virtualgrid" must have ID attribute.
  *
- * Events:
- *     changed: triggers when the value is changed (rather than when the handle is moved)
+ * APIs:
  *
- * Examples:
+ *             create ( {
+ *                             itemData: function ( idx ) { return json_obj; },
+ *                             numItemData: number or function () { return number; },
+ *                             cacheItemData: function ( minIdx, maxIdx ) {}
+ *                             } )
+ *                     : Create VirtualGrid widget. At this moment, _create method is called.
+ *                     args : A collection of options
+ *                             itemData: A function that returns JSON object for given index. Mandatory.
+ *                             numItemData: Total number of itemData. Mandatory.
+ *                             cacheItemData: Virtuallist will ask itemData between minIdx and maxIdx.
+ *                             Developers can implement this function for preparing data.
+ *                             Optional.
  *
- *     <a href="#" id="popupEnabler" data-role="button" data-inline="true">Enable popup</a>
- *     <a href="#" id="popupDisabler" data-role="button" data-inline="true">Disable popup</a>
- *     <div data-role="fieldcontain">
- *         <input id="mySlider" data-theme='a' data-popup='false' type="range" name="slider" value="7" min="0" max="9" />
- *     </div>
- *     <div data-role="fieldcontain">
- *         <input id="mySlider2" type="range" name="slider" value="77" min="0" max="777" />
- *     </div>
+ *             centerTo ( selector )
+ *                     : Center the particular item with the class name on the VirtualGrid's display area.;
+ *                     i.e., this method selects an item in the data elements of grid using the class name and
+ *                     moves the data elements inside the widget to display the row containing the selected item
+ *                     in the middle of the screen.
+ *                     If multiple items are matched with the class name, the first matched item will be selected.
+ *                     This method is only available when "data-rotation" attribute is "true".
  *
- *     // disable popup from javascript
- *     $('#mySlider').tizenslider('option','popup',false);
+ *             resize ()
+ *                     : Rearrange items to fit a new widget size.
+ *
+ * Events:
+ *             scrollstart : : This event triggers when a user begin to move the scroll on VirtualGrid.
+ *             scrollupdate : : This event triggers while a user moves the scroll on VirtualGrid.
+ *             scrollstop : This event triggers when a user stop the scroll on VirtualGrid.
+ *             select : This event triggers when a cell is selected.
+ *
+ * Examples:
+ *
+ *                     <script id="tizen-demo-namecard" type="text/x-jquery-tmpl">
+ *                             <div class="ui-demo-namecard">
+ *                                     <div class="ui-demo-namecard-pic">
+ *                                             <img class="ui-demo-namecard-pic-img" src="${TEAM_LOGO}" />
+ *                                     </div>
+ *                                     <div class="ui-demo-namecard-contents">
+ *                                             <span class="name ui-li-text-main">${NAME}</span>
+ *                                             <span class="active ui-li-text-sub">${ACTIVE}</span>
+ *                                             <span class="from ui-li-text-sub">${FROM}</span>
+ *                                     </div>
+ *                             </div>
+ *                     </script>
+ *                     <div id="virtualgrid-demo" data-role="virtualgrid" data-template="tizen-demo-namecard" >
+ *                     </div>
  *
- *     // from buttons
- *     $('#popupEnabler').bind('vclick', function() {
- *         $('#mySlider').tizenslider('option','popup',true);
- *     });
- *     $('#popupDisabler').bind('vclick', function() {
- *         $('#mySlider').tizenslider('option','popup',false);
- *     });
  */
 
+// most of following codes are derived from jquery.mobile.scrollview.js
+
 /**
-       @class Slider
-       The slider widget shows a control on the screen that you can use to change values by dragging a handle on a horizontal scale. Sliders can be used in Tizen as described in the jQueryMobile documentation for sliders.
+       @class VirtualGrid
+       In the Web environment, it is challenging to display large amount of data in a list, such as displaying a contact list of over 1000 list items. It takes time to display the entire list in HTML and the DOM manipulation is complex.
 
-       To add a slider widget to the application, use the following code:
+       The virtual grid widget is used to display a list of unlimited data elements on the screen for better performance. This widget displays the data in the grid format by reusing the existing grid control space. Virtual grids are based on the jQuery.template plugin as described in the jQuery documentation for jQuery.template plugin.
 
-               <input data-popup='false' type="range" name="slider" value="5" min="0" max="10" data-icon="text" data-text-left="Min" data-text-right="Max" />
+       To add a virtual grid widget to the application, use the following code:
 
-       The slider can define callbacks for events as described in the jQueryMobile documentation for slider events.
-       You can use methods with the slider as described in the jQueryMobile documentation for slider methods.
+               <script id="tizen-demo-namecard" type="text/x-jquery-tmpl">
+                       <div class="ui-demo-namecard">
+                               <div class="ui-demo-namecard-pic">
+                                       <img class="ui-demo-namecard-pic-img" src="${TEAM_LOGO}" />
+                               </div>
+                               <div class="ui-demo-namecard-contents">
+                               <span class="name ui-li-text-main">${NAME}</span>
+                               </div>
+                       </div>
+               </script>
+               <div id="virtualgrid-demo" data-role="virtualgrid" data-template="tizen-demo-namecard">
+               </div>
 */
 /**
-       @property {String} data-icon
-       Defines the icon style for the slider ends. The icon options are bright, volume, and text.
-       The default value is text.
+       @property {String} data-template
+       Specifies the jQuery.template element ID.
+       The jQuery.template must be defined. The template style can use rem units to support scalability.
 */
 /**
-       @property {Boolean} data-popup
-       Enables or disables a pop-up showing the current value while the handle is dragged.
-       The default value is true.
+       @property {String} data-direction
+       Defines the scroll direction. The direction options are x (horizontal) and y (vertical).
+       The default value is y.
 */
 /**
-       @property {String} data-text-left
-       Defines the text displayed on the left side of the slider.
-       The data-icon option must be set to text.
+       @property {Boolean} data-rotation
+       Defines whether the data elements are displayed from the beginning of the list again once the end of file is reached.
+       The default value is false.
 */
 /**
-       @property {String} data-text-right
-       Defines the text displayed on the right side of the slider.
-       The data-icon option must be set to text.
-*/
+       @event scrollstart
+       The scrollstart event is fired when the user starts scrolling through the grid:
 
-(function ($, window, undefined) {
-       $.widget("tizen.tizenslider", $.mobile.widget, {
-               options: {
-                       popup: true
-               },
+               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
+               $(".selector").on("scrollstart", function(event, ui)
+               {
+               // Handle the scrollstart event
+               });
+*/
+/**
+       @event scrollupdate
+       The scrollupdate event is fired when the user moves the scroll bar in the grid:
 
-               popup: null,
-               handle: null,
-               handleText: null,
+               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
+               $(".selector").on("scrollupdate", function(event, ui)
+               {
+               // Handle the scrollupdate event
+               });
+*/
+/**
+       @event scrollstop
+       The scrollstop event is fired when the user stops scrolling:
 
-               _create: function () {
-                       this.currentValue = null;
-                       this.popupVisible = false;
+               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
+               $(".selector").on("scrollstop", function(event, ui)
+               {
+               // Handle the scrollstop event
+               });
+*/
+/**
+       @event select
+       The select event is fired when a virtual grid cell is selected:
 
-                       var self = this,
-                               inputElement = $( this.element ),
-                               slider,
-                               handle_press,
-                               popupEnabledAttr,
-                               icon,
-                               text_right,
-                               text_left,
-                               text_length,
-                               elem_left,
-                               elem_right,
-                               margin_left,
-                               margin_right;
+               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
+               $(".selector").on("select", function(event, ui)
+               {
+               // Handle the select event
+               });
+*/
+/**
+       @method create
+       @param {function} itemData(index)
+       @param {Number} numItemData
+       @param {function} cacheItemData(minIndex, maxIndex)
+       The create method is used to call the jQuery _create method. In the method parameters:
 
-                       // apply jqm slider
-                       inputElement.slider();
+       function itemData(index) returns the JSON object matched with the given index. The index value is between 0 and numItemData-1.<br/>
+       number numItemData or function numItemData() defines or returns a static number of items.<br/>
+       function cacheItemData(minIndex, maxIndex) prepares the JSON data. This method is called before calling the itemData() method with index values between minIndex and maxIndex.<br/>
 
-                       // hide the slider input element proper
-                       inputElement.hide();
+               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
+                       function itemData(idx)
+                       {
+                               return DATA[idx];
+                       }
+                       function cacheItemData(minIdx, maxIdx)
+                       {
+                       // Prepare JSON data between minIdx and maxIdx
+                       }
+                       var numItemData = DATA.length;
+                       $(".selector").virtualgrid("create",
+                       {
+                               itemData, numItemData, cacheItemData
+                       });
+*/
+/**
+       @method centerTo
+       The centerTo method is used to center the particular item with the class name on the VirtualGrid's display area. If multiple items are matched with the class name, the first matched item will be selected. This method is only available when "data-rotation" attribute is "true".
 
-                       self.popup = $('<div class="ui-slider-popup"></div>');
+               <div data-role="virtualgrid" data-scroll="y" data-rotation="true" data-template="tizen-demo-namecard"></div>
+               $(".selector").virtualgrid("centerTo", selector);
+*/
+/**
+       @method resize
+       The resize method is used to rearrange items to fit a new widget size. :
 
-                       // set the popup according to the html attribute
-                       popupEnabledAttr = inputElement.jqmData('popup');
-                       if ( popupEnabledAttr !== undefined ) {
-                               self.options.popup = ( popupEnabledAttr == true );
-                       }
+               <div data-role="virtualgrid" data-scroll="y" data-template="tizen-demo-namecard"></div>
+               $(".selector").virtualgrid("resize");
 
-                       // get the actual slider added by jqm
-                       slider = inputElement.next('.ui-slider');
+       @since Tizen2.0
+*/
 
-                       icon = inputElement.attr('data-icon');
+( function ( $, window, document, undefined ) {
 
-                       // wrap the background
-                       slider.wrap('<div class="ui-slider-container"></div>');
+       function circularNum ( num, total ) {
+               var n = num % total;
+               if ( n < 0 ) {
+                       n = total + n;
+               }
+               return n;
+       }
 
-                       // get the handle
-                       self.handle = slider.find('.ui-slider-handle');
+       function MomentumTracker ( options ) {
+               this.options = $.extend( {}, options );
+               this.easing = "easeOutQuad";
+               this.reset();
+       }
 
-                       // remove the rounded corners from the slider and its children
-                       slider.removeClass('ui-btn-corner-all');
-                       slider.find('*').removeClass('ui-btn-corner-all');
+       var tstates = {
+                       scrolling : 0,
+                       done : 1
+               },
+               _OVERFLOW_DIR_NONE = 0,         /* ENUM */
+               _OVERFLOW_DIR_UP = 1,           /* ENUM */
+               _OVERFLOW_DIR_DOWN = -1,        /* ENUM */
+               imgTagSrcAttrRE = /src\s*=\s*[\"\'][\w\/.]+.[A-z]+[\"\']/;
 
-                       // add icon
-                       switch ( icon ) {
-                       case 'bright':
-                       case 'volume':
-                               elem_left = $('<div class="ui-slider-left-' + icon + '"></div>');
-                               elem_right = $('<div class="ui-slider-right-' + icon + '"></div>');
+       function getCurrentTime () {
+               return Date.now();
+       }
 
-                               slider.before( elem_left );
-                               slider.after( elem_right );
+       $.extend( MomentumTracker.prototype, {
+               start : function ( pos, speed, duration ) {
+                       this.state = ( speed !== 0 ) ? tstates.scrolling : tstates.done;
+                       this.pos = pos;
+                       this.speed = speed;
+                       this.duration = duration;
 
-                               margin_left = elem_left.width() + 16;
-                               margin_right = elem_right.width() + 16;
-                               break;
+                       this.fromPos = 0;
+                       this.toPos = 0;
 
-                       case 'text':
-                               text_left = ( inputElement.attr('data-text-left') === undefined ) ? '' :
-                                               inputElement.attr('data-text-left').substring( 0, 3 );
-                               text_right = ( inputElement.attr('data-text-right') === undefined ) ? '' :
-                                               inputElement.attr('data-text-right').substring( 0, 3 );
+                       this.startTime = getCurrentTime();
+               },
 
-                               text_length = Math.max( text_left.length, text_right.length ) + 1;
+               reset : function () {
+                       this.state = tstates.done;
+                       this.pos = 0;
+                       this.speed = 0;
+                       this.duration = 0;
+               },
 
-                               margin_left = text_length + "rem";
-                               margin_right = text_length + "rem";
+               update : function () {
+                       var state = this.state, duration, elapsed, dx, x;
 
-                               elem_left = $('<div class="ui-slider-left-text" style="left:' +
-                                       -( text_length ) + 'rem; width:' + text_length + 'rem;">' +
-                                       '<span style="position:relative;top:0.4em;">' +
-                                       text_left +
-                                       '</span></div>');
-                               elem_right = $('<div class="ui-slider-right-text" style="right:' +
-                                       -( text_length ) + 'rem; width:' + text_length + 'rem;">' +
-                                       '<span style="position:relative;top:0.4em;">' +
-                                       text_right +
-                                       '</span></div>');
-
-                               slider.before( elem_left );
-                               slider.after( elem_right );
-                               break;
+                       if ( state == tstates.done ) {
+                               return this.pos;
                        }
+                       duration = this.duration;
+                       elapsed = getCurrentTime () - this.startTime;
+                       elapsed = elapsed > duration ? duration : elapsed;
+                       dx = this.speed * ( 1 - $.easing[this.easing]( elapsed / duration, elapsed, 0, 1, duration ) );
+                       x = this.pos + ( dx / 2 );
+                       this.pos = x;
 
-                       if ( icon ) {
-                               slider.parent('.ui-slider-container').css({
-                                       "margin-left": margin_left,
-                                       "margin-right": margin_right
-                               });
+                       if ( elapsed >= duration ) {
+                               this.state = tstates.done;
                        }
-
-                       // handle press
-                       slider.append($('<div class="ui-slider-handle-press"></div>'));
-                       self.handle_press = slider.find('.ui-slider-handle-press');
-                       self.handle_press.css('display', 'none');
-
-                       // add a popup element (hidden initially)
-                       slider.parents(".ui-page").append( self.popup );
-                       self.popup.hide();
-
-                       // get the element where value can be displayed
-                       self.handleText = slider.find('.ui-btn-text');
-
-                       // set initial value
-                       self.updateSlider();
-
-                       // bind to changes in the slider's value to update handle text
-                       this.element.bind('change', function () {
-                               self.updateSlider();
-                       });
-
-                       // bind clicks on the handle to show the popup
-                       self.handle.bind('vmousedown', function () {
-                               self.showPopup();
-                       });
-
-                       // watch events on the document to turn off the slider popup
-                       slider.add( document ).bind('vmouseup', function () {
-                               self.hidePopup();
-                       });
-               },
-
-               _handle_press_show: function () {
-                       this.handle_press.css('display', '');
+                       return this.pos;
                },
 
-               _handle_press_hide: function () {
-                       this.handle_press.css('display', 'none');
+               done : function () {
+                       return this.state == tstates.done;
                },
 
-               // position the popup
-               positionPopup: function () {
-                       var dstOffset = this.handle.offset();
-
-                       this.popup.offset({
-                               left: dstOffset.left + ( this.handle.width() - this.popup.width() ) / 2,
-                               top: dstOffset.top - this.popup.height()
-                       });
+               getPosition : function () {
+                       return this.pos;
+               }
+       });
 
-                       this.handle_press.offset({
-                               left: dstOffset.left,
-                               top: dstOffset.top
-                       });
+       jQuery.widget ( "mobile.virtualgrid", jQuery.mobile.widget, {
+               options : {
+                       // virtualgrid option
+                       template : "",
+                       direction : "y",
+                       rotation : false
                },
 
-               // show value on the handle and in popup
-               updateSlider: function () {
-                       var font_size,
-                               font_length,
-                               font_top,
-                               padding_size,
-                               newValue,
-                               get_value_length = function ( v ) {
-                                       var val = Math.abs( v ),
-                                               len;
-
-                                       if ( val > 999 ) {
-                                               len = 4;
-                                       } else if ( val > 99 ) {
-                                               len = 3;
-                                       } else if ( val > 9 ) {
-                                               len = 2;
-                                       } else {
-                                               len = 1;
-                                       }
+               create : function () {
+                       this._create.apply( this, arguments );
+               },
 
-                                       if ( v < 0 ) {
-                                               len++;
-                                       }
+               _create : function ( args ) {
+                       $.extend( this, {
+                               // view
+                               _$view : null,
+                               _$clip : null,
+                               _$rows : null,
+                               _tracker : null,
+                               _viewSize : 0,
+                               _clipSize : 0,
+                               _cellSize : undefined,
+                               _currentItemCount : 0,
+                               _itemCount : 1,
+                               _inheritedSize : null,
 
-                                       return len;
-                               };
+                               // timer
+                               _timerInterval : 0,
+                               _timerID : 0,
+                               _timerCB : null,
+                               _lastMove : null,
 
-                       // remove the title attribute from the handle (which is
-                       // responsible for the annoying tooltip); NB we have
-                       // to do it here as the jqm slider sets it every time
-                       // the slider's value changes :(
-                       this.handle.removeAttr('title');
+                               // Data
+                               _itemData : function ( idx ) { return null; },
+                               _numItemData : 0,
+                               _cacheItemData : function ( minIdx, maxIdx ) { },
+                               _totalRowCnt : 0,
+                               _templateText : null,
+                               _maxViewSize : 0,
+                               _modifyViewPos : 0,
+                               _maxSizeExceptClip : 0,
+                               _maxSize : 0,
 
-                       newValue = this.element.val();
+                               // axis - ( true : x , false : y )
+                               _direction : false,
+                               _didDrag : true,
+                               _reservedPos : 0,
+                               _scalableSize : 0,
+                               _eventPos : 0,
+                               _nextPos : 0,
+                               _movePos : 0,
+                               _lastY : 0,
+                               _speedY : 0,
+                               _lastX : 0,
+                               _speedX : 0,
+                               _rowsPerView : 0,
+                               _fragment : null,
 
-                       font_length = get_value_length( newValue );
+                               _filterRatio : 0.9,
 
-                       if ( this.popupVisible ) {
-                               this.positionPopup();
+                               _overflowStartPos : 0,
+                               _overflowDir : 0,
+                               _overflowMaxDragDist : 100
+                       });
 
-                               switch ( font_length ) {
-                               case 1:
-                               case 2:
-                                       font_size = '1.5rem';
-                                       padding_size = '0.15rem';
-                                       break;
-                               case 3:
-                                       font_size = '1rem';
-                                       padding_size = '0.5rem';
-                                       break;
-                               default:
-                                       font_size = '0.8rem';
-                                       padding_size = '0.5rem';
-                                       break;
-                               }
+                       var self = this,
+                               $dom = $( self.element ),
+                               opts = self.options,
+                               $item = null;
 
-                               this.popup.css({
-                                       "font-size": font_size,
-                                       "padding-top": padding_size
-                               });
+                       // itemData
+                       // If mandatory options are not given, Do nothing.
+                       if ( !args ) {
+                               return ;
                        }
 
-                       if ( newValue === this.currentValue ) {
+                       if ( !self._loadData( args ) ) {
                                return;
                        }
 
-                       switch ( font_length ) {
-                       case 1:
-                               font_size = '0.95rem';
-                               font_top = '0';
-                               break;
-                       case 2:
-                               font_size = '0.85rem';
-                               font_top = '-0.01rem';
-                               break;
-                       case 3:
-                               font_size = '0.65rem';
-                               font_top = '-0.05rem';
-                               break;
-                       default:
-                               font_size = '0.45rem';
-                               font_top = '-0.15rem';
-                               break;
-                       }
+                       // make a fragment.
+                       self._fragment = document.createDocumentFragment();
 
-                       if ( font_size != this.handleText.css('font-size') ) {
-                               this.handleText.css({
-                                       'font-size': font_size,
-                                       'top': font_top
-                               });
-                       }
+                       // read defined properties(width and height) from dom element.
+                       self._inheritedSize = self._getinheritedSize( self.element );
 
-                       this.currentValue = newValue;
-                       this.handleText.text( newValue );
-                       this.popup.html( newValue );
+                       // set a scroll direction.
+                       self._direction = opts.direction === 'x' ? true : false;
 
-                       this.element.trigger( 'update', newValue );
-               },
+                       // make view layer
+                       self._$clip = $dom.addClass( "ui-scrollview-clip" ).addClass( "ui-virtualgrid-view" );
+                       $item = $( document.createElement( "div" ) ).addClass( "ui-scrollview-view" );
+                       self._clipSize =  self._calculateClipSize();
+                       self._$clip.append( $item );
+                       self._$view = $item;
+                       self._$clip.css( "overflow", "hidden" );
+                       self._$view.css( "overflow", "hidden" );
 
-               // show the popup
-               showPopup: function () {
-                       if ( !this.options.popup || this.popupVisible ) {
-                               return;
-                       }
+                       // inherit from scrollview widget.
+                       self._scrollView = $.tizen.scrollview.prototype;
+                       self._initScrollView();
 
-                       this.popup.show();
-                       this.popupVisible = true;
-                       this._handle_press_show();
-               },
+                       // create tracker.
+                       self._createTracker();
+                       self._makePositioned( self._$clip );
+                       self._timerInterval = 1000 / self.options.fps;
 
-               // hide the popup
-               hidePopup: function () {
-                       if ( !this.options.popup || !this.popupVisible ) {
-                               return;
-                       }
+                       self._timerID = 0;
+                       self._timerCB = function () {
+                               self._handleMomentumScroll();
+                       };
+                       $dom.closest( ".ui-content" ).addClass( "ui-virtualgrid-content" ).css( "overflow", "hidden" );
 
-                       this.popup.hide();
-                       this.popupVisible = false;
-                       this._handle_press_hide();
+                       // add event handler.
+                       self._addBehaviors();
+
+                       self._currentItemCount = 0;
+                       self._createOverflowArea();
+                       self._createScrollBar();
+                       self.refresh();
                },
 
-               _setOption: function (key, value) {
-                       var needToChange = ( value !== this.options[key] );
+               // The argument is checked for compliance with the specified format.
+               // @param args   : Object
+               // @return boolean
+               _loadData : function ( args ) {
+                       var self = this;
 
-                       if ( !needToChange ) {
-                               return;
+                       if ( args.itemData && typeof args.itemData == 'function'  ) {
+                               self._itemData = args.itemData;
+                       } else {
+                               return false;
                        }
-
-                       switch ( key ) {
-                       case 'popup':
-                               this.options.popup = value;
-
-                               if ( this.options.popup) {
-                                       this.updateSlider();
+                       if ( args.numItemData ) {
+                               if ( typeof args.numItemData == 'function' ) {
+                                       self._numItemData = args.numItemData( );
+                               } else if ( typeof args.numItemData == 'number' ) {
+                                       self._numItemData = args.numItemData;
                                } else {
-                                       this.hidePopup();
+                                       return false;
                                }
-
-                               break;
+                       } else {
+                               return false;
                        }
-               }
-       });
-
-       // stop jqm from initialising sliders
-       $( document ).bind( "pagebeforecreate", function ( e ) {
-               if ( $.data( window, "jqmSliderInitSelector" ) === undefined ) {
-                       $.data( window, "jqmSliderInitSelector",
-                               $.mobile.slider.prototype.options.initSelector );
-                       $.mobile.slider.prototype.options.initSelector = null;
-               }
-       });
-
-       // initialise sliders with our own slider
-       $( document ).bind( "pagecreate create", function ( e ) {
-               var jqmSliderInitSelector = $.data( window, "jqmSliderInitSelector" );
-               $( e.target ).find(jqmSliderInitSelector).not('select').tizenslider();
-               $( e.target ).find(jqmSliderInitSelector).filter('select').slider();
-       });
+                       self._getObjectNames( self._itemData( 0 ) );
+                       return true;
+               },
 
-}( jQuery, this ));
+               // Make up the first screen.
+               _initLayout: function () {
+                       var self = this,
+                               opts = self.options,
+                               i,
+                               $row;
 
+                       for ( i = -1; i < self._rowsPerView + 1; i += 1 ) {
+                               $row = self._$rows[ circularNum( i, self._$rows.length ) ];
+                               self._$view.append( $row );
+                       }
+                       self._setElementTransform( -self._cellSize );
 
+                       self._replaceRow( self._$view[0].firstChild, self._totalRowCnt - 1 );
+                       if ( opts.rotation && self._rowsPerView >= self._totalRowCnt ) {
+                               self._replaceRow( self._$view[0].lastChild, 0 );
+                       }
+                       self._setViewSize();
+               },
 
-/*
- * jQuery UI Progressbar @VERSION
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Progressbar
- *
- * Depends:
- *   jquery.ui.core.js
- *   jquery.ui.widget.js
- * Original file:
- *   jquery.ui.progressbar.js
- */
-/* This is from jquery ui plugin - progressbar 11/16/2011 */
+               _setViewSize : function () {
+                       var self = this,
+                               height = 0,
+                               width = 0;
 
+                       if ( self._direction ) {
+                               width = self._cellSize * ( self._rowsPerView + 2 );
+                               width = parseInt( width, 10 ) + 1;
+                               self._$view.width( width );
+                               self._viewSize = self._$view.width();
+                       } else {
+                               self._$view.height( self._cellSize * ( self._rowsPerView + 2 ) );
+                               self._$clip.height( self._clipSize );
+                               self._viewSize = self._$view.height();
+                       }
+               },
 
-/**
-       @class ProgressBar
-       The progress bar widget shows a control that indicates the progress percentage of an on-going operation. This widget can be scaled to fit inside a parent container.
+               _getViewWidth : function () {
+                       var self = this;
+                       return self._maxSize;
+               },
 
-       To add a progress bar widget to the application, use the following code:
+               _getViewHeight : function () {
+                       var self = this;
+                       return self._maxSize;
+               },
 
-               <div id="foo" data-role="progressbar"</div>
-*/
-/**
-       @event change
-       The progress bar can define a callback for the change event, which is fired when the progress value is changed:
-               <div id="foo" data-role="progressbar"></div>
-               $("#foo").bind("change", function (ev, val) {
-                       Console.log("Value is changed to " + val);
-               });
-*/
-/**
-       @method value
-       You can use the value method with the pickers to set or get the current default progress bar value:
+               refresh : function () {
+                       var self = this,
+                               opts = self.options,
+                               width = 0,
+                               height = 0,
+                               $template = null;
 
-               <div id="foo" data-role="progressbar"></div>
-               var oldVal = $("#foo").progressbar("value");
-               $("#foo").progressbar("value", 50);
-*/
+                       $template = $( "#" + opts.template );
+                       if ( !$template ) {
+                               return ;
+                       }
+                       self._templateText = self._insertAriaAttrToTmpl( $template.text() );
 
-(function ( $, window, undefined ) {
+                       width = self._calculateClipWidth();
+                       height = self._calculateClipHeight();
+                       self._$view.width( width ).height( height );
+                       self._$clip.width( width ).height( height );
 
-       $.widget( "tizen.progressbar", $.mobile.widget, {
-               options: {
-                       value: 0,
-                       max: 100
+                       self._clipSize = self._calculateClipSize();
+                       self._calculateColumnSize();
+                       self._initPageProperty();
+                       self._setScrollBarSize();
                },
 
-               min: 0,
-
-               _create: function () {
-                       this.element
-                               .addClass( "ui-progressbar" )
-                               .attr( {
-                                       role: "progressbar",
-                                       "aria-valuemin": this.min,
-                                       "aria-valuemax": this.options.max,
-                                       "aria-valuenow": this._value()
-                               } );
-
-                       this.valueDiv = $( "<div class='ui-progressbar-value'></div>" )
-                               .appendTo( this.element );
+               _initPageProperty : function () {
+                       var self = this,
+                               rowsPerView = 0,
+                               $child,
+                               columnCount = 0,
+                               totalRowCnt = 0,
+                               attributeName = self._direction ? "width" : "height";
 
-                       this.valueDiv.wrap("<div class='ui-progressbar-bg'></div>");
+                       columnCount = self._calculateColumnCount();
 
-                       this.oldValue = this._value();
-                       this._refreshValue();
-               },
+                       totalRowCnt = parseInt( self._numItemData / columnCount, 10 );
+                       self._totalRowCnt = self._numItemData % columnCount === 0 ? totalRowCnt : totalRowCnt + 1;
+                       self._itemCount = columnCount;
 
-               _destroy: function () {
-                       this.element
-                               .removeClass( "ui-progressbar" )
-                               .removeAttr( "role" )
-                               .removeAttr( "aria-valuemin" )
-                               .removeAttr( "aria-valuemax" )
-                               .removeAttr( "aria-valuenow" );
+                       if ( self._cellSize <= 0 ) {
+                               return ;
+                       }
 
-                       this.valueDiv.remove();
-               },
+                       rowsPerView = self._clipSize / self._cellSize;
+                       rowsPerView = Math.ceil( rowsPerView );
+                       self._rowsPerView = parseInt( rowsPerView, 10 );
 
-               value: function ( newValue ) {
-                       if ( newValue === undefined ) {
-                               return this._value();
-                       }
+                       $child = $( self._makeRows( rowsPerView + 2 ) );
+                       self._$view.append( $child.children() );
+                       self._$view.children().css( attributeName, self._cellSize + "px" );
+                       self._$rows = self._$view.children().detach();
 
-                       this._setOption( "value", newValue );
-                       return this;
-               },
+                       self._reservedPos = -self._cellSize;
+                       self._scalableSize = -self._cellSize;
 
-               _setOption: function ( key, value ) {
-                       if ( key === "value" ) {
-                               this.options.value = value;
-                               this._refreshValue();
-                               if ( this._value() === this.options.max ) {
-                                       this.element.trigger( "complete" );
-                               }
-                       }
-                       // jquery.ui.widget.js MUST be updated to new version!
-                       //this._super( "_setOption", key, value );
-               },
+                       self._initLayout();
 
-               _value: function () {
-                       var val = this.options.value;
-                       // normalize invalid value
-                       if ( typeof val !== "number" ) {
-                               val = 0;
+                       self._blockScroll = self._rowsPerView > self._totalRowCnt;
+                       self._maxSizeExceptClip = ( self._totalRowCnt - self._rowsPerView ) * self._cellSize;
+                       self._maxSize = self._totalRowCnt * self._cellSize;
+                       self._maxViewSize = ( self._rowsPerView ) * self._cellSize;
+                       self._modifyViewPos = -self._cellSize;
+                       if ( self._clipSize < self._maxViewSize ) {
+                               self._modifyViewPos = ( -self._cellSize ) + ( self._clipSize - self._maxViewSize );
                        }
-                       return Math.min( this.options.max, Math.max( this.min, val ) );
                },
 
-               _percentage: function () {
-                       return 100 * this._value() / this.options.max;
-               },
+               _getinheritedSize : function ( elem ) {
+                       var $target = $( elem ),
+                               height,
+                               width,
+                               NODETYPE = { ELEMENT_NODE : 1, TEXT_NODE : 3 },
+                               ret = {
+                                       isDefinedWidth : false,
+                                       isDefinedHeight : false,
+                                       width : 0,
+                                       height : 0
+                               };
 
-               _refreshValue: function () {
-                       var value = this.value(),
-                               percentage = this._percentage();
+                       while ( $target[0].nodeType === NODETYPE.ELEMENT_NODE && ( ret.isDefinedWidth === false || ret.isHeightDefined === false ) ) {
+                               height = $target[0].style.height;
+                               width = $target[0].style.width;
 
-                       if ( this.oldValue !== value ) {
-                               this.oldValue = value;
-                               this.element.trigger( "change" );
+                               if ( ret.isDefinedHeight === false && height !== "" ) {
+                                       // Size was defined
+                                       ret.isDefinedHeight = true;
+                                       ret.height = parseInt( height, 10 );
+                               }
+
+                               if ( ret.isDefinedWidth === false && width !== "" ) {
+                                       // Size was defined
+                                       ret.isDefinedWidth = true;
+                                       ret.width = parseInt( width, 10 );
+                               }
+                               $target = $target.parent();
+                               if ( $target.hasClass( "ui-content" ) ) {
+                                       break;
+                               }
                        }
+                       return ret;
+               },
 
-                       this.valueDiv
-                               .toggle( value > this.min )
-                               .width( percentage.toFixed(0) + "%" );
-                       this.element.attr( "aria-valuenow", value );
-               }
-       } );
+               _resize : function () {
+                       var self = this,
+                               ret = null,
+                               rowsPerView = 0,
+                               itemCount = 0,
+                               totalRowCnt = 0,
+                               diffRowCnt = 0,
+                               clipSize = 0,
+                               prevcnt = 0,
+                               clipPosition = 0,
+                               rowsLength = 0,
+                               row = null,
+                               size = 0;
 
-       // auto self-init widgets
-       $( document ).bind( "pagecreate", function ( e ) {
-               $( e.target ).find( ":jqmData(role='progressbar')" ).progressbar();
-       } );
+                       if ( self._direction ) {
+                               size = self._calculateClipHeight();
+                               self._$view.height( size );
+                               self._$clip.height( size );
+                       } else {
+                               size = self._calculateClipWidth();
+                               self._$view.width( size );
+                               self._$clip.width( size );
+                       }
 
-}( jQuery, this ) );
+                       itemCount = self._calculateColumnCount();
+                       if ( itemCount != self._itemCount ) {
+                               totalRowCnt = parseInt( self._numItemData / itemCount, 10 );
+                               self._totalRowCnt = self._numItemData % itemCount === 0 ? totalRowCnt : totalRowCnt + 1;
+                               prevcnt = self._itemCount;
+                               self._itemCount = itemCount;
+                               clipPosition = self._getClipPosition();
+                               self._$view.hide();
 
+                               diffRowCnt = self._replaceRows( itemCount, prevcnt, self._totalRowCnt, clipPosition );
+                               self._maxSizeExceptClip = ( self._totalRowCnt - self._rowsPerView ) * self._cellSize;
+                               self._maxSize = self._totalRowCnt * self._cellSize;
+                               self._scalableSize += ( -diffRowCnt ) * self._cellSize;
+                               self._reservedPos  += ( -diffRowCnt ) * self._cellSize;
+                               self._setScrollBarSize();
+                               self._setScrollBarPosition( diffRowCnt );
 
+                               self._$view.show();
+                       }
 
-/*
- * jQuery Mobile Widget @VERSION
- *
- * This software is licensed under the MIT licence (as defined by the OSI at
- * http://www.opensource.org/licenses/mit-license.php)
- *
- * ***************************************************************************
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
- * Copyright (c) 2011 by Intel Corporation Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * ***************************************************************************
- *
- * Authors: Gabriel Schulhof <gabriel.schulhof@intel.com>,
- *          Elliot Smith <elliot.smith@intel.com>
- *                     Hyunjung Kim <hjnim.kim@samsung.com>
- */
+                       clipSize = self._calculateClipSize();
+                       if ( clipSize !== self._clipSize ) {
+                               rowsPerView = clipSize / self._cellSize;
+                               rowsPerView = parseInt( Math.ceil( rowsPerView ), 10 );
 
-/*
- * % Popupwindow widget do not use anymore(will be deprecated, internal use only)
- *
- *
- * Shows other elements inside a popup window.
- *
- * To apply, add the attribute data-role="popupwindow" to a <div> element inside
- * a page. Alternatively, call popupwindow()
- * on an element, eg :
- *
- *     $("#mypopupwindowContent").popupwindow();
- * where the html might be :
- *     <div id="mypopupwindowContent"></div>
- *
- * To trigger the popupwindow to appear, it is necessary to make a call to its
- * 'open()' method. This is typically done by binding a function to an event
- * emitted by an input element, such as a the clicked event emitted by a button
- * element. The open() method takes two arguments, specifying the x and y
- * screen coordinates of the center of the popup window.
+                               if ( rowsPerView > self._rowsPerView ) {
+                                       // increase row.
+                                       self._increaseRow( rowsPerView - self._rowsPerView );
+                               } else if ( rowsPerView < self._rowsPerView ) {
+                                       // decrease row.
+                                       self._decreaseRow( self._rowsPerView - rowsPerView );
+                               }
+                               self._$rows = self._$view.children();
+                               self._$rows.sort( function ( a, b ) {
+                                       return a.getAttribute( "row-index" ) - b.getAttribute( "row-index" );
+                               });
 
- * You can associate a button with a popup window like this:
- *      <div id="mypopupContent" style="display: table;" data-role="popupwindow">
- *          <table>
- *              <tr> <td>Eenie</td>   <td>Meenie</td>  <td>Mynie</td>   <td>Mo</td>  </tr>
- *              <tr> <td>Catch-a</td> <td>Tiger</td>   <td>By-the</td>  <td>Toe</td> </tr>
- *              <tr> <td>If-he</td>   <td>Hollers</td> <td>Let-him</td> <td>Go</td>  </tr>
- *              <tr> <td>Eenie</td>   <td>Meenie</td>  <td>Mynie</td>   <td>Mo</td>  </tr>
- *          </table>
- *      </div>
- * <a href="#myPopupContent" data-rel="popupwindow" data-role="button">Show popup</a>
- *
- * Options:
- *
- *     theme: String; the theme for the popupwindow contents
- *                   Default: null
- *
- *     overlayTheme: String; the theme for the popupwindow
- *                   Default: null
- *
- *     shadow: Boolean; display a shadow around the popupwindow
- *             Default: true
- *
- *     corners: Boolean; display a shadow around the popupwindow
- *             Default: true
- *
- *     fade: Boolean; fades the opening and closing of the popupwindow
- *
- *     transition: String; the transition to use when opening or closing
- *                 a popupwindow
- *                 Default: $.mobile.defaultDialogTransition
- *
- * Events:
- *     popupbeforeposition: triggered after a popup has completed preparations for opening, but has not yet opened
- *     popupafteropen: triggered after a popup has completely opened
- *     popupafterclose triggered when a popup has completely closed
-*/
+                               self._rowsPerView = rowsPerView;
+                               self._clipSize = clipSize;
+                               self._blockScroll = self._rowsPerView > self._totalRowCnt;
+                               self._maxSizeExceptClip = ( self._totalRowCnt - self._rowsPerView ) * self._cellSize;
+                               self._maxSize = self._totalRowCnt * self._cellSize;
+                               self._maxViewSize = ( self._rowsPerView ) * self._cellSize;
+                               if ( self._clipSize < self._maxViewSize ) {
+                                       self._modifyViewPos = ( -self._cellSize ) + ( self._clipSize - self._maxViewSize );
+                               }
+                               if ( self._direction ) {
+                                       self._$clip.width( self._clipSize );
+                               } else {
+                                       self._$clip.height( self._clipSize );
+                               }
+                               self._setScrollBarSize();
+                               self._setScrollBarPosition( 0 );
+                               self._setViewSize();
+                       }
+               },
 
-/**
-       class Popupwindow
-       The pop-up widget shows a list of items in a pop-up window in the middle of the screen. It automatically optimizes the pop-up window size within the screen.
-       To add a pop-up widget to the application, use the following code:
+               resize : function () {
+                       var self = this,
+                               height = 0,
+                               $virtualgrid = $( ".ui-virtualgrid-view" );
 
-               // Basic pop-up
-               <div id="center_info" data-role="popup" data-style="center_info">
-                       <div data-role="text">
-                               <p>
-                               Pop-up dialog box, a child window that blocks user interaction in the parent window
-                               </p>
-                       </div>
-               </div>
-               // Pop-up with a title and button
-               <div id="center_title_1btn" data-role="popup" data-style="center_title_1btn">
-                       <p data-role="title">
-                               Pop-up title
-                       </p>
-                       <p data-role="text">
-                               Pop-up dialog box
-                       </p>
-               <div data-role="button-bg">
-                       <input type="button" value="Text Button" />
-               </div>
-               </div>
+                       self._inheritedSize = self._getinheritedSize( self.element );
 
-       The pop-up can define callbacks for events as described in the jQueryMobile documentation for pop-up events. <br/>You can use methods with the pop-up as described in the jQueryMobile documentation for pop-up methods.
+                       if ( $virtualgrid.length !== 0 ) {
+                               self._resize();
+                       }
+               },
 
-       @deprecated 2.0 verisons
-*/
+               _initScrollView : function () {
+                       var self = this,
+                               oldDirection = self.options.direction;
+                       $.extend( self.options, self._scrollView.options );
+                       self.options.direction = oldDirection;
+                       self.options.moveThreshold = 10;
+                       self.options.showScrollBars = false;
+                       self._getScrollHierarchy = self._scrollView._getScrollHierarchy;
+                       self._makePositioned =  self._scrollView._makePositioned;
+                       self._set_scrollbar_size = self._scrollView._set_scrollbar_size;
+                       self._setStyleTransform = self._scrollView._setElementTransform;
+                       self._hideOverflowIndicator = self._scrollView._hideOverflowIndicator;
+                       self._showOverflowIndicator = self._scrollView._showOverflowIndicator;
+                       self._setGestureScroll = self._scrollView._setGestureScroll;
+               },
 
-/**
-       @property {String} data-style
-       Defines the pop-up window style.
-       The following styles are available:
+               _createTracker : function () {
+                       var self = this;
 
-       center_info: basic pop-up message
-       center_title: pop-up message with a title
-       center_basic_1btn: pop-up message with 1 button
-       center_basic_2btn: pop-up message with 2 horizontal buttons
-       center_title_1btn: pop-up message with a title and 1 button
-       center_title_2btn: pop-up message with a title and 2 horizontal buttons
-       center_title_3btn: pop-up message with a title and 3 horizontal buttons
-       center_button_vertical: pop-up message with vertical buttons
-       center_checkbox: pop-up message with a check box
-       center_liststyle_1btn>: pop-up message with a list and 1 button
-       center_liststyle_2btn: pop-up message with a list and 2 horizontal buttons
-       center_liststyle_3btn: pop-up message with a list and 3 horizontal buttons
-*/
-
-(function ( $, undefined ) {
-       $.widget( "tizen.popupwindow", $.tizen.widgetex, {
-               options: {
-                       theme: null,
-                       overlayTheme: "s",
-                       style: "custom",
-                       disabled: false,
-                       shadow: true,
-                       corners: true,
-                       fade: false,
-                       opacity: 0.7,
-                       widthRatio: 0.8612,
-                       transition: $.mobile.defaultDialogTransition,
-                       initSelector: ":jqmData(role='popupwindow')"
+                       self._tracker = new MomentumTracker( self.options );
+                       if ( self._direction ) {
+                               self._hTracker = self._tracker;
+                               self._$clip.width( self._clipSize );
+                       } else {
+                               self._vTracker = self._tracker;
+                               self._$clip.height( self._clipSize );
+                       }
                },
 
-               _htmlProto: {
-source:
+               //----------------------------------------------------//
+               //              Overflow effect
+               //----------------------------------------------------//
+               _createOverflowArea : function () {
+                       var self = this,
+                               prefix = "<div class=\"ui-virtualgrid-overflow-indicator-",
+                               suffixTop = "-top\"></div>",
+                               suffixBottom = "-bottom\"></div>";
 
- [ "<div><div>" ,
-  "    <div id='popupwindow-screen' class='ui-selectmenu-screen ui-screen-hidden ui-popupwindow-screen'></div>" ,
-  "    <div id='popupwindow-container' class='ui-popupwindow ui-popupwindow-padding ui-selectmenu-hidden ui-overlay-shadow ui-corner-all'></div>" ,
-  "</div>" ,
-  "</div>" ].join("")
-,                      ui: {
-                               screen: "#popupwindow-screen",
-                               container: "#popupwindow-container"
+                       if ( self.options.rotation ) {
+                               return;
                        }
-               },
 
-               _setStyle: function () {
-                       var popup = this.element,
-                               style = popup.attr( 'data-style' );
+                       if ( self._direction ) {
+                               self._overflowTop = $( prefix + "x" + suffixTop );
+                               self._overflowBottom = $( prefix + "x" + suffixBottom );
+                       } else {
+                               self._overflowTop = $( prefix + "y" + suffixTop );
+                               self._overflowBottom = $( prefix + "y" + suffixBottom );
+                       }
 
-                       if ( style ) {
-                               this.options.style = style;
+                       self._$clip.append( self._overflowTop );
+                       self._$clip.append( self._overflowBottom );
+                       self._overflowDisplayed = false;
+               },
+
+               _hideVGOverflowIndicator : function () {
+                       if ( this._overflowDisplayed === false ) {
+                               return;
                        }
 
-                       popup.addClass( this.options.style );
-                       popup.find( ":jqmData(role='title')" )
-                                       .wrapAll( "<div class='popup-title'></div>" );
-                       popup.find( ":jqmData(role='text')" )
-                                       .wrapAll( "<div class='popup-text'></div>" );
-                       popup.find( ":jqmData(role='button-bg')" )
-                                       .wrapAll( "<div class='popup-button-bg'></div>" );
-                       popup.find( ":jqmData(role='check-bg')" )
-                                       .wrapAll( "<div class='popup-check-bg'></div>" );
-                       popup.find( ":jqmData(role='scroller-bg')" )
-                                       .addClass( "popup-scroller-bg" );
-                       popup.find( ":jqmData(role='text-bottom-bg')" )
-                                       .wrapAll( "<div class='popup-text-bottom-bg'></div>" );
-                       popup.find( ":jqmData(role='text-left')" )
-                                       .wrapAll( "<div class='popup-text-left'></div>" );
-                       popup.find( ":jqmData(role='text-right')" )
-                                       .wrapAll( "<div class='popup-text-right'></div>" );
-                       popup.find( ":jqmData(role='progress-bg')" )
-                                       .wrapAll( "<div class='popup-progress-bg'></div>" );
+                       this._overflowTop.animate( { opacity: 0 }, 300 );
+                       this._overflowBottom.animate( { opacity: 0 }, 300 );
+                       this._overflowDisplayed = false;
                },
 
-               _create: function () {
-                       console.warn("popupwindow() was deprecated. use popup() instead.");
-                       var thisPage = this.element.closest(":jqmData(role='page')"),
-                               self = this;
+               //----------------------------------------------------//
+               //              Scrollbar               //
+               //----------------------------------------------------//
+               _createScrollBar : function () {
+                       var self = this,
+                               prefix = "<div class=\"ui-scrollbar ui-scrollbar-",
+                               suffix = "\"><div class=\"ui-scrollbar-track\"><div class=\"ui-scrollbar-thumb\"></div></div></div>";
 
-                       if ( thisPage.length === 0 ) {
-                               thisPage = $("body");
+                       if ( self.options.rotation ) {
+                               return ;
                        }
 
-                       this._ui.placeholder =
-                                       $( "<div><!-- placeholder for " + this.element.attr("id") + " --></div>" )
-                                       .css("display", "none")
-                                       .insertBefore( this.element );
+                       if ( self._direction ) {
+                               self._$clip.append( prefix + "x" + suffix );
+                               self._hScrollBar = self._$clip.children( ".ui-scrollbar-x" );
+                               self._hScrollBar.find( ".ui-scrollbar-thumb" ).addClass( "ui-scrollbar-thumb-x" );
+                       } else {
+                               self._$clip.append( prefix + "y" + suffix );
+                               self._vScrollBar = self._$clip.children( ".ui-scrollbar-y" );
+                               self._vScrollBar.find( ".ui-scrollbar-thumb" ).addClass( "ui-scrollbar-thumb-y" );
+                       }
+               },
 
-                       thisPage.append( this._ui.screen );
-                       this._ui.container.insertAfter( this._ui.screen );
-                       this._ui.container.append( this.element );
+               _setScrollBarSize: function () {
+                       var self = this,
+                               scrollBarSize = 0,
+                               currentSize = 0,
+                               $scrollBar,
+                               attrName,
+                               className;
 
-                       this._setStyle();
+                       if ( self.options.rotation ) {
+                               return ;
+                       }
 
-                       this._isOpen = false;
+                       scrollBarSize = parseInt( self._maxViewSize / self._clipSize, 10 );
+                       if ( self._direction ) {
+                               $scrollBar = self._hScrollBar.find( ".ui-scrollbar-thumb" );
+                               attrName = "width";
+                               currentSize = $scrollBar.width();
+                               className = "ui-scrollbar-thumb-x";
+                               self._hScrollBar.css( "width", self._clipSize );
+                       } else {
+                               $scrollBar = self._vScrollBar.find( ".ui-scrollbar-thumb" );
+                               attrName = "height";
+                               className = "ui-scrollbar-thumb-y";
+                               currentSize = $scrollBar.height();
+                               self._vScrollBar.css( "height", self._clipSize );
+                       }
 
-                       this._ui.screen.bind( "vclick", function ( e ) {
-                               self.close();
-                               return false;
-                       } );
+                       if ( scrollBarSize > currentSize ) {
+                               $scrollBar.removeClass( className );
+                               $scrollBar.css( attrName, scrollBarSize );
+                       } else {
+                               scrollBarSize = currentSize;
+                       }
 
-                       this.element.bind( "vclick", function ( e ) {
-                               if ( $( e.target ).is("ui-btn-ctxpopup-close") ) {
-                                       self.close();
-                               }
-                       } );
+                       self._itemScrollSize = parseFloat( ( self._clipSize - scrollBarSize ) / ( self._totalRowCnt - self._rowsPerView ) );
+                       self._itemScrollSize = Math.round( self._itemScrollSize * 100 ) / 100;
                },
 
-               destroy: function () {
-                       this.element.insertBefore( this._ui.placeholder );
-
-                       this._ui.placeholder.remove();
-                       this._ui.container.remove();
-                       this._ui.screen.remove();
-                       this.element.triggerHandler("destroyed");
-                       $.Widget.prototype.destroy.call( this );
-               },
+               _setScrollBarPosition : function ( di, duration ) {
+                       var self = this,
+                               $sbt = null,
+                               x = "0px",
+                               y = "0px",
+                               translate;
 
-               _placementCoords: function ( x, y, cw, ch ) {
-                       var screenHeight = $( window ).height(),
-                               screenWidth = $( window ).width(),
-                               halfheight = ch / 2,
-                               maxwidth = parseFloat( this._ui.container.css( "max-width" ) ),
-                               roomtop = y,
-                               roombot = screenHeight - y,
-                               newtop,
-                               newleft;
+                       if ( self.options.rotation ) {
+                               return ;
+                       }
 
-                       if ( roomtop > ch / 2 && roombot > ch / 2 ) {
-                               newtop = y - halfheight;
+                       self._currentItemCount = self._currentItemCount + di;
+                       if ( self._vScrollBar ) {
+                               $sbt = self._vScrollBar.find( ".ui-scrollbar-thumb" );
+                               y = ( self._currentItemCount * self._itemScrollSize ) + "px";
                        } else {
-                               newtop = roomtop > roombot ? screenHeight - ch - 30 : 30;
+                               $sbt = self._hScrollBar.find( ".ui-scrollbar-thumb" );
+                               x = ( self._currentItemCount * self._itemScrollSize ) + "px";
                        }
+                       self._setStyleTransform( $sbt, x, y, duration );
+               },
 
-                       if ( cw < maxwidth ) {
-                               newleft = ( screenWidth - cw ) / 2;
-                       } else {
-                               newleft = x - cw / 2;
+               _hideScrollBars : function () {
+                       var self = this,
+                               vclass = "ui-scrollbar-visible";
 
-                               if ( newleft < 10 ) {
-                                       newleft = 10;
-                               } else if ( ( newleft + cw ) > screenWidth ) {
-                                       newleft = screenWidth - cw - 10;
-                               }
+                       if ( self.options.rotation ) {
+                               return ;
                        }
 
-                       return { x : newleft, y : newtop };
+                       if ( self._vScrollBar ) {
+                               self._vScrollBar.removeClass( vclass );
+                       } else {
+                               self._hScrollBar.removeClass( vclass );
+                       }
                },
 
-               _setPosition: function ( x_where, y_where ) {
-                       var x = ( undefined === x_where ? $( window ).width()  / 2 : x_where ),
-                               y = ( undefined === y_where ? $( window ).height() / 2 : y_where ),
-                               coords,
-                               ctxpopup = this.element.data("ctxpopup"),
-                               popupWidth,
-                               menuHeight,
-                               menuWidth,
-                               screenHeight,
-                               screenWidth,
-                               roomtop,
-                               roombot,
-                               halfheight,
-                               maxwidth,
-                               newtop,
-                               newleft;
-
-                       if ( !ctxpopup ) {
-                               popupWidth = $( window ).width() * this.options.widthRatio;
-                               this._ui.container.css( "width", popupWidth );
+               _showScrollBars : function () {
+                       var self = this,
+                               vclass = "ui-scrollbar-visible";
 
-                               if ( this._ui.container.outerWidth() > $( window ).width() ) {
-                                       this._ui.container.css( {"max-width" : $( window ).width() - 30} );
-                               }
+                       if ( self.options.rotation ) {
+                               return ;
                        }
 
-                       coords = this._placementCoords( x, y,
-                                       this._ui.container.outerWidth(),
-                                       this._ui.container.outerHeight() );
-
-                       menuHeight = this._ui.container.innerHeight();
-                       menuWidth = this._ui.container.innerWidth();
-                       screenHeight = $( window ).height();
-                       screenWidth = $( window ).width();
-                       roomtop = y;
-                       roombot = screenHeight - y;
-                       halfheight = menuHeight / 2;
-                       maxwidth = parseFloat( this._ui.container.css( "max-width" ) );
-                       newtop = ( screenHeight - menuHeight ) / 2;
-
-                       if ( !maxwidth || menuWidth < maxwidth ) {
-                               newleft = ( screenWidth - menuWidth ) / 2;
+                       if ( self._vScrollBar ) {
+                               self._vScrollBar.addClass( vclass );
                        } else {
-                               newleft = x - menuWidth / 2;
-
-                               if ( newleft < 30 ) {
-                                       newleft = 30;
-                               } else if ( ( newleft + menuWidth ) > screenWidth ) {
-                                       newleft = screenWidth - menuWidth - 30;
-                               }
-                       }
-
-                       if ( ctxpopup ) {
-                               newtop = coords.y;
-                               newleft = coords.x;
+                               self._hScrollBar.addClass( vclass );
                        }
-
-                       this._ui.container.css({
-                               top: newtop,
-                               left: newleft
-                       });
-
-                       this._ui.screen.css( "height", screenHeight );
                },
-               open: function ( x_where, y_where, backgroundclose ) {
+
+               //----------------------------------------------------//
+               //              scroll process          //
+               //----------------------------------------------------//
+               centerTo : function ( selector ) {
                        var self = this,
-                               zIndexMax = 0;
+                               row = null,
+                               targetItem = null,
+                               targetRowIndex = -1,
+                               rowsLength = self._$rows.length,
+                               newPosition,
+                               i;
 
-                       if ( this._isOpen || this.options.disabled ) {
+                       if ( !self.options.rotation ) {
                                return;
                        }
 
-                       $( document ).find("*").each( function () {
-                               var el = $( this ),
-                                       zIndex = parseInt( el.css("z-index"), 10 );
-
-                               if ( !( el.is( self._ui.container ) ||
-                                               el.is( self._ui.screen ) ||
-                                               isNaN( zIndex ))) {
-                                       zIndexMax = Math.max( zIndexMax, zIndex );
+                       for ( i = 0; i < rowsLength; ++i ) {
+                               row = $( self._$rows[ i ] );
+                               targetItem = row.children( "." + selector );
+                               if ( targetItem.length ) {
+                                       targetRowIndex = parseInt( row.attr( "row-index" ), 10 );
+                                       break;
                                }
-                       } );
-
-                       this._ui.screen.css( "height", $( window ).height() );
-
-                       if ( backgroundclose ) {
-                               this._ui.screen.css( "opacity", 0 )
-                                               .removeClass("ui-screen-hidden");
-                       } else {
-                               this._ui.removeClass("ui-screen-hidden");
+                       }
 
-                               if ( this.options.fade ) {
-                                       this._ui.screen.animate( {opacity: this.options.opacity}, "fast" );
-                               } else {
-                                       this._ui.screen.css( {opacity: this.options.opacity} );
+                       if ( targetRowIndex === -1 ) {
+                               targetRowIndex = self._getTargetRowIndex( selector );
+                               if ( targetRowIndex === -1 ) {
+                                       return;
                                }
                        }
 
-                       this._setPosition( x_where, y_where );
+                       newPosition = -( targetRowIndex * self._cellSize - ( self._clipSize - self._cellSize ) / 2 );
+                       if ( self._direction ) {
+                               self.scrollTo( newPosition, 0 );
+                       } else {
+                               self.scrollTo( 0, newPosition );
+                       }
+               },
 
-                       this.element.trigger("popupbeforeposition");
+               _getTargetRowIndex: function ( selector ) {
+                       var self = this,
+                               dataCount = self._numItemData,
+                               itemCount = self._itemCount,
+                               attrName = self._direction ? "top" : "left",
+                               html = "",
+                               targetRowIndex = self._totalRowCnt,
+                               i;
 
-                       this._ui.container
-                               .removeClass("ui-selectmenu-hidden")
-                               .addClass("in")
-                               .animationComplete( function () {
-                                       self.element.trigger("popupafteropen");
-                               } );
+                       for ( i = 0; i < dataCount; ++i ) {
+                               html = self._makeHtmlData( i, i % itemCount, attrName );
+                               if ( self._hasClassItem( html, selector ) ) {
+                                       targetRowIndex = parseInt( i / itemCount, 10 );
+                                       break;
+                               }
+                       }
 
-                       this._isOpen = true;
+                       if ( targetRowIndex === self._totalRowCnt ) {
+                               return -1;
+                       }
 
-                       if ( !this._reflow ) {
-                               this._reflow = function () {
-                                       if ( !self._isOpen ) {
-                                               return;
-                                       }
+                       return targetRowIndex;
+               },
 
-                                       self._setPosition( x_where, y_where );
-                               };
+               _hasClassItem: function ( html, selector ) {
+                       var self = this,
+                               classString = self._getItemClass( html );
 
-                               $( window ).bind( "resize", this._reflow );
+                       if ( classString.indexOf( selector ) === -1 ) {
+                               return false;
                        }
-               },
 
-               close: function () {
-                       if ( !this._isOpen ) {
-                               return;
+                       if ( classString.indexOf( "virtualgrid-item" ) === -1 ) {
+                               return false;
                        }
 
-                       if ( this._reflow ) {
-                               $( window ).unbind( "resize", this._reflow );
-                               this._reflow = null;
-                       }
+                       return true;
+               },
 
-                       var self = this,
-                               hideScreen = function () {
-                                       self._ui.screen.addClass("ui-screen-hidden");
-                                       self._isOpen = false;
-                               };
+               _getItemClass: function ( html ) {
+                       var classIndex = html.indexOf( "class" ),
+                               classBeginIndex = Math.min( html.indexOf( "\"", classIndex ), html.indexOf( "'", classIndex ) ),
+                               classEndIndex = Math.min( html.indexOf( "\"", classBeginIndex + 1 ), html.indexOf( "'", classBeginIndex + 1 ) );
 
-                       this._ui.container.removeClass("in").addClass("reverse out");
+                       return html.slice( classBeginIndex + 1, classEndIndex );
+               },
 
-                       if ( this.options.transition === "none" ) {
-                               this._ui.container
-                                       .addClass("ui-selectmenu-hidden")
-                                       .removeAttr("style");
-                               this.element.trigger("popupafterclose");
+               scrollTo: function ( x, y, duration ) {
+                       var self = this;
+                       if ( self._direction ) {
+                               x -= self._cellSize;
+                               self._sx = self._reservedPos;
+                               self._reservedPos = x;
                        } else {
-                               this._ui.container.animationComplete( function () {
-                                       self._ui.container
-                                               .removeClass("reverse out")
-                                               .addClass("ui-selectmenu-hidden")
-                                               .removeAttr("style");
-                                       self.element.trigger("popupafterclose");
-                               } );
+                               y -= self._cellSize;
+                               self._sy = self._reservedPos;
+                               self._reservedPos = y;
                        }
+                       self._scrollView.scrollTo.apply( this, [ x, y, duration ] );
+               },
 
-                       if ( this.options.fade ) {
-                               this._ui.screen.animate( {opacity: 0}, "fast", hideScreen );
-                       } else {
-                               hideScreen();
+               getScrollPosition: function () {
+                       if ( this.direction ) {
+                               return { x: -this._ry, y: 0 };
                        }
+                       return { x: 0, y: -this._ry };
                },
 
-               _realSetTheme: function ( dst, theme ) {
-                       var classes = ( dst.attr("class") || "" ).split(" "),
-                               alreadyAdded = true,
-                               currentTheme = null,
-                               matches;
+               _setScrollPosition: function ( x, y ) {
+                       var self = this,
+                               sy = self._scalableSize,
+                               distance = self._direction ? x : y,
+                               dy = distance - sy,
+                               di = parseInt( dy / self._cellSize, 10 ),
+                               i = 0,
+                               idx = 0,
+                               replaceStartIdx = 0,
+                               realRowCount = self._rowsPerView + 2,
+                               rawView = self._$view[0];
 
-                       while ( classes.length > 0 ) {
-                               currentTheme = classes.pop();
-                               matches = currentTheme.match(/^ui-body-([a-z])$/);
+                       if ( self._blockScroll ) {
+                               if ( dy > 0 && distance >= -self._cellSize && self._scalableSize >= -self._cellSize ) {
+                                       self._overflowDir = _OVERFLOW_DIR_UP;
+                               }
+                               if ( dy < 0 && self._scalableSize <= -( self._maxSizeExceptClip + self._cellSize ) ) {
+                                       self._overflowDir = _OVERFLOW_DIR_DOWN;
+                               }
+                               return;
+                       }
 
-                               if ( matches && matches.length > 1 ) {
-                                       currentTheme = matches[1];
-                                       break;
-                               } else {
-                                       currentTheme = null;
+                       if ( ! self.options.rotation ) {
+                               if ( dy > 0 && distance >= -self._cellSize && self._scalableSize >= -self._cellSize ) {
+                                       // top
+                                       self._stopMScroll();
+                                       self._scalableSize = -self._cellSize;
+                                       self._setElementTransform( -self._cellSize );
+                                       if ( self._overflowDir === _OVERFLOW_DIR_NONE ) {
+                                               self._overflowDir = _OVERFLOW_DIR_UP;
+                                       }
+                                       return;
+                               }
+                               if ( dy < 0 && self._scalableSize <= -( self._maxSizeExceptClip + self._cellSize ) ) {
+                                       // bottom
+                                       self._stopMScroll();
+                                       self._scalableSize = -( self._maxSizeExceptClip + self._cellSize );
+                                       self._setElementTransform( self._modifyViewPos );
+                                       if ( self._overflowDir === _OVERFLOW_DIR_NONE ) {
+                                               self._overflowDir = _OVERFLOW_DIR_DOWN;
+                                       }
+                                       return;
                                }
                        }
 
-                       dst.removeClass( "ui-body-" + currentTheme );
-                       if ( ( theme || "" ).match(/[a-z]/) ) {
-                               dst.addClass( "ui-body-" + theme );
+                       replaceStartIdx = ( Math.abs( di ) < realRowCount ) ? 0 : ( di > 0 ) ? di - realRowCount : di + realRowCount;
+                       if ( di > 0 ) { // scroll up
+                               for ( i = replaceStartIdx; i < di; ++i ) {
+                                       idx = -parseInt( ( sy / self._cellSize ) + i + 3, 10 );
+                                       self._replaceRow( rawView.lastChild, circularNum( idx, self._totalRowCnt ) );
+                                       rawView.insertBefore( rawView.lastChild, rawView.firstChild );
+                               }
+                       } else if ( di < 0 ) { // scroll down
+                               for ( i = replaceStartIdx; i > di; --i ) {
+                                       idx = self._rowsPerView - parseInt( ( sy / self._cellSize ) + i, 10 );
+                                       self._replaceRow( rawView.firstChild, circularNum( idx, self._totalRowCnt ) );
+                                       rawView.insertBefore( rawView.firstChild, rawView.lastChild.nextSibling );
+                               }
                        }
+                       self._setScrollBarPosition( -di );
+                       self._scalableSize += di * self._cellSize;
+                       self._setElementTransform( distance - self._scalableSize - self._cellSize );
                },
 
-               _setTheme: function ( value ) {
-                       this._realSetTheme( this.element, value );
-                       this.options.theme = value;
-                       this.element.attr( "data-" + ( $.mobile.ns || "" ) + "theme", value );
-               },
+               _setElementTransform : function ( value ) {
+                       var self = this,
+                               x = 0,
+                               y = 0;
 
-               _setOverlayTheme: function ( value ) {
-                       this._realSetTheme( this._ui.container, value );
-                       this.options.overlayTheme = value;
-                       this.element.attr( "data-" + ( $.mobile.ns || "" ) + "overlay-theme", value );
+                       if ( self._direction ) {
+                               x = value + "px";
+                       } else {
+                               y = value + "px";
+                       }
+                       self._setStyleTransform( self._$view, x, y );
                },
 
-               _setShadow: function ( value ) {
-                       this.options.shadow = value;
-                       this.element.attr( "data-" + ( $.mobile.ns || "" ) + "shadow", value );
-                       this._ui.container[value ? "addClass" : "removeClass"]("ui-overlay-shadow");
-               },
+               //----------------------------------------------------//
+               //              Event handler           //
+               //----------------------------------------------------//
+               _handleMomentumScroll: function () {
+                       var self = this,
+                               opts = self.options,
+                               keepGoing = false,
+                               v = this._$view,
+                               x = 0,
+                               y = 0,
+                               t = self._tracker;
 
-               _setCorners: function ( value ) {
-                       this.options.corners = value;
-                       this.element.attr( "data-" + ( $.mobile.ns || "" ) + "corners", value );
-                       this._ui.container[value ? "addClass" : "removeClass"]("ui-corner-all");
-               },
-
-               _setFade: function ( value ) {
-                       this.options.fade = value;
-                       this.element.attr( "data-" + ( $.mobile.ns || "" ) + "fade", value );
-               },
-
-               _setTransition: function ( value ) {
-                       this._ui.container
-                               .removeClass( this.options.transition || "" )
-                               .addClass( value );
-                       this.options.transition = value;
-                       this.element.attr( "data-" + ( $.mobile.ns || "" ) + "transition", value );
-               },
-
-               _setDisabled: function ( value ) {
-                       $.Widget.prototype._setOption.call( this, "disabled", value );
-                       if ( value ) {
-                               this.close();
+                       if ( t ) {
+                               t.update();
+                               if ( self._direction ) {
+                                       x = t.getPosition();
+                               } else {
+                                       y = t.getPosition();
+                               }
+                               keepGoing = !t.done();
                        }
-               }
-       });
 
-       $.tizen.popupwindow.bindPopupToButton = function ( btn, popup ) {
-               if ( btn.length === 0 || popup.length === 0 ) {
-                       return;
-               }
+                       self._setScrollPosition( x, y );
+                       if ( !opts.rotation ) {
+                               keepGoing = !t.done();
+                               self._reservedPos = self._direction ? x : y;
+                               // bottom
+                               self._reservedPos = self._reservedPos <= (-(self._maxSizeExceptClip - self._modifyViewPos)) ? ( - ( self._maxSizeExceptClip + self._cellSize) ) : self._reservedPos;
+                               // top
+                               self._reservedPos = self._reservedPos > -self._cellSize ? -self._cellSize : self._reservedPos;
+                       } else {
+                               self._reservedPos = self._direction ? x : y;
+                       }
+                       self._$clip.trigger( self.options.updateEventName, [ { x: x, y: y } ] );
 
-               var btnVClickHandler = function ( e ) {
-                       if ( !popup.jqmData("overlay-theme-set") ) {
-                               popup.popupwindow( "option", "overlayTheme", btn.jqmData("theme") );
+                       if ( keepGoing ) {
+                               self._timerID = setTimeout( self._timerCB, self._timerInterval );
+                       } else {
+                               self._stopMScroll();
                        }
+               },
 
-                       popup.popupwindow( "open",
-                               btn.offset().left + btn.outerWidth()  / 2,
-                               btn.offset().top  + btn.outerHeight() / 2 );
+               _startMScroll: function ( speedX, speedY ) {
+                       var self = this;
+                       if ( self._direction ) {
+                               self._sx = self._reservedPos;
+                       } else {
+                               self._sy = self._reservedPos;
+                       }
+                       self._scrollView._startMScroll.apply( self, [ speedX, speedY ] );
+               },
 
-                       return false;
-               };
+               _stopMScroll: function () {
+                       this._scrollView._stopMScroll.apply( this );
+               },
 
-               if ( ( popup.popupwindow("option", "overlayTheme") || "" ).match(/[a-z]/) ) {
-                       popup.jqmData( "overlay-theme-set", true );
-               }
+               _enableTracking: function () {
+                       var self = this;
+                       self._$view.bind( self._dragMoveEvt, self._dragMoveCB );
+                       self._$view.bind( self._dragStopEvt, self._dragStopCB );
+                       self._scrollView._enableTracking.apply( self );
+               },
 
-               btn
-                       .attr({
-                               "aria-haspopup": true,
-                               "aria-owns": btn.attr("href")
-                       })
-                       .removeAttr("href")
-                       .bind( "vclick", btnVClickHandler );
+               _disableTracking: function () {
+                       var self = this;
+                       self._$view.unbind( self._dragMoveEvt, self._dragMoveCB );
+                       self._$view.unbind( self._dragStopEvt, self._dragStopCB );
+                       self._scrollView._disableTracking.apply( self );
+               },
 
-               popup.bind( "destroyed", function () {
-                       btn.unbind( "vclick", btnVClickHandler );
-               } );
-       };
+               _handleDragStart: function ( e, ex, ey ) {
+                       var self = this;
+                       self._scrollView._handleDragStart.apply( this, [ e, ex, ey ] );
+                       self._eventPos = self._direction ? ex : ey;
+                       self._nextPos = self._reservedPos;
+               },
 
-       $( document ).bind( "pagecreate create", function ( e ) {
-               $( $.tizen.popupwindow.prototype.options.initSelector, e.target )
-                       .not(":jqmData(role='none'), :jqmData(role='nojs')")
-                       .popupwindow();
+               _handleDragMove: function ( e, ex, ey ) {
+                       var self = this,
+                               dx = ex - self._lastX,
+                               dy = ey - self._lastY,
+                               x = 0,
+                               y = 0,
+                               diffFromStartPos = 0,
+                               diffFromLastPos = 0,
+                               opacity = 0,
+                               overflowPos = 0,
+                               overFlowTarget = null;
 
-               $( "a[href^='#']:jqmData(rel='popupwindow')", e.target ).each( function () {
-                       $.tizen.popupwindow.bindPopupToButton( $( this ), $( $( this ).attr("href") ) );
-               });
-       });
-}( jQuery ));
+                       self._lastMove = getCurrentTime();
+                       self._speedX = dx;
+                       self._speedY = dy;
 
+                       self._didDrag = true;
 
+                       self._lastX = ex;
+                       self._lastY = ey;
 
-/**
- * @class core
- * loader.js
- *
- * Youmin Ha <youmin.ha@samsung.com>
- *
- *
- */
-/*
-       Web UI scaling concept in Tizen Web UI
+                       if ( self._direction ) {
+                               self._movePos = ex - self._eventPos;
+                               x = self._nextPos + self._movePos;
+                               overflowPos = ex;
+                       } else {
+                               self._movePos = ey - self._eventPos;
+                               y = self._nextPos + self._movePos;
+                               overflowPos = ey;
+                       }
+                       self._showScrollBars();
+                       self._setScrollPosition( x, y );
+                       if ( self._overflowDir !== _OVERFLOW_DIR_NONE ) {
+                               overFlowTarget = ( self._overflowDir === _OVERFLOW_DIR_UP ) ? self._overflowTop : self._overflowBottom;
+                               if ( !self._overflowDisplayed ) {
+                                       self._overflowDisplayed = true;
+                                       self._overflowStartPos = overflowPos;
+                               }
+                               diffFromStartPos = ( overflowPos - self._overflowStartPos ) * self._overflowDir;
+                               opacity = ( diffFromStartPos < 0 ) ?
+                                                       0 : ( diffFromStartPos > self._overflowMaxDragDist ) ?
+                                                               1 : ( diffFromStartPos / self._overflowMaxDragDist );
+                               overFlowTarget.css( "opacity", opacity );
+                       }
 
-Generally, web applications must be designed to be showed acceptable on various size and resolution of screens, and web winsets have to be scaled well.  Tizen Web UI Framework supports various viewport settings, and Tizen Web UI widgets are designed to be scalable on various screen sizes.  In order to make web applications scalable on many devices which have different screen size, it is necessary to understand how mobile web browsers deal with screen resolution, and how Tizen Web UI Framework supports scaling for web applications.
+                       return false;
+               },
 
+               _handleDragStop: function ( e ) {
+                       var self = this;
 
-* Viewport on mobile web browser
+                       self._reservedPos = self._movePos ? self._nextPos + self._movePos : self._reservedPos;
+                       self._scrollView._handleDragStop.apply( this, [ e ] );
+                       if ( self._overflowDir !== _OVERFLOW_DIR_NONE ) {
+                               self._overflowDir = _OVERFLOW_DIR_NONE;
+                               self._hideVGOverflowIndicator();
+                       }
+                       return self._didDrag ? false : undefined;
+               },
 
-Viewport is an area showing web content on the browser.  Unlike desktop browsers, mobile browsers support logical viewport seting, which means that application can set viewport width/height and zoom level by itself.
-The very important thing that to be remembered is that the viewport resolution in pixel is 'Logical', not physical.  For example, if the viewport width is set to 480 on a mobile device having 720px screen width, the viewport width is considered to 480px logically. All elements put on right side from 480px horizontal position will not be shown on the viewport.
-Most mobile browsers set viewport with given content attribute with <meta name="viewport" content="..."> tag in <head> section in the application source html, whereas desktop browsers ignore the tag.
-Detailed usage of viewport meta tag is found in here: http://www.w3.org/TR/mwabp/#bp-viewport
+               _addBehaviors: function () {
+                       var self = this;
 
+                       // scroll event handler.
+                       if ( self.options.eventType === "mouse" ) {
+                               self._dragStartEvt = "mousedown";
+                               self._dragStartCB = function ( e ) {
+                                       return self._handleDragStart( e, e.clientX, e.clientY );
+                               };
 
-* Viewport setting by application developers
+                               self._dragMoveEvt = "mousemove";
+                               self._dragMoveCB = function ( e ) {
+                                       return self._handleDragMove( e, e.clientX, e.clientY );
+                               };
 
-When developers write <meta name="viewport" content="..."> in the <head> section of the web application HTML file, Tizen Web UI Framework does not add another viewport meta tag, nor modify developer-defined viewport.
+                               self._dragStopEvt = "mouseup";
+                               self._dragStopCB = function ( e ) {
+                                       return self._handleDragStop( e, e.clientX, e.clientY );
+                               };
 
+                               self._$view.bind( "vclick", function ( e ) {
+                                       return !self._didDrag;
+                               } );
+                       } else { //touch
+                               self._dragStartEvt = "touchstart";
+                               self._dragStartCB = function ( e ) {
+                                       var t = e.originalEvent.targetTouches[0];
+                                       return self._handleDragStart( e, t.pageX, t.pageY );
+                               };
 
-* Automatic viewport setting by Tizen Web UI Framework
+                               self._dragMoveEvt = "touchmove";
+                               self._dragMoveCB = function ( e ) {
+                                       var t = e.originalEvent.targetTouches[0];
+                                       return self._handleDragMove( e, t.pageX, t.pageY );
+                               };
 
-If developers do not give a viewport meta tag, Tizen Web UI Framework automatically add a viewport meta tag with default viewport setting.
+                               self._dragStopEvt = "touchend";
+                               self._dragStopCB = function ( e ) {
+                                       return self._handleDragStop( e );
+                               };
+                       }
+                       self._$view.bind( self._dragStartEvt, self._dragStartCB );
 
+                       // other events.
+                       self._$view.delegate( ".virtualgrid-item", "click", function ( event ) {
+                               var $selectedItem = $( this );
+                               $selectedItem.trigger( "select", this );
+                       } );
 
-* Portrait/landscape mode
+                       $( window ).bind( "resize", function ( e ) {
+                               var height = 0,
+                                       $virtualgrid = $( ".ui-virtualgrid-view" );
+                               if ( $virtualgrid.length !== 0 ) {
+                                       self._resize();
+                               }
+                       } );
 
+                       $( document ).one( "pageshow", function ( event ) {
+                               var $page = $( self.element ).parents( ".ui-page" ),
+                                       $header = $page.find( ":jqmData(role='header')" ),
+                                       $footer = $page.find( ":jqmData(role='footer')" ),
+                                       $content = $page.find( ":jqmData(role='content')" ),
+                                       footerHeight = $footer ? $footer.height() : 0,
+                                       headerHeight = $header ? $header.height() : 0;
 
-* Tizen Web UI widgets scaling
+                               if ( $page && $content ) {
+                                       $content.height( window.innerHeight - headerHeight - footerHeight ).css( "overflow", "hidden" );
+                                       $content.addClass( "ui-virtualgrid-content" );
+                               }
+                       } );
+               },
 
+               //----------------------------------------------------//
+               //              Calculate size about dom element.               //
+               //----------------------------------------------------//
+               _calculateClipSize : function () {
+                       var self = this,
+                               clipSize = 0;
 
- */
-( function ($, Globalize, window, undefined) {
-
-       var tizen = {
-               libFileName : "tizen-web-ui-fw(.min)?.js",
-
-               frameworkData : {
-                       rootDir: '/usr/lib/tizen-web-ui-fw',
-                       version: '0.1',
-                       theme: "tizen-white",
-                       viewportWidth: "device-width",
-                       viewportScale: false,
-
-                       defaultFontSize: 22,
-                       minified: false,
-
-                       debug: false
-               },
-
-               log : {
-                       debug : function ( msg ) {
-                               if ( tizen.frameworkData.debug ) {
-                                       console.log( msg );
-                               }
-                       },
-                       warn : function ( msg ) {
-                               console.warn( msg );
-                       },
-                       error : function ( msg ) {
-                               console.error( msg );
-                       },
-                       alert : function ( msg ) {
-                               window.alert( msg );
+                       if ( self._direction ) {
+                               clipSize = self._calculateClipWidth();
+                       } else {
+                               clipSize = self._calculateClipHeight();
                        }
+                       return clipSize;
                },
 
-               util : {
+               _calculateClipWidth : function () {
+                       var self = this,
+                               $parent = self._$clip.parent(),
+                               paddingValue = 0,
+                               clipSize = $( window ).width();
 
-                       loadScriptSync : function ( scriptPath, successCB, errorCB ) {
-                               $.ajax( {
-                                       url: scriptPath,
-                                       dataType: 'script',
-                                       async: false,
-                                       crossDomain: false,
-                                       success: successCB,
-                                       error: function ( jqXHR, textStatus, errorThrown ) {
-                                               if ( errorCB ) {
-                                                       errorCB( jqXHR, textStatus, errorThrown );
-                                               } else {
-                                                       var ignoreStatusList = [ 404 ],  // 404: not found
-                                                               errmsg = ( 'Error while loading ' + scriptPath + '\n' + jqXHR.status + ':' + jqXHR.statusText );
-                                                       if ( -1 == $.inArray( jqXHR.status, ignoreStatusList ) ) {
-                                                               tizen.log.alert( errmsg );
-                                                       } else {
-                                                               tizen.log.warn( errmsg );
-                                                       }
-                                               }
-                                       }
-                               } );
-                       },
-                       isMobileBrowser: function ( ) {
-                               var mobileIdx = window.navigator.appVersion.indexOf("Mobile"),
-                                       isMobile = -1 < mobileIdx;
-                               return isMobile;
+                       if ( self._inheritedSize.isDefinedWidth ) {
+                               return self._inheritedSize.width;
                        }
-               },
 
-               css : {
-                       cacheBust: ( document.location.href.match( /debug=true/ ) ) ?
-                                       '?cacheBust=' + ( new Date( ) ).getTime( ) :
-                                       '',
-                       addElementToHead : function ( elem ) {
-                               var head = document.getElementsByTagName( 'head' )[0];
-                               if ( head ) {
-                                       $( head ).prepend( elem );
-                               }
-                       },
-                       makeLink : function ( href ) {
-                               var cssLink = document.createElement( 'link' );
-                               cssLink.setAttribute( 'rel', 'stylesheet' );
-                               cssLink.setAttribute( 'href', href );
-                               cssLink.setAttribute( 'name', 'tizen-theme' );
-                               return cssLink;
-                       },
-                       load: function ( path ) {
-                               var head = document.getElementsByTagName( 'head' )[0],
-                                       cssLinks = head.getElementsByTagName( 'link' ),
-                                       idx,
-                                       l = null;
-                               // Find css link element
-                               for ( idx = 0; idx < cssLinks.length; idx++ ) {
-                                       if ( cssLinks[idx].getAttribute( 'rel' ) != "stylesheet" ) {
-                                               continue;
-                                       }
-                                       if ( cssLinks[idx].getAttribute( 'name' ) == "tizen-theme"
-                                                       || cssLinks[idx].getAttribute( 'href' ) == path ) {
-                                               l = cssLinks[idx];
-                                               break;
-                                       }
-                               }
-                               if ( l ) {      // Found the link element!
-                                       if ( l.getAttribute( 'href' ) == path ) {
-                                               tizen.log.warn( "Theme is already loaded. Skip theme loading in the framework." );
-                                       } else {
-                                               l.setAttribute( 'href', path );
-                                       }
-                               } else {
-                                       this.addElementToHead( this.makeLink( path ) );
-                               }
+                       if ( $parent.hasClass( "ui-content" ) ) {
+                               paddingValue = parseInt( $parent.css( "padding-left" ), 10 );
+                               clipSize = clipSize - ( paddingValue || 0 );
+                               paddingValue = parseInt( $parent.css( "padding-right" ), 10 );
+                               clipSize = clipSize - ( paddingValue || 0 );
+                       } else {
+                               clipSize = self._$clip.width();
                        }
+                       return clipSize;
                },
 
-               getParams: function ( ) {
-                       /* Get data-* params from <script> tag, and set tizen.frameworkData.* values
-                        * Returns true if proper <script> tag is found, or false if not.
-                        */
-                       // Find current <script> tag element
-                       var scriptElems = document.getElementsByTagName( 'script' ),
-                               val = null,
-                               foundScriptTag = false,
-                               idx,
-                               elem,
-                               src,
-                               tokens,
-                               version_idx;
+               _calculateClipHeight : function () {
+                       var self = this,
+                               $parent = self._$clip.parent(),
+                               header = null,
+                               footer = null,
+                               paddingValue = 0,
+                               clipSize = $( window ).height();
 
-                       function getTizenTheme( ) {
-                               var t = navigator.theme ? navigator.theme.split( ':' )[0] : null;
-                               if ( t ) {
-                                       t = t.replace('-hd', '');
-                                       if ( ! t.match( /^tizen-/ ) ) {
-                                               t = 'tizen-' + t;
-                                       }
-                               }
-                               return t;
+                       if ( self._inheritedSize.isDefinedHeight ) {
+                               return self._inheritedSize.height;
                        }
 
-                       for ( idx in scriptElems ) {
-                               elem = scriptElems[idx];
-                               src = elem.src ? elem.getAttribute( 'src' ) : undefined;
-                               if (src && src.match( this.libFileName )) {
-                                       // Set framework data, only when they are given.
-                                       tokens = src.split(/[\/\\]/);
-                                       version_idx = -3;
-                                       this.frameworkData.rootDir = ( elem.getAttribute( 'data-framework-root' )
-                                               || tokens.slice( 0, tokens.length + version_idx ).join( '/' )
-                                               || this.frameworkData.rootDir ).replace( /^file:(\/\/)?/, '' );
-                                       this.frameworkData.version = elem.getAttribute( 'data-framework-version' )
-                                               || tokens[ tokens.length + version_idx ]
-                                               || this.frameworkData.version;
-                                       this.frameworkData.theme = elem.getAttribute( 'data-framework-theme' )
-                                               || getTizenTheme( )
-                                               || this.frameworkData.theme;
-                                       this.frameworkData.viewportWidth = elem.getAttribute( 'data-framework-viewport-width' )
-                                               || this.frameworkData.viewportWidth;
-                                       this.frameworkData.viewportScale =
-                                               "true" === elem.getAttribute( 'data-framework-viewport-scale' ) ? true
-                                               : this.frameworkData.viewportScale;
-                                       this.frameworkData.minified = src.search(/\.min\.js$/) > -1 ? true : false;
-                                       this.frameworkData.debug = "true" === elem.getAttribute( 'data-framework-debug' ) ? true
-                                               : this.frameworkData.debug;
-                                       foundScriptTag = true;
-                                       break;
+                       if ( $parent.hasClass( "ui-content" ) ) {
+                               paddingValue = parseInt( $parent.css( "padding-top" ), 10 );
+                               clipSize = clipSize - ( paddingValue || 0 );
+                               paddingValue = parseInt( $parent.css( "padding-bottom" ), 10 );
+                               clipSize = clipSize - ( paddingValue || 0 );
+                               header = $parent.siblings( ".ui-header" );
+                               footer = $parent.siblings( ".ui-footer" );
+
+                               if ( header ) {
+                                       if ( header.outerHeight( true ) === null ) {
+                                               clipSize = clipSize - ( $( ".ui-header" ).outerHeight() || 0 );
+                                       } else {
+                                               clipSize = clipSize - header.outerHeight( true );
+                                       }
+                               }
+                               if ( footer ) {
+                                       clipSize = clipSize - footer.outerHeight( true );
                                }
+                       } else {
+                               clipSize = self._$clip.height();
                        }
-                       return foundScriptTag;
+                       return clipSize;
                },
 
-               loadTheme: function ( theme ) {
-                       var themePath,
-                               cssPath,
-                               jsPath;
+               _calculateColumnSize : function () {
+                       var self = this,
+                               $tempBlock,
+                               $cell;
 
-                       if ( ! theme ) {
-                               theme = tizen.frameworkData.theme;
+                       $tempBlock = $( self._makeRows( 1 ) );
+                       self._$view.append( $tempBlock.children().first() );
+                       if ( self._direction ) {
+                               // x-axis
+                               self._viewSize = self._$view.width();
+                               $cell = self._$view.children().first().children().first();
+                               self._cellSize = $cell.outerWidth( true );
+                               self._cellOtherSize = $cell.outerHeight( true );
+                       } else {
+                               // y-axis
+                               self._viewSize = self._$view.height();
+                               $cell = self._$view.children().first().children().first();
+                               self._cellSize = $cell.outerHeight( true );
+                               self._cellOtherSize = $cell.outerWidth( true );
                        }
-                       themePath = [
-                               tizen.frameworkData.rootDir,
-                               tizen.frameworkData.version,
-                               'themes',
-                               theme
-                       ].join( '/' );
+                       $tempBlock.remove();
+                       self._$view.children().remove();
+               },
 
-                       jsPath = [ themePath, 'theme.js' ].join( '/' );
+               _calculateColumnCount : function ( ) {
+                       var self = this,
+                               $view = self._$clip,
+                               viewSize = self._direction ? $view.innerHeight() : $view.innerWidth(),
+                               itemCount = 0 ;
 
-                       if ( tizen.frameworkData.minified ) {
-                               cssPath = [themePath, 'tizen-web-ui-fw-theme.min.css'].join( '/' );
+                       if ( self._direction ) {
+                               viewSize = viewSize - ( parseInt( $view.css( "padding-top" ), 10 ) + parseInt( $view.css( "padding-bottom" ), 10 ) );
                        } else {
-                               cssPath = [themePath, 'tizen-web-ui-fw-theme.css'].join( '/' );
+                               viewSize = viewSize - ( parseInt( $view.css( "padding-left" ), 10 ) + parseInt( $view.css( "padding-right" ), 10 ) );
                        }
-                       tizen.css.load( cssPath );
-                       tizen.util.loadScriptSync( jsPath );
+
+                       itemCount = parseInt( ( viewSize / self._cellOtherSize ), 10 );
+                       return itemCount > 0 ? itemCount : 1 ;
                },
 
-               /** Load Globalize culture file, and set default culture.
-                *  @param[in]  language  (optional) Language code. ex) en-US, en, ko-KR, ko
-                *                        If language is not given, read language from html 'lang' attribute, 
-                *                        or from system setting.
-                *  @param[in]  cultureDic (optional) Dictionary having language code->
-                */
-               loadGlobalizeCulture: function ( language, cultureDic ) {
+               // Read the position of clip form property ('webkit-transform').
+               // @return : number - position of clip.
+               _getClipPosition : function () {
                        var self = this,
-                               cFPath,
-                               lang,
-                               mockJSXHR;
+                               matrix = null,
+                               contents = null,
+                               result = -self._cellSize,
+                               $scrollview = self._$view.closest( ".ui-scrollview-view" );
 
-                       function getLang ( language ) {
-                               var lang = language
-                                               || $( 'html' ).attr( 'lang' )
-                                               || window.navigator.language.split( '.' )[0]    // Webkit, Safari + workaround for Tizen
-                                               || window.navigator.userLanguage        // IE
-                                               || 'en',
-                                       countryCode = null,
-                                       countryCodeIdx = lang.lastIndexOf('-'),
-                                       ignoreCodes = ['Cyrl', 'Latn', 'Mong']; // Not country code!
-                               if ( countryCodeIdx != -1 ) {   // Found country code!
-                                       countryCode = lang.substr( countryCodeIdx + 1 );
-                                       if ( ignoreCodes.join( '-' ).indexOf( countryCode ) < 0 ) {
-                                               // countryCode is not found from ignoreCodes.
-                                               // Make countryCode to uppercase.
-                                               lang = [ lang.substr( 0, countryCodeIdx ), countryCode.toUpperCase( ) ].join( '-' );
-                                       }
-                               }
-                               // NOTE: 'en' to 'en-US', because globalize has no 'en' culture file.
-                               lang = lang == 'en' ? 'en-US' : lang;
-                               return lang;
+                       if ( $scrollview ) {
+                               matrix = $scrollview.css( "-webkit-transform" );
+                               contents = matrix.substr( 7 );
+                               contents = contents.substr( 0, contents.length - 1 );
+                               contents = contents.split( ', ' );
+                               result =  Math.abs( contents [5] );
                        }
+                       return result;
+               },
 
-                       function getNeutralLang ( lang ) {
-                               var neutralLangIdx = lang.lastIndexOf( '-' ),
-                                       neutralLang;
-                               if ( neutralLangIdx != -1 ) {
-                                       neutralLang = lang.substr( 0, neutralLangIdx );
+               //----------------------------------------------------//
+               //              DOM Element handle              //
+               //----------------------------------------------------//
+               _makeRows : function ( count ) {
+                       var self = this,
+                               index = 0,
+                               row = null,
+                               wrapper = null;
+
+                       wrapper = self._createElement( "div" );
+                       wrapper.setAttribute( "class", "ui-scrollview-view" );
+                       for ( index = 0; index < count ; index += 1 ) {
+                               row = self._makeRow( index );
+                               if ( self._direction ) {
+                                       row.style.top = 0;
+                                       row.style.left = index * self._cellSize;
                                }
-                               return neutralLang;
+                               wrapper.appendChild( row );
                        }
+                       return wrapper;
+               },
 
-                       function getCultureFilePath ( lang, cFDic ) {
-                               var cFPath = null;      // error value
+               // make a single row block
+               _makeRow : function ( rowIndex ) {
+                       var self = this,
+                               index = rowIndex * self._itemCount,
+                               colIndex = 0,
+                               blockClassName = self._direction ? "ui-virtualgrid-wrapblock-x" : "ui-virtualgrid-wrapblock-y",
+                               wrapBlock = self._createElement( "div" ),
+                               strWrapInner = "",
+                               attrName = self._direction ? "top" : "left";
 
-                               if ( "string" != typeof lang ) {
-                                       return null;
-                               }
-                               if ( cFDic && cFDic[lang] ) {
-                                       cFPath = cFDic[lang];
-                               } else {
-                                       // Default Globalize culture file path
-                                       cFPath = [
-                                               self.frameworkData.rootDir,
-                                               self.frameworkData.version,
-                                               'js',
-                                               'cultures',
-                                               ['globalize.culture.', lang, '.js'].join( '' ),
-                                       ].join( '/' );
-                               }
-                               return cFPath;
+                       for ( colIndex = 0; colIndex < self._itemCount; colIndex++ ) {
+                               strWrapInner += self._makeHtmlData( index, colIndex, attrName );
+                               index += 1;
                        }
+                       wrapBlock.innerHTML = strWrapInner;
+                       wrapBlock.setAttribute( "class", blockClassName );
+                       wrapBlock.setAttribute( "row-index", String( rowIndex ) );
+                       self._fragment.appendChild( wrapBlock );
+                       return wrapBlock;
+               },
 
-                       function printLoadError( cFPath, jqXHR ) {
-                               tizen.log.error( "Error " + jqXHR.status + ": " + jqXHR.statusText
-                                               + "::Culture file (" + cFPath + ") is failed to load.");
+               _makeHtmlData : function ( dataIndex, colIndex, attrName ) {
+                       var self = this,
+                               htmlStr = "",
+                               itemData = null;
+
+                       itemData = self._itemData( dataIndex );
+                       if ( itemData ) {
+                               htmlStr = self._getConvertedTmplStr( itemData );
+                               htmlStr = self._insertPosToTmplStr( htmlStr, attrName, ( colIndex * self._cellOtherSize ) );
                        }
 
-                       function loadCultureFile ( cFPath, errCB ) {
-                               function _successCB ( ) {
-                                       tizen.log.debug( "Culture file (" + cFPath + ") is loaded successfully." );
+                       return htmlStr;
+               },
+
+               _insertPosToTmplStr : function ( tmplStr, attrName, posVal ) {
+                       var tagCloseIdx = tmplStr.indexOf( '>' ),
+                               classIdx = -1,
+                               firstPart,
+                               lastPart,
+                               result,
+                               found = false,
+                               targetIdx = 0,
+                               firstPartLen,
+                               i = 0;
+
+                       if ( tagCloseIdx === -1 ) {
+                               return;
+                       }
+
+                       firstPart = tmplStr.slice( 0, tagCloseIdx );
+                       lastPart = tmplStr.slice( tagCloseIdx, tmplStr.length );
+
+                       classIdx = firstPart.indexOf( 'class' );
+
+                       if ( classIdx !== -1 ) {
+                               firstPartLen = firstPart.length;
+                               for ( i = classIdx + 6; i < firstPartLen; i++ ) {
+                                       if ( firstPart.charAt( i ) === "\"" || firstPart.charAt( i ) === "\'" ) {
+                                               if ( found === false ) {
+                                                       found = true;
+                                               } else {
+                                                       targetIdx = i;
+                                                       break;
+                                               }
+                                       }
                                }
-                               function _errCB ( jqXHR, textStatus, err ) {
-                                       if ( errCB ) {
-                                               errCB( jqXHR, textStatus, err );
-                                       } else {
-                                               printLoadError( cFPath, jqXHR );
+                               result = firstPart.slice( 0, targetIdx ) + " virtualgrid-item" + firstPart.slice( targetIdx, firstPartLen ) + lastPart;
+                       } else {
+                               result = firstPart + " class=\"virtualgrid-item\"" + lastPart;
+                       }
+
+                       if ( !isNaN( posVal ) ) {
+                               result = result.replace( '>', " style=\"" + attrName + ": " + String( posVal ) + "px\">");
+                       }
+
+                       return result;
+               },
+
+               _increaseRow : function ( num ) {
+                       var self = this,
+                               rotation = self.options.rotation,
+                               totalRowCnt = self._totalRowCnt,
+                               rowView = self._$view[ 0 ],
+                               firstRow = null,
+                               lastRow = rowView.lastChild,
+                               row = null,
+                               headRowIndex = 0,
+                               tailRowIndex = 0,
+                               i;
+
+                       if ( !lastRow ) {
+                               return;
+                       }
+
+                       tailRowIndex = parseInt( lastRow.getAttribute( "row-index" ), 10 );
+                       if ( !rotation ) {
+                               firstRow = rowView.firstChild;
+                               headRowIndex = parseInt( firstRow.getAttribute( "row-index" ), 10 );
+                       }
+
+                       for ( i = 0 ; i < num ; ++i ) {
+                               if ( tailRowIndex >= totalRowCnt - 1 && !rotation ) {
+                                       if ( headRowIndex == 0 ) {
+                                               break;
                                        }
+
+                                       row = self._makeRow( --headRowIndex );
+                                       rowView.insertBefore( row, firstRow );
+                                       firstRow = row;
+                               } else {
+                                       row = self._makeRow( circularNum( ++tailRowIndex, totalRowCnt ) );
+                                       rowView.appendChild( row );
                                }
 
-                               if ( ! cFPath ) {       // Invalid cFPath -> Regard it as '404 Not Found' error.
-                                       mockJSXHR = {
-                                               status: 404,
-                                               statusText: "Not Found"
-                                       };
-                                       _errCB( mockJSXHR, null, null );
+                               if ( self._direction ) {
+                                       $( row ).width( self._cellSize );
                                } else {
-                                       $.ajax( {
-                                               url: cFPath,
-                                               dataType: 'script',
-                                               cache: true,
-                                               async: false,
-                                               success: _successCB,
-                                               error: _errCB
-                                       } );
+                                       $( row ).height( self._cellSize );
                                }
                        }
+               },
 
-                       lang = getLang( language );
-                       cFPath = getCultureFilePath( lang, cultureDic );
-                       loadCultureFile( cFPath,
-                               function ( jqXHR, textStatus, err ) {
-                                       if ( jqXHR.status == 404 ) {
-                                               // If culture file is not found, try once more with neutral lang.
-                                               var nLang = getNeutralLang( lang ),
-                                                       ncFPath = getCultureFilePath( nLang, cultureDic );
-                                               loadCultureFile( ncFPath, null );
-                                       } else {
-                                               printLoadError( cFPath, jqXHR );
-                                       }
-                               } );
+               _decreaseRow : function ( num ) {
+                       var self = this,
+                               rowView = self._$view[ 0 ],
+                               i;
 
-                       return lang;
+                       for ( i = 0 ; i < num ; ++i ) {
+                               rowView.removeChild( rowView.lastChild );
+                       }
                },
-               setGlobalize: function ( ) {
-                       var lang = this.loadGlobalizeCulture( );
 
-                       // Set culture
-                       // NOTE: It is not needed to set with neutral lang.
-                       //       Globalize automatically deals with it.
-                       Globalize.culture( lang );
-               },
-               /**
-                * Load custom globalize culture file
-                * Find current system language, and load appropriate culture file from given colture file list.
-                *
-                * @param[in]   cultureDic      collection of 'language':'culture file path' key-val pair.
-                * @example
-                * var myCultures = {
-                *      "en"    : "culture/en.js",
-                *      "fr"    : "culture/fr.js",
-                *      "ko-KR" : "culture/ko-KR.js"
-                * };
-                * loadCultomGlobalizeCulture( myCultures );
-                *
-                * ex) culture/fr.js
-                * -------------------------------
-                * Globalize.addCultureInfo( "fr", {
-                *   messages: {
-                *     "hello" : "bonjour",
-                *     "translate" : "traduire"
-                *   }
-                * } );
-                * -------------------------------
-                */
-               loadCustomGlobalizeCulture: function ( cultureDic ) {
-                       tizen.loadGlobalizeCulture( null, cultureDic );
-               },
+               _replaceRows : function ( curCnt, prevCnt, maxCnt, clipPosition ) {
+                       var self = this,
+                               $rows = self._$view.children(),
+                               prevRowIndex = 0,
+                               rowIndex = 0,
+                               diffRowCnt = 0,
+                               targetCnt = 1,
+                               filterCondition = ( self._filterRatio * self._cellSize ) + self._cellSize,
+                               idx = 0;
 
-               /** Set viewport meta tag for mobile devices.
-                *
-                * @param[in]   viewportWidth   viewport width. "device-width" is OK.
-                */
-               setViewport: function ( viewportWidth ) {
-                       var meta = null,
-                               head,
-                               content;
+                       if ( filterCondition < clipPosition ) {
+                               targetCnt += 1;
+                       }
 
-                       // Do nothing if viewport setting code is already in the code.
-                       $( "meta[name=viewport]" ).each( function ( ) {
-                               meta = this;
-                               return;
-                       });
-                       if ( meta ) {   // Found custom viewport!
-                               content = $( meta ).prop( "content" );
-                               viewportWidth = content.replace( /.*width=(device-width|\d+)\s*,?.*$/gi, "$1" );
-                               tizen.log.warn( "Viewport is set to '" + viewportWidth + "' in a meta tag. Framework skips viewport setting." );
+                       prevRowIndex = parseInt( $( $rows[targetCnt] ).attr( "row-index" ), 10 );
+                       if ( prevRowIndex === 0 ) {
+                               // only top.
+                               rowIndex = maxCnt - targetCnt;
                        } else {
-                               // Create a meta tag
-                               meta = document.createElement( "meta" );
-                               if ( meta ) {
-                                       meta.name = "viewport";
-                                       content = [ "width=", viewportWidth, ", user-scalable=no" ].join( "" );
-                                       if ( ! isNaN( viewportWidth ) ) {
-                                               // Fix scale to 1.0, if viewport width is set to fixed value.
-                                               // NOTE: Works wrong in Tizen browser!
-                                               //content = [ content, ", initial-scale=1.0, maximum-scale=1.0" ].join( "" );
-                                       }
-                                       meta.content = content;
-                                       tizen.log.debug( content );
-                                       head = document.getElementsByTagName( 'head' ).item( 0 );
-                                       head.insertBefore( meta, head.firstChild );
+                               rowIndex = Math.round( ( prevRowIndex * prevCnt ) / curCnt );
+                               if ( rowIndex + self._rowsPerView >= maxCnt ) {
+                                       // only bottom.
+                                       rowIndex = maxCnt - self._rowsPerView;
                                }
+                               diffRowCnt = prevRowIndex - rowIndex;
+                               rowIndex -= targetCnt;
                        }
-                       return viewportWidth;
+
+                       for ( idx = 0 ; idx < $rows.length ; idx += 1 ) {
+                               self._replaceRow( $rows[idx], circularNum( rowIndex, self._totalRowCnt ) );
+                               rowIndex++;
+                       }
+                       return -diffRowCnt;
                },
 
-               /**     Read body's font-size, scale it, and reset it.
-                *  param[in]   desired font-size / base font-size.
-                */
-               scaleBaseFontSize: function ( themeDefaultFontSize, ratio ) {
-                       tizen.log.debug( "themedefaultfont size: " + themeDefaultFontSize + ", ratio: " + ratio );
-                       var scaledFontSize = Math.max( Math.floor( themeDefaultFontSize * ratio ), 4 );
+               _replaceRow : function ( block, index ) {
+                       var self = this,
+                               tempBlocks = null;
 
-                       $( 'html.ui-mobile' ).css( { 'font-size': scaledFontSize + "px" } );
-                       tizen.log.debug( 'html:font size is set to ' + scaledFontSize );
-                       $( document ).ready( function ( ) {
-                               $( '.ui-mobile' ).children( 'body' ).css( { 'font-size': scaledFontSize + "px" } );
-                       } );
+                       while ( block.hasChildNodes() ) {
+                               block.removeChild( block.lastChild );
+                       }
+
+                       tempBlocks = self._makeRow( index );
+                       while ( tempBlocks.children.length ) {
+                               block.appendChild( tempBlocks.children[0] );
+                       }
+                       block.setAttribute( "row-index", tempBlocks.getAttribute( "row-index" ) );
+                       tempBlocks.parentNode.removeChild( tempBlocks );
                },
 
-               setScaling: function ( ) {
-                       var viewportWidth = this.frameworkData.viewportWidth,
-                               themeDefaultFontSize = this.frameworkData.defaultFontSize, // comes from theme.js
-                               ratio = 1;
+               _createElement : function ( tag ) {
+                       var element = document.createElement( tag );
 
-                       // Keep original font size
-                       $( 'body' ).attr( 'data-tizen-theme-default-font-size', themeDefaultFontSize );
+                       this._fragment.appendChild( element );
+                       return element;
+               },
 
-                       if ( !tizen.util.isMobileBrowser() ) {
-                               return;
+               _getObjectNames : function ( obj ) {
+                       var properties = [],
+                               name = "";
+
+                       for ( name in obj ) {
+                               properties.push( name );
                        }
+                       this._properties = properties;
+               },
 
-                       // Legacy support: tizen.frameworkData.viewportScale
-                       if ( this.frameworkData.viewportScale == true ) {
-                               viewportWidth = "screen-width";
+               _getConvertedTmplStr : function ( data ) {
+                       var self = this,
+                               dataProperties = self._properties,
+                               i = 0,
+                               plainMsg,
+                               ret = "";
+
+                       if ( !data ) {
+                               return ;
                        }
 
-                       if ( "screen-width" == viewportWidth ) {
-                               viewportWidth = document.documentElement.clientWidth;
+                       plainMsg = self._templateText;
+                       for ( i = 0; i < dataProperties.length; i++ ) {
+                               plainMsg = self._strReplace( plainMsg, "${" + dataProperties[ i ] + "}" , data[ dataProperties[ i ] ] );
                        }
+                       plainMsg = self._changeImgSrcAriaAttrFromTmpl( plainMsg );
 
-                       viewportWidth = this.setViewport( viewportWidth );      // If custom viewport setting exists, get viewport width
+                       return plainMsg;
+               },
+
+               _changeImgSrcAriaAttrFromTmpl : function ( plainMsg ) {
+                       var self = this,
+                               ret = "",
+                               targetTagIdx,
+                               beforeTargetTag = "",
+                               afterTargetTag = "",
+                               imgFileName,
+                               imgSrcSlashIdx,
+                               temp,
+                               srcRegExpResult;
 
-                       if ( isNaN( viewportWidth ) ) { // device-width
-                               // By default, when the viewport is set to device-width, default font-size is not changed.
-                               // However, if current document width is less than defaultViewportWidth(determined by theme),
-                               //   default font-size is scaled to scale widgets smaller.
-                               if( document.documentElement.clientWidth <  this.frameworkData.defaultViewportWidth ) {
-                                       ratio = parseFloat( document.documentElement.clientWidth / this.frameworkData.defaultViewportWidth );
+                       temp = plainMsg;
+                       targetTagIdx = temp.indexOf( "$ARIA-IMG-SRC-ALT$" );
+                       while ( targetTagIdx !== -1 ) {
+                               imgFileName = "";
+                               beforeTargetTag = beforeTargetTag + temp.slice( 0, targetTagIdx + 19 );
+                               afterTargetTag = temp.slice( targetTagIdx + 19, temp.length );
+                               srcRegExpResult = afterTargetTag.match( imgTagSrcAttrRE );
+                               if ( srcRegExpResult ) {
+                                       imgSrcSlashIdx = srcRegExpResult[0].lastIndexOf( "/" );
+                                       if ( imgSrcSlashIdx !== -1 ) {
+                                               imgFileName = srcRegExpResult[0].slice( imgSrcSlashIdx + 1, -1 );
+                                       }
                                }
-                       } else {        // fixed width!
-                               ratio = parseFloat( viewportWidth / this.frameworkData.defaultViewportWidth );
+                               beforeTargetTag = beforeTargetTag.replace( "$ARIA-IMG-SRC-ALT$", imgFileName );
+                               temp = afterTargetTag;
+                               targetTagIdx = temp.indexOf( "$ARIA-IMG-SRC-ALT$" );
+                               ret = beforeTargetTag + afterTargetTag;
                        }
-                       this.scaleBaseFontSize( themeDefaultFontSize, ratio );
+
+                       if ( ret === "" ) {
+                               ret = plainMsg;
+                       }
+
+                       return ret;
                },
-       };
 
-       function export2TizenNS ( $, tizen ) {
-               if ( !$.tizen ) {
-                       $.tizen = { };
-               }
+               _insertAriaAttrToTmpl : function ( plainMsg ) {
+                       var ret = "",
+                               targetTagIdx,
+                               beforeTargetTag = "",
+                               afterTargetTag = "",
+                               temp;
 
-               $.tizen.frameworkData = tizen.frameworkData;
-               $.tizen.loadCustomGlobalizeCulture = tizen.loadCustomGlobalizeCulture;
-               $.tizen.loadTheme = tizen.loadTheme;
+                       temp = plainMsg.replace( "<div", "<div tabindex=\"0\" aria-selected=\"true\"" );
+                       targetTagIdx = temp.indexOf( "<img" );
+                       if ( targetTagIdx !== -1 ) {
+                               while ( targetTagIdx !== -1 ) {
+                                       beforeTargetTag = beforeTargetTag + temp.slice( 0, targetTagIdx + 4 );
+                                       afterTargetTag = temp.slice( targetTagIdx + 4, temp.length );
+                                       beforeTargetTag = beforeTargetTag + " role=\"img\" alt=\"$ARIA-IMG-SRC-ALT$\"";
+                                       temp = afterTargetTag;
+                                       targetTagIdx = temp.indexOf( "<img" );
+                                       ret = beforeTargetTag + afterTargetTag;
+                               }
+                               temp = ret;
+                               targetTagIdx = temp.indexOf( "<span" );
+                               beforeTargetTag = "";
+                               while ( targetTagIdx !== -1 ) {
+                                       beforeTargetTag = beforeTargetTag + temp.slice( 0, targetTagIdx + 5 );
+                                       afterTargetTag = temp.slice( targetTagIdx + 5, temp.length );
+                                       beforeTargetTag = beforeTargetTag + " aria-hidden=\"true\" tabindex=\"-1\"";
+                                       temp = afterTargetTag;
+                                       targetTagIdx = temp.indexOf( "<span" );
+                                       ret = beforeTargetTag + afterTargetTag;
+                               }
+                       }
 
-               $.tizen.__tizen__ = tizen;      // for unit-test
-       }
+                       if ( ret === "" ) {
+                               ret = plainMsg;
+                       }
 
-       export2TizenNS( $, tizen );
+                       return ret;
+               },
 
-       tizen.getParams( );
-       tizen.loadTheme( );
-       tizen.setScaling( );    // Run after loadTheme(), for the default font size.
-       tizen.setGlobalize( );
-       // Turn off JQM's auto initialization option.
-       // NOTE: This job must be done before domready.
-       $.mobile.autoInitializePage = false;
+               _strReplace : function ( plainMsg, stringToFind, stringToReplace ) {
+                       var temp = plainMsg,
+                               index = plainMsg.indexOf( stringToFind );
+                       while ( index !== -1 ) {
+                               temp = temp.replace( stringToFind, stringToReplace );
+                               index = temp.indexOf( stringToFind );
+                       }
+                       return temp;
+               }
 
-       $(document).ready( function ( ) {
-               $.mobile.initializePage( );
-       });
+       } );
 
-} ( jQuery, window.Globalize, window ) );
+       $( document ).bind( "pagecreate create", function ( e ) {
+               $( ":jqmData(role='virtualgrid')" ).virtualgrid();
+       } );
+} ( jQuery, window, document ) );
 
 
-\r
-\r
-/* ***************************************************************************\r
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.\r
- *\r
- * Permission is hereby granted, free of charge, to any person obtaining a\r
- * copy of this software and associated documentation files (the "Software"),\r
- * to deal in the Software without restriction, including without limitation\r
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
- * and/or sell copies of the Software, and to permit persons to whom the\r
- * Software is furnished to do so, subject to the following conditions:\r
- *\r
- * The above copyright notice and this permission notice shall be included in\r
- * all copies or substantial portions of the Software.\r
- *\r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\r
- * DEALINGS IN THE SOFTWARE.\r
- * ***************************************************************************\r
- *\r
- * Authors: Hyunsook Park <hyunsook.park@samsung.com>\r
- *                     Wonseop Kim <wonseop.kim@samsung.com>\r
- */\r
-\r
-/**\r
- *     'Gallery3D' is a 3D photo gallery widget.\r
- *     Images are arranged with a S-shaped curve on a 3-dimensional coordinate system.\r
- *     A user can rotate images by swiping the widget area.\r
- *     To improve performance, the size of image(s) displayed on the screen should be a square(under\r
- *     128X128 pixel) as possible. But if a user can't resize the images, this widget supports an image\r
- *     resizing feature and he/she can use it with "data-thumbnail-cache" option. ("data-thumbnail-cache"\r
- *     option resizes the gallery images under 128x128 pixels and stores the images on a local storage.\r
- *     So when a gallery3D widget is re-launched, the widget reuse the storage and a user can improve\r
- *     launching time. A browser or web runtime engine should support "Web Storage" feature to use that\r
- *     option.)\r
- *\r
- *     HTML Attributes:\r
- *\r
- *             data-thumbnail-cache : Determines whether to cache and resize images.\r
- *\r
- *     APIs:\r
- *\r
- *             next ( void )\r
- *                     : This method moves each image forward one by one.\r
- *             prev ( void )\r
- *                     : This method moves each image backward one by one.\r
- *             select ( [number] )\r
- *                     : When the "select" method is called with an argument, the method selects the image of given index.\r
- *                     If the method is called with no argument, it will return the Javascript object having "src"\r
- *                     attribute having the selected image’s URL.\r
- *             add ( object or string [, number] )\r
- *                     This method adds an image to Gallery3D widget.\r
- *                     If the second argument isn't inputted, the image is added at the 0th position.\r
- *             remove ( [number] )\r
- *                     : This method deletes an image from Gallery3d widget.\r
- *                     The argument defines the index of the image to be deleted.\r
- *                     If an argument isn't inputted, it removes current image.\r
- *             clearThumbnailCache ( void )\r
- *                     : This method clears the cache data of all images when thumbnailCache option is set as 'true'.\r
- *             refresh ( void )\r
- *                     : This method updates and redraws current widget.\r
- *             empty ( void )\r
- *                     : This method removes all of images from Gallery3D widget.\r
- *             length ( void )\r
- *                     : This method gets the number of images.\r
- *\r
- *     Events:\r
- *\r
- *             select : Triggered when an image is selected.\r
- *\r
- *     Examples:\r
- *\r
- *             <script>\r
- *                     $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
- *                             $( "#gallery3d" ).gallery3d( "add", "01.jpg" );\r
- *                     });\r
- *             </script>\r
- *             <div id="gallery3d" data-role="gallery3d"></div>\r
- */\r
-\r
-/**\r
-       @class Gallery3D\r
-       The gallery3d widget is a 3D photo gallery widget.\r
-       Images are arranged with a S-shaped curve on a 3-dimensional coordinate system.\r
-       A user can rotate images by swiping the widget area.\r
-       <br/><br/>To add an gallery3d widget to the application, use the following code:\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", "01.jpg" );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @property {Boolean} data-thumbnail-cache\r
-       Determines whether to cache and resize images.\r
-       To improve performance, the size of image(s) displayed on the screen should be a square (under 128X128 pixels).\r
-       "data-thumbnail-cache" option resizes the gallery images under 128x128 pixels and stores the images on a local storage.\r
-       So when a gallery3D widget is re-launched, the widget reuses the storage and the launching time can be improved.\r
-       A browser or web runtime engine must support "Web Storage" feature to use this option.\r
-*/\r
-/**\r
-       @event select\r
-       Triggered when an image is selected.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-                       }).on( "select", function ( event, data, index ) {\r
-                               // Handle the select event\r
-                               var urlOfImage = data.src, indexOfImage = index;\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method next\r
-       This method moves each image forward one by one.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } )\r
-                                       .gallery3d( "next" );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method prev\r
-       This method moves each image backward one by one.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } )\r
-                                       .gallery3d( "prev" );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method select\r
-       When the "select" method is called with an argument, the method selects the image of given index.\r
-       If the method is called with no argument, it will return the Javascript object having "src" attribute having the selected image’s URL.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-                               var selectedImage = $("#gallery3d"). gallery3d( "select" );\r
-                               // selectedImage = { src: "3.jpg" };\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method add\r
-       This method adds an image to Gallery3D widget.\r
-       The first argument is a Javascript object having a "src" attribute or a string of image's path.\r
-       The second argument is an index of images.\r
-       If second argument isn't inputted, the image is added at the 0th position.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", "2.jpg", 1 );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method remove\r
-       This method deletes an image from Gallery3d widget.\r
-       The argument defines the index of the image to be deleted.\r
-       If an argument isn't inputted, it removes current image.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-\r
-                               $( "#gallery3d" ).gallery3d( "remove" );\r
-                               $( "#gallery3d" ).gallery3d( "remove", 1 );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method clearThumbnailCache\r
-       This method clears the cache data of all images when thumbnailCache option is set as 'true'\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-\r
-                               $( "#gallery3d" ).gallery3d( "clearThumbnailCache" );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d" data-thumbnail-cache="true"></div>\r
-*/\r
-/**\r
-       @method refresh\r
-       This method updates and redraws current widget.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-\r
-                               $( "#gallery3d" ).gallery3d( "refresh" );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method empty\r
-       This method removes all of images from Gallery3D widget.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-\r
-                               $( "#gallery3d" ).gallery3d( "empty" );\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-/**\r
-       @method length\r
-       This method gets the number of images.\r
-\r
-               <script>\r
-                       $( "#gallery3d" ).on( "gallery3dcreate", function () {\r
-                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )\r
-                                       .gallery3d( "add", { src: "2.jpg" } )\r
-                                       .gallery3d( "add", { src: "3.jpg" } );\r
-\r
-                               var imagesLength = $( "#gallery3d" ).gallery3d( "length" );\r
-                               // imagesLength = 3;\r
-                       });\r
-               </script>\r
-               <div id="gallery3d" data-role="gallery3d"></div>\r
-*/\r
-\r
-( function ( $, document, window, undefined ) {\r
-       window.requestAnimationFrame = ( function () {\r
-               return function ( callback ) {\r
-                       var id = window.setTimeout( callback, 1000 / 60 );\r
-                       return id;\r
-               };\r
-       } () );\r
-\r
-       window.cancelAnimationFrame = ( function () {\r
-               return function ( id ) {\r
-                       window.clearTimeout( id );\r
-               };\r
-       } () );\r
-\r
-       var vec3 = window.vec3,\r
-               mat3 = window.mat3,\r
-               mat4 = window.mat4,\r
-               GlArray32 = ( typeof window.Float32Array !== "undefined" ? window.Float32Array : ( typeof window.WebGLFloatArray !== "undefined" ? window.WebGLFloatArray : Array ) ),\r
-               GlArray16 = ( typeof window.Uint16Array !== "undefined" ? window.Uint16Array : Array ),\r
-               getContext3D = function ( canvas ) {\r
-                       var gl, i,\r
-                               contextNames = [ "experimental-webgl", "webkit-3d", "webgl", "moz-webgl" ];\r
-\r
-                       for ( i = 0; i < contextNames.length; i += 1 ) {\r
-                               try {\r
-                                       gl = canvas.getContext( contextNames[i] );\r
-                                       if ( gl ) {\r
-                                               break;\r
-                                       }\r
-                               } catch ( e ) {\r
-                                       window.alert( "Unfortunately, there's a WebGL compatibility problem. </br> You may want to check your system settings." );\r
-                                       return;\r
-                               }\r
-                       }\r
-                       return gl;\r
-               },\r
-               VERTEX_SHADER = [\r
-                       "attribute vec3 aVertexPosition;",\r
-                       "attribute vec2 aTextureCoord;",\r
-                       "attribute vec3 aVertexNormal;",\r
-                       "uniform mat4 uMoveMatrix;",\r
-                       "uniform mat4 uPerspectiveMatrix;",\r
-                       "uniform mat3 nNormalMatrix;",\r
-                       "uniform vec3 uAmbientColor;",\r
-                       "uniform vec3 uLightDirection;",\r
-                       "uniform vec3 uDirectionColor;",\r
-                       "uniform vec3 uLightDirection_first;",\r
-                       "uniform vec3 uLightDirection_second;",\r
-                       "varying vec2 vTextureCoord;",\r
-                       "varying vec3 vLightWeight;",\r
-                       "varying vec4 vFogWeight;",\r
-\r
-                       "void main(void) {",\r
-                       "       vec4 v_Position = uMoveMatrix * vec4(aVertexPosition, 1.0);",\r
-                       "       gl_Position = uPerspectiveMatrix * v_Position;",\r
-                       "       vTextureCoord = aTextureCoord;",\r
-                       "       float fog = 1.0 - ((gl_Position.z + 1.5) / 60.0);",\r
-                       "       vFogWeight = clamp( vec4( fog, fog, fog, 1.0), 0.0, 1.0);",\r
-                       "       vec3 transNormalVector = nNormalMatrix * aVertexNormal;",\r
-\r
-                       "       float vLightWeightFirst = 0.0;",\r
-                       "       float vLightWeightSecond = max( dot(transNormalVector, uLightDirection_second), 0.0 );",\r
-\r
-                       "       vLightWeight = uAmbientColor + uDirectionColor * vLightWeightSecond;",\r
-                       "}"\r
-               ].join( "\n" ),\r
-               FRAGMENT_SHADER = [\r
-                       "precision mediump float;",\r
-                       "varying vec2 vTextureCoord;",\r
-                       "varying vec3 vLightWeight;",\r
-                       "uniform sampler2D uSampler;",\r
-                       "varying vec4 vFogWeight;",\r
-\r
-                       "void main(void) {",\r
-                       "       vec4 TextureColor = (texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t))) * vFogWeight;",\r
-                       "       gl_FragColor = vec4(TextureColor.rgb * vLightWeight, TextureColor.a);",\r
-                       "}"\r
-               ].join( "\n" );\r
-\r
-       function Node() {\r
-               this.vertices = [\r
-                       -1.0, -1.0, 0.0,\r
-                       1.0, -1.0, 0.0,\r
-                       1.0,  1.0, 0.0,\r
-                       -1.0,  1.0, 0.0\r
-               ];\r
-               this.textureCoords = [\r
-                       1.0, 0.0,\r
-                       0.0, 0.0,\r
-                       0.0, 1.0,\r
-                       1.0, 1.0\r
-               ];\r
-               this.normalVectors = [\r
-                       0.0, 0.0, 1.0,\r
-                       0.0, 0.0, 1.0,\r
-                       0.0, 0.0, 1.0,\r
-                       0.0, 0.0, 1.0\r
-               ];\r
-               this.texture = null;\r
-               this.textureBuffer = null;\r
-               this.textureBufferItemSize = 0;\r
-               this.mashOrder = [];\r
-               this.mvMatrix = null;\r
-               this.level = -1;\r
-               this.targetLevel = 0;\r
-               this.drawable = false;\r
-               this.image = null;\r
-               this.imageID = 0;\r
-       }\r
-\r
-       $.widget( "tizen.gallery3d", $.mobile.widget, {\r
-               options: {\r
-                       thumbnailCache: false\r
-               },\r
-\r
-               _MAX_ITEM_COUNT: 28,\r
-               _ANIMATION_END: 999,\r
-               _DURATION_DEFAULT: 300,\r
-               _DURATION_FIRST: 1600,\r
-               _VIEWPORT_WIDTH: 1024,\r
-               _VIEWPORT_HEIGHT: 456,\r
-               _DIRECTION_LEFT: -1,\r
-               _DIRECTION_RIGHT: +1,\r
-\r
-               _gl: null,\r
-               _shaderProgram : null,\r
-               _positionBuffer : null,\r
-               _textureCoordBuffer : null,\r
-               _normalVectorBuffer : null,\r
-               _nodes: null,\r
-               _pMatrix : null,\r
-               _animationID: 0,\r
-               _dragInterval : 0,\r
-               _startTime : 0,\r
-               _sumTime : 0,\r
-               _lightsPositionStack : [\r
-                       [0.0, 0.0, -1.0],       // back\r
-                       [-0.2, 0.0, 0.7]        // front\r
-               ],\r
-               _path: null,\r
-               _swipeThresholdOfBasetimeGap: ( $.support.touch ? 30 : 70 ),\r
-               _swipeThresholdOfSensitivity: ( $.support.touch ? 2.0 : 10.0 ),\r
-               _canvas: null,\r
-               _imageList: [],\r
-               _maxDrawLength: 0,\r
-               _firstImageNumber: 0,\r
-               _lastImageNumber: 0,\r
-\r
-               _create: function () {\r
-                       var self = this,\r
-                               view = self.element,\r
-                               option = self.options;\r
-\r
-                       self._canvas = $( "<canvas class='ui-gallery3d-canvas'></canvas>" );\r
-\r
-                       view.addClass( "ui-gallery3d" ).append( self._canvas );\r
-                       self._addBehavier();\r
-\r
-                       self._dragInterval = 1000 / 30; // 30fps\r
-\r
-                       $.each( self.options, function ( key, value ) {\r
-                               self.options[ key ] = undefined;\r
-                               self._setOption( key, value );\r
-                       });\r
-\r
-               },\r
-\r
-               _setOption: function ( key, value ) {\r
-                       switch ( key ) {\r
-                       case "thumbnailCache" :\r
-                               if ( typeof value === "string" ) {\r
-                                       value = ( value === "true" ) ? true : false;\r
-                               } else {\r
-                                       value = !!value;\r
-                               }\r
-                               this._reset();\r
-                               break;\r
-                       }\r
-\r
-                       $.mobile.widget.prototype._setOption.call( this, key, value );\r
-               },\r
-\r
-               _init: function ( canvas ) {\r
-                       var self = this,\r
-                               pathPoints = [\r
-                                       [40, 0, -48],\r
-                                       [-12, 0, -40],  // contorl Point of Point1\r
-                                       [24, 0, -9],            // contorl Point of Point2\r
-                                       [-5, 0, -5]\r
-                               ],\r
-                               i;\r
-\r
-                       canvas = canvas || self._canvas;\r
-\r
-                       if ( !canvas ) {\r
-                               return;\r
-                       }\r
-\r
-                       self._gl = self._gl || self._initGL( canvas[0] );\r
-                       if ( !self._gl ) {\r
-                               return;\r
-                       }\r
-\r
-                       if ( !self._imageList ) {\r
-                               return;\r
-                       }\r
-\r
-                       self._shaderProgram = self._shaderProgram || self._initShader( self._gl );\r
-                       if ( !self._shaderProgram ) {\r
-                               return;\r
-                       }\r
-\r
-                       if ( self._imageList.length > self._MAX_ITEM_COUNT ) {\r
-                               self._firstImageNumber = self._imageList.length - 1;\r
-                               self._lastImageNumber = self._MAX_ITEM_COUNT - 1;\r
-                       }\r
-\r
-                       self._nodes = self._initBuffers( self._gl, self._shaderProgram );\r
-                       self._initTextures( self._gl, self._nodes );\r
-                       self._path = $.motionpath( "bspline", {\r
-                               points: pathPoints,\r
-                               maxLevel: self._MAX_ITEM_COUNT\r
-                       } );\r
-                       for ( i = 0; i < self._nodes.length; i += 1 ) {\r
-                               self._path.levels[i] = self._path.levels[i + 1] || 0;\r
-                               self._nodes[i].level = i;\r
-                       }\r
-               },\r
-\r
-               _final: function ( canvas ) {\r
-                       var self = this,\r
-                               gl = self._gl;\r
-\r
-                       if ( !gl ) {\r
-                               return;\r
-                       }\r
-\r
-                       canvas = canvas || self._canvas;\r
-\r
-                       $( self._nodes ).each( function ( i ) {\r
-                               var node = self._nodes[i];\r
-                               gl.deleteTexture( node.texture );\r
-                               node.texture = null;\r
-                       });\r
-                       self._nodes = null;\r
-\r
-                       gl.deleteBuffer( self._positionBuffer );\r
-                       self._positionBuffer = null;\r
-                       gl.deleteBuffer( self._textureCoordBuffer );\r
-                       self._textureCoordBuffer = null;\r
-                       gl.deleteBuffer( self._normalVectorBuffer );\r
-                       self._normalVectorBuffer = null;\r
-\r
-                       $.webgl.shader.deleteShaders( gl );\r
-                       gl.deleteProgram( self._shaderProgram );\r
-                       self._shaderProgram = null;\r
-\r
-                       self._gl = gl = null;\r
-               },\r
-\r
-               _addBehavier : function () {\r
-                       var self = this,\r
-                               view = self.element,\r
-                               canvas = self._canvas,\r
-                               touchStartEvt = ( $.support.touch ? "touchstart" : "mousedown" ),\r
-                               touchMoveEvt = ( $.support.touch ? "touchmove" : "mousemove" ) + ".gallery3d",\r
-                               touchEndEvt = ( $.support.touch ? "touchend" : "mouseup" ) + ".gallery3d",\r
-                               touchLeaveEvt = ( $.support.touch ? "touchleave" : "mouseout" ) + ".gallery3d";\r
-\r
-                       $( document ).unbind( ".gallery3d" ).bind( "pagechange.gallery3d", function ( e ) {\r
-                               $( e.target ).find( ".ui-gallery3d" ).gallery3d( "refresh" );\r
-                       }).bind( "pageremove.gallery3d", function ( e ) {\r
-                               $( e.target ).find( ".ui-gallery3d" ).trigger( "_destory" );\r
-                       });\r
-\r
-                       $( window ).unbind( ".gallery3d" ).bind( "resize.gallery3d orientationchange.gallery3d", function ( e ) {\r
-                               $( ".ui-page-active" ).find( ".ui-gallery3d" ).gallery3d( "refresh" );\r
-                       }).bind( "unload.gallery3d", function ( e ) {\r
-                               $( e.target ).find( ".ui-gallery3d" ).trigger( "_destory" );\r
-                       });\r
-\r
-                       view.bind( "_destory", function ( e ) {\r
-                               self._final();\r
-                       });\r
-\r
-                       canvas.bind( "webglcontextlost", function ( e ) {\r
-                               e.preventDefault();\r
-                       }).bind( "webglcontextrestored", function ( e ) {\r
-                               self._init();\r
-                       }).bind( touchStartEvt, function ( e ) {\r
-                               var i = 0,\r
-                                       startX = 0,\r
-                                       deltaMaxSteps = 20,\r
-                                       deltas = [ deltaMaxSteps ],\r
-                                       deltaTimes = [ deltaMaxSteps ],\r
-                                       deltaIndex = 0,\r
-                                       dragValue = 0,\r
-                                       dragDirection = false,\r
-                                       prevTime = 0;\r
-\r
-                               e.preventDefault();\r
-                               e.stopPropagation();\r
-\r
-                               if ( self._imageList.length <= 1 ) {\r
-                                       return;\r
-                               }\r
-\r
-                               self._stop();\r
-\r
-                               startX =  $.support.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;\r
-                               prevTime = $.now();\r
-\r
-                               for ( i = 0; i < deltaMaxSteps; i += 1 ) {\r
-                                       deltas[i] = startX;\r
-                                       deltaTimes[i] = $.now();\r
-                               }\r
-\r
-                               deltaIndex += 1;\r
-\r
-                               view.bind( touchMoveEvt, function ( e ) {\r
-                                       var x, dx, interval;\r
-\r
-                                       e.preventDefault();\r
-                                       e.stopPropagation();\r
-\r
-                                       x =  $.support.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;\r
-                                       dx = startX - x;\r
-\r
-                                       deltas[deltaIndex] = x;\r
-                                       deltaTimes[deltaIndex] = $.now();\r
-                                       interval = deltaTimes[deltaIndex] - prevTime;\r
-\r
-                                       deltaIndex = ( deltaIndex + 1 ) % deltaMaxSteps;\r
-\r
-                                       // Validation of drag\r
-                                       if ( Math.abs( dx ) >= 10 && interval >= self._dragInterval ) {\r
-                                               if ( dragDirection !== ( ( dx < 0 ) ? self._DIRECTION_RIGHT : self._DIRECTION_LEFT ) ) {\r
-                                                       dragValue = 0;\r
-                                                       dragDirection = ( dx < 0 ) ? self._DIRECTION_RIGHT : self._DIRECTION_LEFT;\r
-                                               }\r
-\r
-                                               dragValue += Math.abs( dx ) / 100;\r
-                                               if ( dragValue >= 1 ) {\r
-                                                       self._setPosition( self._ANIMATION_END, dragDirection );\r
-                                                       dragValue = 0;\r
-                                               } else {\r
-                                                       self._setPosition( dragValue, dragDirection );\r
-                                               }\r
-                                               self._drawScene();\r
-                                               startX = x;\r
-                                               prevTime = $.now();\r
-                                       }\r
-                               }).bind( touchEndEvt, function ( e ) {\r
-                                       var baseTime = 0,\r
-                                               recent = -1,\r
-                                               index = 0,\r
-                                               previous = 0,\r
-                                               baseTimeRatio = 0,\r
-                                               fx = 0,\r
-                                               lastX = 0,\r
-                                               velocityX = 0,\r
-                                               dx = 0,\r
-                                               isSwipe = true,\r
-                                               direction;\r
-\r
-                                       e.preventDefault();\r
-                                       e.stopPropagation();\r
-\r
-                                       // Validation of swipe\r
-                                       baseTime = $.now() - self._swipeThresholdOfBasetimeGap;\r
-                                       lastX = $.support.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;\r
-                                       dx = startX - lastX;\r
-                                       startX = 0;\r
-                                       for ( i = 0; i < deltaMaxSteps; i += 1 ) {\r
-                                               index = ( deltaIndex + i ) % deltaMaxSteps;\r
-                                               if ( deltaTimes[index] > baseTime ) {\r
-                                                       recent = index;\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                                       if ( recent < 0 ) {\r
-                                               isSwipe = false;\r
-                                       }\r
-\r
-                                       if ( isSwipe ) {\r
-                                               previous = recent;\r
-                                               for ( i = 0; i < deltaMaxSteps; i += 1 ) {\r
-                                                       previous = ( previous - 1 + deltaMaxSteps ) % deltaMaxSteps;\r
-                                                       if ( deltaTimes[previous] < deltaTimes[recent] ) {\r
-                                                               break;\r
-                                                       }\r
-                                               }\r
-                                               // too slow or too fast\r
-                                               if ( i === deltaMaxSteps || baseTime < deltaTimes[previous] ) {\r
-                                                       isSwipe = false;\r
-                                               }\r
-                                       }\r
-\r
-                                       if ( isSwipe ) {\r
-                                               baseTimeRatio = ( baseTime - deltaTimes[previous] ) / ( deltaTimes[recent] - deltaTimes[previous] );\r
-                                               fx = ( 1.0 - baseTimeRatio ) * deltas[previous] + baseTimeRatio * deltas[recent];\r
-                                               if ( Math.abs( fx - lastX ) < self._swipeThresholdOfSensitivity ) {\r
-                                                       fx = lastX;\r
-                                               }\r
-                                               velocityX = parseInt( ( lastX - fx ) / ( $.now() - baseTime ), 10 );\r
-                                       }\r
-\r
-                                       if ( isSwipe && velocityX ) {\r
-                                               direction = ( velocityX < 0 ) ? self._DIRECTION_LEFT : self._DIRECTION_RIGHT;\r
-                                               self._run( direction, Math.abs( velocityX ), dragValue );\r
-                                       } else if ( dragDirection !== 0 && dragValue ) {\r
-                                               self._animate( null, self._DURATION_DEFAULT * ( 1 - dragValue ), dragDirection, 0, dragValue );\r
-                                       }\r
-\r
-                                       view.unbind( ".gallery3d" );\r
-                               }).bind( touchLeaveEvt, function ( e ) {\r
-                                       view.trigger( touchEndEvt );\r
-                               });\r
-                       });\r
-               },\r
-\r
-               // ----------------------------------------------------------\r
-               // Data parsing\r
-               // ----------------------------------------------------------\r
-               _loadData: function ( jsonUrl, key ) {\r
-                       var self = this;\r
-\r
-                       $.ajax({\r
-                               async : false,\r
-                               url : jsonUrl,\r
-                               dataType: "json",\r
-                               success : function ( data ) {\r
-                                       self._imageList = $.extend( [], data[ key ] );\r
-                               }\r
-                       });\r
-               },\r
-\r
-               // ----------------------------------------------------------\r
-               // WebGL\r
-               // ----------------------------------------------------------\r
-               _initGL: function ( canvas ) {\r
-                       var self = this,\r
-                               gl;\r
-\r
-                       gl = getContext3D( canvas );\r
-                       if ( !gl ) {\r
-                               window.alert( "There's no WebGL context available!!!" );\r
-                               return null;\r
-                       }\r
-\r
-                       gl.enable( gl.BLEND );\r
-                       gl.blendFunc( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA );\r
-\r
-                       gl.enable( gl.DEPTH_TEST );\r
-                       gl.depthFunc( gl.LEQUAL );\r
-\r
-                       canvas.width = self._VIEWPORT_WIDTH;\r
-                       canvas.height = self._VIEWPORT_HEIGHT;\r
-                       gl.viewportWidth = canvas.width;\r
-                       gl.viewportHeight = canvas.height;\r
-                       gl.viewport( 0, 0, gl.viewportWidth, gl.viewportHeight );\r
-                       self._pMatrix = mat4.create();\r
-                       mat4.perspective( 40, gl.viewportWidth / gl.viewportHeight, 0.1, 10000.0, self._pMatrix );\r
-\r
-                       gl.clearColor( 0.0, 0.0, 0.0, 1.0 );\r
-                       gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT );\r
-\r
-                       return gl;\r
-               },\r
-\r
-               _initShader : function ( gl ) {\r
-                       var self = this,\r
-                               shaderProgram;\r
-\r
-                       shaderProgram = $.webgl.shader.addShaderProgram( self._gl, VERTEX_SHADER, FRAGMENT_SHADER );\r
-                       gl.useProgram( shaderProgram );\r
-\r
-                       shaderProgram.vertexPositionAttr = gl.getAttribLocation( shaderProgram, "aVertexPosition" );\r
-                       gl.enableVertexAttribArray( shaderProgram.vertexPositionAttr );\r
-\r
-                       shaderProgram.textureCoordAttr = gl.getAttribLocation( shaderProgram, "aTextureCoord" );\r
-                       gl.enableVertexAttribArray( shaderProgram.textureCoordAttr );\r
-\r
-                       // Set light normal vectors for lighting~\r
-                       shaderProgram.vertexNormalAttr = gl.getAttribLocation( shaderProgram, "aVertexNormal" );\r
-                       gl.enableVertexAttribArray( shaderProgram.vertexNormalAttr );\r
-\r
-                       shaderProgram.perspectiveMU = gl.getUniformLocation( shaderProgram, "uPerspectiveMatrix");\r
-                       shaderProgram.transformMU = gl.getUniformLocation( shaderProgram, "uMoveMatrix");\r
-                       shaderProgram.sampleUniform = gl.getUniformLocation( shaderProgram, "uSampler");\r
-\r
-                       // Set light variables~\r
-                       shaderProgram.normalMU = gl.getUniformLocation( shaderProgram, "nNormalMatrix");\r
-                       shaderProgram.ambientColorU = gl.getUniformLocation( shaderProgram, "uAmbientColor");\r
-                       shaderProgram.lightDirU_first = gl.getUniformLocation( shaderProgram, "uLightDirection_first");\r
-                       shaderProgram.lightDirU_second = gl.getUniformLocation( shaderProgram, "uLightDirection_second");\r
-                       shaderProgram.directionColorU = gl.getUniformLocation( shaderProgram, "uDirectionColor");\r
-\r
-                       return shaderProgram;\r
-               },\r
-\r
-               _initBuffers: function ( gl, shaderProgram ) {\r
-                       var self = this,\r
-                               i = 0,\r
-                               mashBase = 0,\r
-                               vertices = [],\r
-                               textureCoords = [],\r
-                               normalVectors = [],\r
-                               nodes = [],\r
-                               maxDrawLength = self._MAX_ITEM_COUNT;\r
-\r
-                       for ( i = 0; i < self._imageList.length + 1; i += 1 ) {\r
-                               nodes[i] = new Node();\r
-                               $.merge( vertices, nodes[i].vertices );\r
-                               $.merge( textureCoords, nodes[i].textureCoords );\r
-                               $.merge( normalVectors, nodes[i].normalVectors );\r
-\r
-                               nodes[i].textureBuffer = gl.createBuffer();\r
-                               gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, nodes[i].textureBuffer );\r
-                               mashBase = i * 4;\r
-                               nodes[i].meshOrder = [\r
-                                       mashBase, mashBase + 1, mashBase + 2,\r
-                                       mashBase + 2, mashBase + 3, mashBase\r
-                               ];\r
-                               gl.bufferData( gl.ELEMENT_ARRAY_BUFFER, new GlArray16( nodes[i].meshOrder ), gl.STATIC_DRAW );\r
-                               gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, null ); // release buffer memory\r
-                               nodes[i].textureBufferItemSize = 6;\r
-                       }\r
-\r
-                       self._positionBuffer = $.webgl.buffer.attribBufferData( gl, new GlArray32( vertices ) );\r
-                       self._positionBuffer.itemSize = 3;\r
-\r
-                       self._textureCoordBuffer = $.webgl.buffer.attribBufferData( gl, new GlArray32( textureCoords ) );\r
-                       self._textureCoordBuffer.itemSize = 2;\r
-\r
-                       self._normalVectorBuffer = $.webgl.buffer.attribBufferData( gl, new GlArray32( normalVectors ) ); // Vertex's normal vector for Direction light\r
-                       self._normalVectorBuffer.itemSize = 3;\r
-\r
-                       // Ambient light\r
-                       gl.uniform3f( shaderProgram.ambientColorU, 0.1, 0.1, 0.1 );\r
-                       // Direcntion light\r
-                       gl.uniform3f( shaderProgram.directionColorU, 1.0, 1.0, 1.0 );\r
-\r
-                       return nodes;\r
-               },\r
-\r
-               // ----------------------------------------------------------\r
-               // Texture\r
-               // ----------------------------------------------------------\r
-               _initTextures: function ( gl, nodes ) {\r
-                       var self = this;\r
-\r
-                       $( nodes ).each( function ( i ) {\r
-                               var node = nodes[i],\r
-                                       url;\r
-\r
-                               if ( !self._imageList[i] ) {\r
-                                       return false;\r
-                               }\r
-\r
-                               url = self._imageList[i].src;\r
-                               node.texture = gl.createTexture();\r
-                               self._loadImage( url, i, i, gl, nodes );\r
-                       });\r
-               },\r
-\r
-               _loadImage: function ( url, i, imageID, gl, nodes ) {\r
-                       var self = this,\r
-                               isMipmap = false,\r
-                               image,\r
-                               node;\r
-\r
-                       gl = gl || self._gl;\r
-                       nodes = nodes || self._nodes;\r
-                       isMipmap = isMipmap || false;\r
-                       node = nodes[i];\r
-                       node.image = node.image || new Image();\r
-\r
-                       $( node.image ).one( "load", function ( e ) {\r
-                               self._bindTexture( gl, node, this, isMipmap );\r
-                               node.imageID = imageID;\r
-\r
-                               if ( !self._animationID ) {\r
-                                       self._setPosition( 0, 0 );\r
-                               }\r
-                       });\r
-\r
-                       if ( self.options.thumbnailCache ) {\r
-                               $.imageloader.getThumbnail( url, function ( result ) {\r
-                                       if ( result === "NOT_FOUND_ERR" ) {\r
-                                               $.imageloader.setThumbnail( url, function ( result ) {\r
-                                                       if ( result && result.length > 30 ) {\r
-                                                               node.image.src = result;\r
-                                                               isMipmap = true;\r
-                                                       } else {\r
-                                                               node.image.src = url;\r
-                                                       }\r
-                                               });\r
-                                       } else if ( result && result.length > 30 ) {\r
-                                               node.image.src = result;\r
-                                               isMipmap = true;\r
-                                       } else {\r
-                                               node.image.src = url;\r
-                                       }\r
-                               });\r
-                       } else {\r
-                               node.image.src = url;\r
-                       }\r
-               },\r
-\r
-               _bindTexture: function ( gl, node, image, isMipmap ) {\r
-                       if ( !node || !node.texture ) {\r
-                               return;\r
-                       }\r
-\r
-                       gl.pixelStorei( gl.UNPACK_FLIP_Y_WEBGL, true );\r
-\r
-                       gl.bindTexture( gl.TEXTURE_2D, node.texture );\r
-                       gl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image );\r
-\r
-                       if ( isMipmap ) {\r
-                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR );\r
-                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST );\r
-                               gl.generateMipmap( gl.TEXTURE_2D );\r
-                       } else {\r
-                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR );\r
-                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR );\r
-                       }\r
-\r
-                       gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\r
-                       gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\r
-\r
-                       node.texture.loaded = true;\r
-\r
-                       // release texture memory\r
-                       gl.bindTexture( gl.TEXTURE_2D, null );\r
-               },\r
-\r
-               // ----------------------------------------------------------\r
-               // rendering\r
-               // ----------------------------------------------------------\r
-               _setPosition: function ( progress, direction ) {\r
-                       var self = this,\r
-                               nodes = self._nodes,\r
-                               imageList = self._imageList,\r
-                               imageListLength = imageList.length,\r
-                               itemCount = self._MAX_ITEM_COUNT,\r
-                               displayLength = ( imageListLength > itemCount ) ? itemCount : imageListLength,\r
-                               nextLevelLenth = 0,\r
-                               i = 0,\r
-                               t = 0,\r
-                               position = 0,\r
-                               angle = 0,\r
-                               current = 0,\r
-                               next = 0,\r
-                               nextLevel = 0,\r
-                               path = self._path,\r
-                               nextImageID = 0;\r
-\r
-                       nextLevelLenth = ( direction >= 0 ) ? displayLength + 1 : displayLength;\r
-\r
-                       if ( !nodes[i].level ) {\r
-                               nodes[i].level = displayLength;\r
-                       }\r
-\r
-                       for ( i = 0; i < displayLength; i += 1 ) {\r
-                               if ( !nodes[i].mvMatrix ) {\r
-                                       nodes[i].mvMatrix = mat4.create();\r
-                               }\r
-\r
-                               if ( direction > 0 && nodes[i].level >= displayLength ) {\r
-                                       nodes[i].level = 0;\r
-                               }\r
-\r
-                               current = path.levels[nodes[i].level];\r
-                               nextLevel = ( nodes[i].level + nextLevelLenth + direction ) % nextLevelLenth;\r
-                               next = path.levels[nextLevel];\r
-\r
-                               if ( imageListLength > itemCount ) {\r
-                                       if ( direction > 0 && nextLevel === 1\r
-                                                       && self._firstImageNumber !== nodes[i].imageID ) {\r
-                                               self._loadImage( imageList[self._firstImageNumber].src, i, self._firstImageNumber );\r
-                                       } else if ( direction < 0 && nextLevel === nextLevelLenth - 1\r
-                                                       && self._lastImageNumber !== nodes[i].imageID ) {\r
-                                               self._loadImage( imageList[self._lastImageNumber].src, i, self._lastImageNumber );\r
-                                       }\r
-                               }\r
-\r
-                               mat4.identity( nodes[i].mvMatrix );\r
-                               mat4.translate( nodes[i].mvMatrix, [-2.0, -2.0, 1.0] );\r
-                               mat4.rotate( nodes[i].mvMatrix, self._degreeToRadian( 19 ), [1, 0, 0] );\r
-\r
-                               t = ( current + ( next - current ) * ( ( progress > 1 ) ? 1 : progress ) );\r
-\r
-                               if ( progress >= self._ANIMATION_END ) {\r
-                                       nodes[i].level = nextLevel || displayLength;\r
-                                       t = path.levels[nodes[i].level];\r
-                               }\r
-\r
-                               if ( ( progress < self._ANIMATION_END )\r
-                                               && ( direction <= 0 && nodes[i].level < 1 ) ) {\r
-                                       nodes[i].drawable = false;\r
-                               } else {\r
-                                       nodes[i].drawable = true;\r
-                               }\r
-\r
-                               if ( progress === self._ANIMATION_END && nodes[i].level === 1 ) {\r
-                                       self.element.trigger( "select", imageList[ nodes[i].imageID ], nodes[i].imageID );\r
-                               }\r
-\r
-                               position = path.getPosition( t );\r
-                               angle = path.getAngle( t );\r
-\r
-                               mat4.translate( nodes[i].mvMatrix, position );\r
-                               mat4.rotate( nodes[i].mvMatrix, angle, [0, 1, 0] );\r
-                       }\r
-\r
-                       if ( imageListLength > itemCount && progress >= self._ANIMATION_END ) {\r
-                               self._firstImageNumber = ( self._firstImageNumber - direction ) % imageListLength;\r
-                               if ( self._firstImageNumber < 0 ) {\r
-                                       self._firstImageNumber = imageListLength - 1;\r
-                               }\r
-\r
-                               self._lastImageNumber = ( self._lastImageNumber - direction ) % imageListLength;\r
-                               if ( self._lastImageNumber < 0 ) {\r
-                                       self._lastImageNumber = imageListLength - 1;\r
-                               }\r
-                       }\r
-                       self._drawScene();\r
-               },\r
-\r
-               _drawScene: function () {\r
-                       if ( !this._gl || !this._shaderProgram ) {\r
-                               return;\r
-                       }\r
-\r
-                       var self = this,\r
-                               gl = self._gl,\r
-                               shaderProgram = self._shaderProgram,\r
-                               nodes = self._nodes,\r
-                               nodesLength = nodes.length,\r
-                               i;\r
-\r
-                       gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT );\r
-\r
-                       gl.bindBuffer( gl.ARRAY_BUFFER, self._positionBuffer );\r
-                       gl.vertexAttribPointer( shaderProgram.vertexPositionAttr, self._positionBuffer.itemSize, gl.FLOAT, false, 0, 0 );\r
-\r
-                       gl.bindBuffer( gl.ARRAY_BUFFER, self._textureCoordBuffer );\r
-                       gl.vertexAttribPointer( shaderProgram.textureCoordAttr, self._textureCoordBuffer.itemSize, gl.FLOAT, false, 0, 0 );\r
-\r
-                       gl.bindBuffer( gl.ARRAY_BUFFER, self._normalVectorBuffer );\r
-                       gl.vertexAttribPointer( shaderProgram.vertexNormalAttr, self._normalVectorBuffer.itemSize, gl.FLOAT, false, 0, 0 );\r
-\r
-                       for ( i = 0; i < nodesLength; i += 1 ) {\r
-                               if ( nodes[i].drawable ) {\r
-                                       self._drawElement( self._pMatrix, nodes[i] );\r
-                               }\r
-                       }\r
-               },\r
-\r
-               _drawElement: function ( perspectiveMatrix, targetNode ) {\r
-                       var self = this,\r
-                               gl = self._gl,\r
-                               shaderProgram = self._shaderProgram,\r
-                               moveMatrix = targetNode.mvMatrix,\r
-                               texture = targetNode.texture,\r
-                               meshIndexBuffer = targetNode.textureBuffer,\r
-                               meshIndexBufferItemSize = targetNode.textureBufferItemSize,\r
-                               lightPositions = self._lightsPositionStack,\r
-                               LightDir,\r
-                               normalMatrix;\r
-\r
-                       if ( !moveMatrix ) {\r
-                               return;\r
-                       }\r
-\r
-                       gl.activeTexture( gl.TEXTURE0 );\r
-                       if ( texture && texture.loaded ) {\r
-                               gl.bindTexture( gl.TEXTURE_2D, texture );\r
-                       }\r
-                       gl.uniform1i( shaderProgram.sampleUniform, 0 );\r
-\r
-                       LightDir = vec3.create();\r
-                       vec3.normalize( lightPositions[0], LightDir );\r
-                       vec3.scale( LightDir, -8 );\r
-                       gl.uniform3fv( shaderProgram.lightDirU_first, LightDir );\r
-\r
-                       vec3.normalize( lightPositions[1], LightDir );\r
-                       vec3.scale( LightDir, -1 );\r
-                       gl.uniform3fv( shaderProgram.lightDirU_second, LightDir );\r
-                       gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, meshIndexBuffer );\r
-\r
-                       gl.uniformMatrix4fv( shaderProgram.perspectiveMU, false, perspectiveMatrix );\r
-                       gl.uniformMatrix4fv( shaderProgram.transformMU, false, moveMatrix );\r
-\r
-                       normalMatrix = mat3.create();\r
-                       mat4.toInverseMat3( moveMatrix, normalMatrix );\r
-                       mat3.transpose( normalMatrix );\r
-                       gl.uniformMatrix3fv( shaderProgram.normalMU, false, normalMatrix );\r
-\r
-                       gl.drawElements( gl.TRIANGLES, meshIndexBufferItemSize, gl.UNSIGNED_SHORT, 0 );\r
-\r
-                       // release buffer memory\r
-                       gl.bindBuffer( gl.ARRAY_BUFFER, null );\r
-                       gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, null );\r
-\r
-                       // release texture memory\r
-                       gl.bindTexture( gl.TEXTURE_2D, null );\r
-               },\r
-\r
-               // ----------------------------------------------------------\r
-               // Animation\r
-               // ----------------------------------------------------------\r
-               _animate: function ( easingType, duration, direction, repeatCount, startValue, _removeCount ) {\r
-                       var self = this,\r
-                               timeNow = $.now(),\r
-                               progress,\r
-                               removeCount = 0;\r
-\r
-                       easingType = easingType || "linear";\r
-                       startValue = startValue || 0;\r
-                       _removeCount = _removeCount || 0;\r
-\r
-                       if ( self._sumTime >= duration ) {\r
-                               self._setPosition( self._ANIMATION_END, direction );\r
-                               self._stop();\r
-                               return;\r
-                       }\r
-\r
-                       if ( self._startTime === 0 ) {\r
-                               self._startTime = timeNow;\r
-                       } else {\r
-                               self._sumTime = timeNow - self._startTime;\r
-                               progress = $.easing[ easingType ]( self._sumTime / duration, self._sumTime, startValue, repeatCount + 1, duration );\r
-                               removeCount = parseInt( Math.abs( progress ), 10 );\r
-\r
-                               if ( _removeCount !== removeCount ) {\r
-                                       self._setPosition( self._ANIMATION_END, direction );\r
-                                       _removeCount = removeCount;\r
-\r
-                                       if ( ( repeatCount - _removeCount ) >= 0 ) {\r
-                                               self._animate( easingType, duration, direction, repeatCount, startValue, _removeCount );\r
-                                       } else {\r
-                                               self._stop();\r
-                                       }\r
-                                       return;\r
-                               }\r
-\r
-                               self._setPosition( progress - _removeCount, direction );\r
-                       }\r
-\r
-                       self._animationID = window.requestAnimationFrame( function () {\r
-                               self._animate( easingType, duration, direction, repeatCount, startValue, _removeCount );\r
-                       });\r
-               },\r
-\r
-               _run: function ( direction, repeatCount, startValue ) {\r
-                       var self = this,\r
-                               repeat = repeatCount || 0,\r
-                               duration = self._DURATION_DEFAULT * ( repeat + 1 );\r
-\r
-                       if ( self._imageList.length <= 1 ) {\r
-                               return;\r
-                       }\r
-\r
-                       startValue = startValue || 0;\r
-                       duration = ( duration >= 0 ) ? duration : 0;\r
-\r
-                       if ( self._animationID ) {\r
-                               self._setPosition( self._ANIMATION_END, direction );\r
-                               self._stop();\r
-                       }\r
-\r
-                       self._animate( "easeOutExpo", duration, direction, repeat, startValue );\r
-               },\r
-\r
-               _reset: function () {\r
-                       if ( !this._canvas || !this._gl ) {\r
-                               return;\r
-                       }\r
-\r
-                       this._final();\r
-                       this._init();\r
-                       this.refresh();\r
-               },\r
-\r
-               _stop: function () {\r
-                       if ( this._animationID ) {\r
-                               window.cancelAnimationFrame( this._animationID );\r
-                       }\r
-                       this._animationID = 0;\r
-\r
-                       this._startTime = 0;\r
-                       this._sumTime = 0;\r
-               },\r
-\r
-               _degreeToRadian: function ( degree ) {\r
-                       return degree * Math.PI / 180;\r
-               },\r
-\r
-               next: function () {\r
-                       this._run( this._DIRECTION_LEFT , 0 );\r
-               },\r
-\r
-               prev: function () {\r
-                       this._run( this._DIRECTION_RIGHT, 0 );\r
-               },\r
-\r
-               refresh: function () {\r
-                       var view = this.element,\r
-                               canvas = view.find( "canvas.ui-gallery3d-canvas" );\r
-\r
-                       if ( canvas.width() !== view.width() ) {\r
-                               canvas.width( view.width() );\r
-                       }\r
-\r
-                       if ( !this._animationID ) {\r
-                               this._setPosition( 0, 0 );\r
-                       }\r
-               },\r
-\r
-               select: function ( index ) {\r
-                       var nodes = this._nodes,\r
-                               repeat,\r
-                               i,\r
-                               imageID,\r
-                               object = null,\r
-                               target = 0,\r
-                               direction = 0;\r
-\r
-                       if ( index && this._animationID ) {\r
-                               this._stop();\r
-                       }\r
-\r
-                       for ( i in nodes ) {\r
-                               if ( nodes[i].level === 1 ) {\r
-                                       object = this._imageList[ nodes[i].imageID ];\r
-                                       imageID = nodes[i].imageID;\r
-                                       break;\r
-                               }\r
-                       }\r
-\r
-                       if ( !index ) {\r
-                               return object;\r
-                       }\r
-\r
-                       if ( index < 0 && index >= this._imageList.length ) {\r
-                               return;\r
-                       }\r
-\r
-                       target = index - imageID;\r
-                       direction = ( target > 0 ) ? this._DIRECTION_LEFT\r
-                               : ( ( target < 0 ) ? this._DIRECTION_RIGHT : 0 );\r
-                       if ( direction ) {\r
-                               this._run( direction, Math.abs( target ) - 1  );\r
-                       }\r
-               },\r
-\r
-               add: function ( item, index ) {\r
-                       if ( !item ) {\r
-                               return;\r
-                       }\r
-\r
-                       if ( typeof item === "string" ) {\r
-                               item = { "src" : item };\r
-                       }\r
-\r
-                       index = index || 0;\r
-                       if ( typeof index !== "number" && index < 0\r
-                                       && index >= this._imageList.length ) {\r
-                               return;\r
-                       }\r
-\r
-                       this._imageList.splice( index, 0, item );\r
-                       if ( this._gl ) {\r
-                               this._reset();\r
-                       }\r
-               },\r
-\r
-               remove: function ( index ) {\r
-                       index = index || 0;\r
-                       if ( typeof index !== "number" && index < 0\r
-                                       && index >= this._imageList.length ) {\r
-                               return;\r
-                       }\r
-\r
-                       this._imageList.splice( index, 1 );\r
-                       if ( this._gl ) {\r
-                               this._reset();\r
-                       }\r
-               },\r
-\r
-               clearThumbnailCache: function () {\r
-                       if ( !this._nodes || ( this._nodes.length <= 0 ) ) {\r
-                               return;\r
-                       }\r
-\r
-                       var i, url;\r
-                       for ( i = 0; i < this._imageList.length; i += 1 ) {\r
-                               url = this._imageList[i].src;\r
-                               $.imageloader.removeThumbnail( url );\r
-                       }\r
-               },\r
-\r
-               empty: function () {\r
-                       this._imageList = [];\r
-                       this._reset();\r
-               },\r
-\r
-               length: function () {\r
-                       return this._imageList.length;\r
-               }\r
-       });\r
-\r
-       $( document ).bind( "pagecreate create", function ( e ) {\r
-               $( ":jqmData(role='gallery3d')" ).gallery3d();\r
-       });\r
-\r
-} ( jQuery, document, window ) );\r
-\r
 
 
 /* ***************************************************************************
@@ -14052,372 +12349,2406 @@ If developers do not give a viewport meta tag, Tizen Web UI Framework automatica
  * DEALINGS IN THE SOFTWARE.
  * ***************************************************************************
  *
- *     Author: Minkyu Kang <mk7.kang@samsung.com>
+ * Authors: Hyunsook Park <hyunsook.park@samsung.com>
+ *                     Wonseop Kim <wonseop.kim@samsung.com>
  */
 
-/*
- * Notification widget
- *
- * HTML Attributes
- *
- *  data-role: set to 'notification'.
- *  data-type: 'ticker' or 'popup'.
- *  data-interval: time to showing. If don't set, will show infinitely.
+/**
+ *     The gallery3d widget displays images along a curved path on a 3-dimensional coordinate system.
+ *     To improve performance, the size of image(s) displayed on the screen should be a square(under
+ *     128X128 pixel) as possible. But if a user can't resize the images, this widget supports an image
+ *     resizing feature and he/she can use it with "data-thumbnail-cache" option. ("data-thumbnail-cache"
+ *     option resizes the gallery images under 128x128 pixels and stores the images on a local storage.
+ *     So when a gallery3D widget is re-launched, the widget reuse the storage and a user can improve
+ *     launching time. A browser or web runtime engine should support "Web Storage" feature to use that
+ *     option.)
  *
- * APIs
+ *     HTML Attributes:
  *
- *  open(): open the notification.
- *  close(): close the notification.
- *  text(text0, text1): set texts or get texts
- *  icon(src): set the icon (tickernoti only)
+ *             data-thumbnail-cache : Determines whether to cache and resize images.
  *
- * Events
+ *     APIs:
  *
- *  N/A
+ *             next ( void )
+ *                     : This method moves each image forward one by one.
+ *             prev ( void )
+ *                     : This method moves each image backward one by one.
+ *             select ( [number] )
+ *                     : When the "select" method is called with an argument, the method selects the image of given index.
+ *                     If the method is called with no argument, it will return the Javascript object having "src"
+ *                     attribute having the selected image’s URL.
+ *             add ( object or string [, number] )
+ *                     This method adds an image to Gallery3D widget.
+ *                     If the second argument isn't inputted, the image is added at the 0th position.
+ *             remove ( [number] )
+ *                     : This method deletes an image from Gallery3d widget.
+ *                     The argument defines the index of the image to be deleted.
+ *                     If an argument isn't inputted, it removes current image.
+ *             clearThumbnailCache ( void )
+ *                     : This method clears the cache data of all images when thumbnailCache option is set as 'true'.
+ *             refresh ( void )
+ *                     : This method updates and redraws current widget.
+ *             empty ( void )
+ *                     : This method removes all of images from Gallery3D widget.
+ *             length ( void )
+ *                     : This method gets the number of images.
  *
- * Examples
+ *     Events:
  *
- * // tickernoti
- * <div data-role="notification" id="notification" data-type="ticker" data-interval="3000">
- *     <img src="icon01.png">
- *     <p>Hello World</p>
- *     <p>Denis</p>
- * </div>
+ *             select : Triggered when an image is selected.
  *
- * // smallpopup
- * <div data-role="notification" id="notification" data-type="popup" data-interval="3000">
- *     <p>Hello World</p>
- * </div>
+ *     Examples:
  *
+ *             <script>
+ *                     $( "#gallery3d" ).on( "gallery3dcreate", function () {
+ *                             $( "#gallery3d" ).gallery3d( "add", "01.jpg" );
+ *                     });
+ *             </script>
+ *             <div id="gallery3d" data-role="gallery3d"></div>
  */
 
-/**
-       @class Notification
-       The notification widget shows a pop-up window on the screen to provide notifications.
-       To add a notification widget to the application, use the following code:
+/**
+       @class Gallery3D
+       The gallery3d widget displays images along a curved path on a 3-dimensional coordinate system.
+       <br/><br/>To add an gallery3d widget to the application, use the following code:
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", "01.jpg" );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @property {Boolean} data-thumbnail-cache
+       Determines whether to cache and resize images.
+       To improve performance, the size of image(s) displayed on the screen should be a square (under 128X128 pixels).
+       "data-thumbnail-cache" option resizes the gallery images under 128x128 pixels and stores the images on a local storage.
+       So when a gallery3D widget is re-launched, the widget reuses the storage and the launching time can be improved.
+       A browser or web runtime engine must support "Web Storage" feature to use this option.
+*/
+/**
+       @event select
+       Triggered when an image is selected.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+                       }).on( "select", function ( event, data, index ) {
+                               // Handle the select event
+                               var urlOfImage = data.src, indexOfImage = index;
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method next
+       This method moves each image forward one by one.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } )
+                                       .gallery3d( "next" );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method prev
+       This method moves each image backward one by one.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } )
+                                       .gallery3d( "prev" );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method select
+       When the "select" method is called with an argument, the method selects the image of given index.
+       If the method is called with no argument, it will return the Javascript object having "src" attribute having the selected image’s URL.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+                               var selectedImage = $("#gallery3d"). gallery3d( "select" );
+                               // selectedImage = { src: "3.jpg" };
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method add
+       This method adds an image to Gallery3D widget.
+       The first argument is a Javascript object having a "src" attribute or a string of image's path.
+       The second argument is an index of images.
+       If second argument isn't inputted, the image is added at the 0th position.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", "2.jpg", 1 );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method remove
+       This method deletes an image from Gallery3d widget.
+       The argument defines the index of the image to be deleted.
+       If an argument isn't inputted, it removes current image.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+
+                               $( "#gallery3d" ).gallery3d( "remove" );
+                               $( "#gallery3d" ).gallery3d( "remove", 1 );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method clearThumbnailCache
+       This method clears the cache data of all images when thumbnailCache option is set as 'true'
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+
+                               $( "#gallery3d" ).gallery3d( "clearThumbnailCache" );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d" data-thumbnail-cache="true"></div>
+*/
+/**
+       @method refresh
+       This method updates and redraws current widget.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+
+                               $( "#gallery3d" ).gallery3d( "refresh" );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method empty
+       This method removes all of images from Gallery3D widget.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+
+                               $( "#gallery3d" ).gallery3d( "empty" );
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+/**
+       @method length
+       This method gets the number of images.
+
+               <script>
+                       $( "#gallery3d" ).on( "gallery3dcreate", function () {
+                               $( "#gallery3d" ).gallery3d( "add", { src: "1.jpg" } )
+                                       .gallery3d( "add", { src: "2.jpg" } )
+                                       .gallery3d( "add", { src: "3.jpg" } );
+
+                               var imagesLength = $( "#gallery3d" ).gallery3d( "length" );
+                               // imagesLength = 3;
+                       });
+               </script>
+               <div id="gallery3d" data-role="gallery3d"></div>
+*/
+
+( function ( $, document, window, undefined ) {
+       window.requestAnimationFrame = ( function () {
+               return function ( callback ) {
+                       var id = window.setTimeout( callback, 1000 / 60 );
+                       return id;
+               };
+       } () );
+
+       window.cancelAnimationFrame = ( function () {
+               return function ( id ) {
+                       window.clearTimeout( id );
+               };
+       } () );
+
+       var vec3 = window.vec3,
+               mat3 = window.mat3,
+               mat4 = window.mat4,
+               GlArray32 = ( typeof window.Float32Array !== "undefined" ? window.Float32Array : ( typeof window.WebGLFloatArray !== "undefined" ? window.WebGLFloatArray : Array ) ),
+               GlArray16 = ( typeof window.Uint16Array !== "undefined" ? window.Uint16Array : Array ),
+               getContext3D = function ( canvas ) {
+                       var gl, i,
+                               contextNames = [ "experimental-webgl", "webkit-3d", "webgl", "moz-webgl" ];
+
+                       for ( i = 0; i < contextNames.length; i += 1 ) {
+                               try {
+                                       gl = canvas.getContext( contextNames[i] );
+                                       if ( gl ) {
+                                               break;
+                                       }
+                               } catch ( e ) {
+                                       window.alert( "Unfortunately, there's a WebGL compatibility problem. </br> You may want to check your system settings." );
+                                       return;
+                               }
+                       }
+                       return gl;
+               },
+               VERTEX_SHADER = [
+                       "attribute vec3 aVertexPosition;",
+                       "attribute vec2 aTextureCoord;",
+                       "attribute vec3 aVertexNormal;",
+                       "uniform mat4 uMoveMatrix;",
+                       "uniform mat4 uPerspectiveMatrix;",
+                       "uniform mat3 nNormalMatrix;",
+                       "uniform vec3 uAmbientColor;",
+                       "uniform vec3 uLightDirection;",
+                       "uniform vec3 uDirectionColor;",
+                       "uniform vec3 uLightDirection_first;",
+                       "uniform vec3 uLightDirection_second;",
+                       "varying vec2 vTextureCoord;",
+                       "varying vec3 vLightWeight;",
+                       "varying vec4 vFogWeight;",
+
+                       "void main(void) {",
+                       "       vec4 v_Position = uMoveMatrix * vec4(aVertexPosition, 1.0);",
+                       "       gl_Position = uPerspectiveMatrix * v_Position;",
+                       "       vTextureCoord = aTextureCoord;",
+                       "       float fog = 1.0 - ((gl_Position.z + 1.5) / 60.0);",
+                       "       vFogWeight = clamp( vec4( fog, fog, fog, 1.0), 0.6, 1.0);",
+                       "       vec3 transNormalVector = nNormalMatrix * aVertexNormal;",
+
+                       "       float vLightWeightFirst = 0.0;",
+                       "       float vLightWeightSecond = max( dot(transNormalVector, uLightDirection_second), 0.0 );",
+
+                       "       vLightWeight = uAmbientColor + uDirectionColor * vLightWeightSecond;",
+                       "}"
+               ].join( "\n" ),
+               FRAGMENT_SHADER = [
+                       "precision mediump float;",
+                       "varying vec2 vTextureCoord;",
+                       "varying vec3 vLightWeight;",
+                       "uniform sampler2D uSampler;",
+                       "varying vec4 vFogWeight;",
+
+                       "void main(void) {",
+                       "       vec4 TextureColor;",
+                       "       if ( vTextureCoord.s <= 0.01 || vTextureCoord.s >= 0.99 || vTextureCoord.t <= 0.01 || vTextureCoord.t >= 0.99 ) {",
+                       "               TextureColor = vec4(1.0, 1.0, 1.0, 0.5);",
+                       "       } else {",
+                       "               TextureColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));",
+                       "       }",
+                       "       TextureColor *= vFogWeight;",
+                       "       gl_FragColor = vec4(TextureColor.rgb * vLightWeight, TextureColor.a);",
+                       "}"
+               ].join( "\n" );
+
+       function Node() {
+               this.vertices = [
+                       -1.0, -1.0, 0.0,
+                       1.0, -1.0, 0.0,
+                       1.0,  1.0, 0.0,
+                       -1.0,  1.0, 0.0
+               ];
+               this.textureCoords = [
+                       1.0, 0.0,
+                       0.0, 0.0,
+                       0.0, 1.0,
+                       1.0, 1.0
+               ];
+               this.normalVectors = [
+                       0.0, 0.0, 1.0,
+                       0.0, 0.0, 1.0,
+                       0.0, 0.0, 1.0,
+                       0.0, 0.0, 1.0
+               ];
+               this.texture = null;
+               this.textureBuffer = null;
+               this.textureBufferItemSize = 0;
+               this.mashOrder = [];
+               this.mvMatrix = null;
+               this.level = -1;
+               this.targetLevel = 0;
+               this.drawable = false;
+               this.image = null;
+               this.imageID = 0;
+       }
+
+       $.widget( "tizen.gallery3d", $.mobile.widget, {
+               options: {
+                       thumbnailCache: false
+               },
+
+               _MAX_ITEM_COUNT: 28,
+               _ANIMATION_END: 999,
+               _DURATION_DEFAULT: 300,
+               _DURATION_FIRST: 1600,
+               _VIEWPORT_WIDTH: 1024,
+               _VIEWPORT_HEIGHT: 456,
+               _DIRECTION_LEFT: -1,
+               _DIRECTION_RIGHT: +1,
+
+               _gl: null,
+               _shaderProgram : null,
+               _positionBuffer : null,
+               _textureCoordBuffer : null,
+               _normalVectorBuffer : null,
+               _nodes: null,
+               _pMatrix : null,
+               _animationID: 0,
+               _dragInterval : 0,
+               _startTime : 0,
+               _sumTime : 0,
+               _lightsPositionStack : [
+                       [0.0, 0.0, -1.0],       // back
+                       [-0.2, 0.0, 0.7]        // front
+               ],
+               _path: null,
+               _swipeThresholdOfBasetimeGap: ( $.support.touch ? 30 : 70 ),
+               _swipeThresholdOfSensitivity: ( $.support.touch ? 2.0 : 10.0 ),
+               _canvas: null,
+               _imageList: [],
+               _maxDrawLength: 0,
+               _firstImageNumber: 0,
+               _lastImageNumber: 0,
+
+               _create: function () {
+                       var self = this,
+                               view = self.element,
+                               option = self.options;
+
+                       self._canvas = $( "<canvas class='ui-gallery3d-canvas'></canvas>" );
+
+                       view.addClass( "ui-gallery3d" ).append( self._canvas );
+                       self._addBehavier();
+
+                       self._dragInterval = 1000 / 30; // 30fps
+
+                       $.each( self.options, function ( key, value ) {
+                               self.options[ key ] = undefined;
+                               self._setOption( key, value );
+                       });
+
+               },
+
+               _setOption: function ( key, value ) {
+                       switch ( key ) {
+                       case "thumbnailCache" :
+                               if ( typeof value === "string" ) {
+                                       value = ( value === "true" ) ? true : false;
+                               } else {
+                                       value = !!value;
+                               }
+                               this._reset();
+                               break;
+                       }
+
+                       $.mobile.widget.prototype._setOption.call( this, key, value );
+               },
+
+               _init: function ( canvas ) {
+                       var self = this,
+                               pathPoints = [
+                                       [40, 0, -48],
+                                       [-12, 0, -40],  // contorl Point of Point1
+                                       [24, 0, -9],            // contorl Point of Point2
+                                       [-5, 0, -5]
+                               ],
+                               i;
+
+                       canvas = canvas || self._canvas;
+
+                       if ( !canvas ) {
+                               return;
+                       }
+
+                       self._gl = self._gl || self._initGL( canvas[0] );
+                       if ( !self._gl ) {
+                               return;
+                       }
+
+                       if ( !self._imageList ) {
+                               return;
+                       }
+
+                       self._shaderProgram = self._shaderProgram || self._initShader( self._gl );
+                       if ( !self._shaderProgram ) {
+                               return;
+                       }
+
+                       if ( self._imageList.length > self._MAX_ITEM_COUNT ) {
+                               self._firstImageNumber = self._imageList.length - 1;
+                               self._lastImageNumber = self._MAX_ITEM_COUNT - 1;
+                       }
+
+                       self._nodes = self._initBuffers( self._gl, self._shaderProgram );
+
+                       self._initTextures( self._gl, self._nodes );
+
+                       self._path = $.motionpath( "bezier2d", {
+                               points: pathPoints,
+                               maxLevel: self._MAX_ITEM_COUNT
+                       } );
+                       for ( i = 0; i < self._nodes.length; i += 1 ) {
+                               self._path.levels[i] = self._path.levels[i + 1] || 0;
+                               self._nodes[i].level = i;
+                       }
+               },
+
+               _final: function ( canvas ) {
+                       var self = this,
+                               gl = self._gl;
+
+                       if ( !gl ) {
+                               return;
+                       }
+
+                       canvas = canvas || self._canvas;
+
+                       $( self._nodes ).each( function ( i ) {
+                               var node = self._nodes[i];
+                               gl.deleteTexture( node.texture );
+                               node.texture = null;
+                       });
+                       self._nodes = null;
+
+                       gl.deleteBuffer( self._positionBuffer );
+                       self._positionBuffer = null;
+                       gl.deleteBuffer( self._textureCoordBuffer );
+                       self._textureCoordBuffer = null;
+                       gl.deleteBuffer( self._normalVectorBuffer );
+                       self._normalVectorBuffer = null;
+
+                       $.webgl.shader.deleteShaders( gl );
+                       gl.deleteProgram( self._shaderProgram );
+                       self._shaderProgram = null;
+
+                       self._gl = gl = null;
+               },
+
+               _addBehavier : function () {
+                       var self = this,
+                               view = self.element,
+                               canvas = self._canvas,
+                               touchStartEvt = ( $.support.touch ? "touchstart" : "mousedown" ),
+                               touchMoveEvt = ( $.support.touch ? "touchmove" : "mousemove" ) + ".gallery3d",
+                               touchEndEvt = ( $.support.touch ? "touchend" : "mouseup" ) + ".gallery3d",
+                               touchLeaveEvt = ( $.support.touch ? "touchleave" : "mouseout" ) + ".gallery3d";
+
+                       $( document ).unbind( ".gallery3d" ).bind( "pagechange.gallery3d", function ( e ) {
+                               $( e.target ).find( ".ui-gallery3d" ).gallery3d( "refresh" );
+                       }).bind( "pageremove.gallery3d", function ( e ) {
+                               $( e.target ).find( ".ui-gallery3d" ).trigger( "_destory" );
+                       });
+
+                       $( window ).unbind( ".gallery3d" ).bind( "resize.gallery3d orientationchange.gallery3d", function ( e ) {
+                               $( ".ui-page-active" ).find( ".ui-gallery3d" ).gallery3d( "refresh" );
+                       }).bind( "unload.gallery3d", function ( e ) {
+                               $( e.target ).find( ".ui-gallery3d" ).trigger( "_destory" );
+                       });
+
+                       view.bind( "_destory", function ( e ) {
+                               self._final();
+                       });
+
+                       canvas.bind( "webglcontextlost", function ( e ) {
+                               e.preventDefault();
+                       }).bind( "webglcontextrestored", function ( e ) {
+                               self._init();
+                       }).bind( touchStartEvt, function ( e ) {
+                               var i = 0,
+                                       startX = 0,
+                                       deltaMaxSteps = 20,
+                                       deltas = [ deltaMaxSteps ],
+                                       deltaTimes = [ deltaMaxSteps ],
+                                       deltaIndex = 0,
+                                       dragValue = 0,
+                                       dragDirection = false,
+                                       prevTime = 0;
+
+                               e.preventDefault();
+                               e.stopPropagation();
+
+                               if ( self._imageList.length <= 1 ) {
+                                       return;
+                               }
+
+                               self._stop();
+
+                               startX =  $.support.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;
+                               prevTime = $.now();
+
+                               for ( i = 0; i < deltaMaxSteps; i += 1 ) {
+                                       deltas[i] = startX;
+                                       deltaTimes[i] = $.now();
+                               }
+
+                               deltaIndex += 1;
+
+                               view.bind( touchMoveEvt, function ( e ) {
+                                       var x, dx, interval;
+
+                                       e.preventDefault();
+                                       e.stopPropagation();
+
+                                       x =  $.support.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;
+                                       dx = startX - x;
+
+                                       deltas[deltaIndex] = x;
+                                       deltaTimes[deltaIndex] = $.now();
+                                       interval = deltaTimes[deltaIndex] - prevTime;
+
+                                       deltaIndex = ( deltaIndex + 1 ) % deltaMaxSteps;
+
+                                       // Validation of drag
+                                       if ( Math.abs( dx ) >= 10 && interval >= self._dragInterval ) {
+                                               if ( dragDirection !== ( ( dx < 0 ) ? self._DIRECTION_RIGHT : self._DIRECTION_LEFT ) ) {
+                                                       dragValue = 0;
+                                                       dragDirection = ( dx < 0 ) ? self._DIRECTION_RIGHT : self._DIRECTION_LEFT;
+                                               }
+
+                                               dragValue += Math.abs( dx ) / 100;
+                                               if ( dragValue >= 1 ) {
+                                                       self._setPosition( self._ANIMATION_END, dragDirection );
+                                                       dragValue = 0;
+                                               } else {
+                                                       self._setPosition( dragValue, dragDirection );
+                                               }
+                                               self._drawScene();
+                                               startX = x;
+                                               prevTime = $.now();
+                                       }
+                               }).bind( touchEndEvt, function ( e ) {
+                                       var baseTime = 0,
+                                               recent = -1,
+                                               index = 0,
+                                               previous = 0,
+                                               baseTimeRatio = 0,
+                                               fx = 0,
+                                               lastX = 0,
+                                               velocityX = 0,
+                                               dx = 0,
+                                               isSwipe = true,
+                                               direction;
+
+                                       e.preventDefault();
+                                       e.stopPropagation();
+
+                                       // Validation of swipe
+                                       baseTime = $.now() - self._swipeThresholdOfBasetimeGap;
+                                       lastX = $.support.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;
+                                       dx = startX - lastX;
+                                       startX = 0;
+                                       for ( i = 0; i < deltaMaxSteps; i += 1 ) {
+                                               index = ( deltaIndex + i ) % deltaMaxSteps;
+                                               if ( deltaTimes[index] > baseTime ) {
+                                                       recent = index;
+                                                       break;
+                                               }
+                                       }
+                                       if ( recent < 0 ) {
+                                               isSwipe = false;
+                                       }
+
+                                       if ( isSwipe ) {
+                                               previous = recent;
+                                               for ( i = 0; i < deltaMaxSteps; i += 1 ) {
+                                                       previous = ( previous - 1 + deltaMaxSteps ) % deltaMaxSteps;
+                                                       if ( deltaTimes[previous] < deltaTimes[recent] ) {
+                                                               break;
+                                                       }
+                                               }
+                                               // too slow or too fast
+                                               if ( i === deltaMaxSteps || baseTime < deltaTimes[previous] ) {
+                                                       isSwipe = false;
+                                               }
+                                       }
+
+                                       if ( isSwipe ) {
+                                               baseTimeRatio = ( baseTime - deltaTimes[previous] ) / ( deltaTimes[recent] - deltaTimes[previous] );
+                                               fx = ( 1.0 - baseTimeRatio ) * deltas[previous] + baseTimeRatio * deltas[recent];
+                                               if ( Math.abs( fx - lastX ) < self._swipeThresholdOfSensitivity ) {
+                                                       fx = lastX;
+                                               }
+                                               velocityX = parseInt( ( lastX - fx ) / ( $.now() - baseTime ), 10 );
+                                       }
+
+                                       if ( isSwipe && velocityX ) {
+                                               direction = ( velocityX < 0 ) ? self._DIRECTION_LEFT : self._DIRECTION_RIGHT;
+                                               self._run( direction, Math.abs( velocityX ), dragValue );
+                                       } else if ( dragDirection !== 0 && dragValue ) {
+                                               self._animate( null, self._DURATION_DEFAULT * ( 1 - dragValue ), dragDirection, 0, dragValue );
+                                       }
+
+                                       view.unbind( ".gallery3d" );
+                               }).bind( touchLeaveEvt, function ( e ) {
+                                       view.trigger( touchEndEvt );
+                               });
+                       });
+               },
+
+               // ----------------------------------------------------------
+               // WebGL
+               // ----------------------------------------------------------
+               _initGL: function ( canvas ) {
+                       var self = this,
+                               gl;
+
+                       gl = getContext3D( canvas );
+                       if ( !gl ) {
+                               window.alert( "There's no WebGL context available!!!" );
+                               return null;
+                       }
+
+                       gl.enable( gl.BLEND );
+                       gl.blendFunc( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA );
+
+                       gl.enable( gl.DEPTH_TEST );
+                       gl.depthFunc( gl.LEQUAL );
+
+                       canvas.width = self._VIEWPORT_WIDTH;
+                       canvas.height = self._VIEWPORT_HEIGHT;
+                       gl.viewportWidth = canvas.width;
+                       gl.viewportHeight = canvas.height;
+                       gl.viewport( 0, 0, gl.viewportWidth, gl.viewportHeight );
+                       self._pMatrix = mat4.create();
+                       mat4.perspective( 40, gl.viewportWidth / gl.viewportHeight, 0.1, 10000.0, self._pMatrix );
+
+                       gl.clearColor( 0.15, 0.15, 0.15, 1.0 );
+                       gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT );
+
+                       return gl;
+               },
+
+               _initShader : function ( gl ) {
+                       var self = this,
+                               shaderProgram;
+
+                       shaderProgram = $.webgl.shader.addShaderProgram( self._gl, VERTEX_SHADER, FRAGMENT_SHADER );
+                       gl.useProgram( shaderProgram );
+
+                       shaderProgram.vertexPositionAttr = gl.getAttribLocation( shaderProgram, "aVertexPosition" );
+                       gl.enableVertexAttribArray( shaderProgram.vertexPositionAttr );
+
+                       shaderProgram.textureCoordAttr = gl.getAttribLocation( shaderProgram, "aTextureCoord" );
+                       gl.enableVertexAttribArray( shaderProgram.textureCoordAttr );
+
+                       // Set light normal vectors for lighting~
+                       shaderProgram.vertexNormalAttr = gl.getAttribLocation( shaderProgram, "aVertexNormal" );
+                       gl.enableVertexAttribArray( shaderProgram.vertexNormalAttr );
+
+                       shaderProgram.perspectiveMU = gl.getUniformLocation( shaderProgram, "uPerspectiveMatrix");
+                       shaderProgram.transformMU = gl.getUniformLocation( shaderProgram, "uMoveMatrix");
+                       shaderProgram.sampleUniform = gl.getUniformLocation( shaderProgram, "uSampler");
+
+                       // Set light variables~
+                       shaderProgram.normalMU = gl.getUniformLocation( shaderProgram, "nNormalMatrix");
+                       shaderProgram.ambientColorU = gl.getUniformLocation( shaderProgram, "uAmbientColor");
+                       shaderProgram.lightDirU_first = gl.getUniformLocation( shaderProgram, "uLightDirection_first");
+                       shaderProgram.lightDirU_second = gl.getUniformLocation( shaderProgram, "uLightDirection_second");
+                       shaderProgram.directionColorU = gl.getUniformLocation( shaderProgram, "uDirectionColor");
+
+                       return shaderProgram;
+               },
+
+               _initBuffers: function ( gl, shaderProgram ) {
+                       var self = this,
+                               i = 0,
+                               mashBase = 0,
+                               vertices = [],
+                               textureCoords = [],
+                               normalVectors = [],
+                               nodes = [],
+                               maxDrawLength = self._MAX_ITEM_COUNT;
+
+                       for ( i = 0; i < self._imageList.length + 1; i += 1 ) {
+                               nodes[i] = new Node();
+                               $.merge( vertices, nodes[i].vertices );
+                               $.merge( textureCoords, nodes[i].textureCoords );
+                               $.merge( normalVectors, nodes[i].normalVectors );
+
+                               nodes[i].textureBuffer = gl.createBuffer();
+                               gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, nodes[i].textureBuffer );
+                               mashBase = i * 4;
+                               nodes[i].meshOrder = [
+                                       mashBase, mashBase + 1, mashBase + 2,
+                                       mashBase + 2, mashBase + 3, mashBase
+                               ];
+                               gl.bufferData( gl.ELEMENT_ARRAY_BUFFER, new GlArray16( nodes[i].meshOrder ), gl.STATIC_DRAW );
+                               gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, null ); // release buffer memory
+                               nodes[i].textureBufferItemSize = 6;
+                       }
+
+                       self._positionBuffer = $.webgl.buffer.attribBufferData( gl, new GlArray32( vertices ) );
+                       self._positionBuffer.itemSize = 3;
+
+                       self._textureCoordBuffer = $.webgl.buffer.attribBufferData( gl, new GlArray32( textureCoords ) );
+                       self._textureCoordBuffer.itemSize = 2;
+
+                       self._normalVectorBuffer = $.webgl.buffer.attribBufferData( gl, new GlArray32( normalVectors ) ); // Vertex's normal vector for Direction light
+                       self._normalVectorBuffer.itemSize = 3;
+
+                       // Ambient light
+                       gl.uniform3f( shaderProgram.ambientColorU, 0.1, 0.1, 0.1 );
+                       // Direcntion light
+                       gl.uniform3f( shaderProgram.directionColorU, 1.0, 1.0, 1.0 );
+
+                       return nodes;
+               },
+
+               // ----------------------------------------------------------
+               // Texture
+               // ----------------------------------------------------------
+               _initTextures: function ( gl, nodes ) {
+                       var self = this;
+
+                       $( nodes ).each( function ( i ) {
+                               var node = nodes[i],
+                                       url;
+
+                               if ( !self._imageList[i] ) {
+                                       return false;
+                               }
+
+                               url = self._imageList[i].src;
+                               node.texture = gl.createTexture();
+                               self._loadImage( url, i, i, gl, nodes );
+                       });
+               },
+
+               _loadImage: function ( url, i, imageID, gl, nodes ) {
+                       var self = this,
+                               isMipmap = false,
+                               image,
+                               node;
+
+                       gl = gl || self._gl;
+                       nodes = nodes || self._nodes;
+                       isMipmap = isMipmap || false;
+                       node = nodes[i];
+                       node.image = node.image || new Image();
+
+                       $( node.image ).one( "load", function ( e ) {
+                               self._bindTexture( gl, node, this, isMipmap );
+                               node.imageID = imageID;
+
+                               if ( !self._animationID ) {
+                                       self._setPosition( 0, 0 );
+                               }
+                       });
+
+                       if ( self.options.thumbnailCache ) {
+                               $.imageloader.getThumbnail( url, function ( result ) {
+                                       if ( result === "NOT_FOUND_ERR" ) {
+                                               $.imageloader.setThumbnail( url, function ( result ) {
+                                                       if ( result && result.length > 30 ) {
+                                                               node.image.src = result;
+                                                               isMipmap = true;
+                                                       } else {
+                                                               node.image.src = url;
+                                                       }
+                                               });
+                                       } else if ( result && result.length > 30 ) {
+                                               node.image.src = result;
+                                               isMipmap = true;
+                                       } else {
+                                               node.image.src = url;
+                                       }
+                               });
+                       } else {
+                               node.image.src = url;
+                       }
+               },
+
+               _bindTexture: function ( gl, node, image, isMipmap ) {
+                       if ( !node || !node.texture ) {
+                               return;
+                       }
+
+                       gl.pixelStorei( gl.UNPACK_FLIP_Y_WEBGL, true );
+
+                       gl.bindTexture( gl.TEXTURE_2D, node.texture );
+                       gl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image );
+
+                       if ( isMipmap ) {
+                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR );
+                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST );
+                               gl.generateMipmap( gl.TEXTURE_2D );
+                       } else {
+                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR );
+                               gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR );
+                       }
+
+                       gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );
+                       gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );
+
+                       node.texture.loaded = true;
+
+                       // release texture memory
+                       gl.bindTexture( gl.TEXTURE_2D, null );
+               },
+
+               // ----------------------------------------------------------
+               // rendering
+               // ----------------------------------------------------------
+               _setPosition: function ( progress, direction ) {
+                       var self = this,
+                               nodes = self._nodes,
+                               imageList = self._imageList,
+                               imageListLength = imageList.length,
+                               itemCount = self._MAX_ITEM_COUNT,
+                               displayLength = ( imageListLength > itemCount ) ? itemCount : imageListLength,
+                               nextLevelLenth = 0,
+                               i = 0,
+                               t = 0,
+                               position = 0,
+                               angle = 0,
+                               current = 0,
+                               next = 0,
+                               nextLevel = 0,
+                               path = self._path,
+                               nextImageID = 0;
+
+                       nextLevelLenth = ( direction >= 0 ) ? displayLength + 1 : displayLength;
+
+                       if ( !nodes[i].level ) {
+                               nodes[i].level = displayLength;
+                       }
+
+                       for ( i = 0; i < displayLength; i += 1 ) {
+                               if ( !nodes[i].mvMatrix ) {
+                                       nodes[i].mvMatrix = mat4.create();
+                               }
+
+                               if ( direction > 0 && nodes[i].level >= displayLength ) {
+                                       nodes[i].level = 0;
+                               }
+
+                               current = path.levels[nodes[i].level];
+                               nextLevel = ( nodes[i].level + nextLevelLenth + direction ) % nextLevelLenth;
+                               next = path.levels[nextLevel];
+
+                               if ( imageListLength > itemCount ) {
+                                       if ( direction > 0 && nextLevel === 1
+                                                       && self._firstImageNumber !== nodes[i].imageID ) {
+                                               self._loadImage( imageList[self._firstImageNumber].src, i, self._firstImageNumber );
+                                       } else if ( direction < 0 && nextLevel === nextLevelLenth - 1
+                                                       && self._lastImageNumber !== nodes[i].imageID ) {
+                                               self._loadImage( imageList[self._lastImageNumber].src, i, self._lastImageNumber );
+                                       }
+                               }
+
+                               mat4.identity( nodes[i].mvMatrix );
+                               mat4.translate( nodes[i].mvMatrix, [-2.0, -2.0, 1.0] );
+                               mat4.rotate( nodes[i].mvMatrix, self._degreeToRadian( 19 ), [1, 0, 0] );
+
+                               t = ( current + ( next - current ) * ( ( progress > 1 ) ? 1 : progress ) );
+
+                               if ( progress >= self._ANIMATION_END ) {
+                                       nodes[i].level = nextLevel || displayLength;
+                                       t = path.levels[nodes[i].level];
+                               }
+
+                               if ( ( progress < self._ANIMATION_END )
+                                               && ( direction <= 0 && nodes[i].level < 1 ) ) {
+                                       nodes[i].drawable = false;
+                               } else {
+                                       nodes[i].drawable = true;
+                               }
+
+                               if ( progress === self._ANIMATION_END && nodes[i].level === 1 ) {
+                                       self.element.trigger( "select", imageList[ nodes[i].imageID ], nodes[i].imageID );
+                               }
+
+                               position = path.getPosition( t );
+                               angle = path.getAngle( t );
+
+                               mat4.translate( nodes[i].mvMatrix, position );
+                               mat4.rotate( nodes[i].mvMatrix, angle, [0, 1, 0] );
+                       }
+
+                       if ( imageListLength > itemCount && progress >= self._ANIMATION_END ) {
+                               self._firstImageNumber = ( self._firstImageNumber - direction ) % imageListLength;
+                               if ( self._firstImageNumber < 0 ) {
+                                       self._firstImageNumber = imageListLength - 1;
+                               }
+
+                               self._lastImageNumber = ( self._lastImageNumber - direction ) % imageListLength;
+                               if ( self._lastImageNumber < 0 ) {
+                                       self._lastImageNumber = imageListLength - 1;
+                               }
+                       }
+                       self._drawScene();
+               },
+
+               _drawScene: function () {
+                       if ( !this._gl || !this._shaderProgram ) {
+                               return;
+                       }
+
+                       var self = this,
+                               gl = self._gl,
+                               shaderProgram = self._shaderProgram,
+                               nodes = self._nodes,
+                               nodesLength = nodes.length,
+                               i;
+
+                       gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT );
+
+                       gl.bindBuffer( gl.ARRAY_BUFFER, self._positionBuffer );
+                       gl.vertexAttribPointer( shaderProgram.vertexPositionAttr, self._positionBuffer.itemSize, gl.FLOAT, false, 0, 0 );
+
+                       gl.bindBuffer( gl.ARRAY_BUFFER, self._textureCoordBuffer );
+                       gl.vertexAttribPointer( shaderProgram.textureCoordAttr, self._textureCoordBuffer.itemSize, gl.FLOAT, false, 0, 0 );
+
+                       gl.bindBuffer( gl.ARRAY_BUFFER, self._normalVectorBuffer );
+                       gl.vertexAttribPointer( shaderProgram.vertexNormalAttr, self._normalVectorBuffer.itemSize, gl.FLOAT, false, 0, 0 );
+
+                       for ( i = 0; i < nodesLength; i += 1 ) {
+                               if ( nodes[i].drawable ) {
+                                       self._drawElement( self._pMatrix, nodes[i] );
+                               }
+                       }
+               },
+
+               _drawElement: function ( perspectiveMatrix, targetNode ) {
+                       var self = this,
+                               gl = self._gl,
+                               shaderProgram = self._shaderProgram,
+                               moveMatrix = targetNode.mvMatrix,
+                               texture = targetNode.texture,
+                               meshIndexBuffer = targetNode.textureBuffer,
+                               meshIndexBufferItemSize = targetNode.textureBufferItemSize,
+                               lightPositions = self._lightsPositionStack,
+                               LightDir,
+                               normalMatrix;
+
+                       if ( !moveMatrix ) {
+                               return;
+                       }
+
+                       gl.activeTexture( gl.TEXTURE0 );
+                       if ( texture && texture.loaded ) {
+                               gl.bindTexture( gl.TEXTURE_2D, texture );
+                       }
+                       gl.uniform1i( shaderProgram.sampleUniform, 0 );
+
+                       LightDir = vec3.create();
+                       vec3.normalize( lightPositions[0], LightDir );
+                       vec3.scale( LightDir, -8 );
+                       gl.uniform3fv( shaderProgram.lightDirU_first, LightDir );
+
+                       vec3.normalize( lightPositions[1], LightDir );
+                       vec3.scale( LightDir, -1 );
+                       gl.uniform3fv( shaderProgram.lightDirU_second, LightDir );
+                       gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, meshIndexBuffer );
+
+                       gl.uniformMatrix4fv( shaderProgram.perspectiveMU, false, perspectiveMatrix );
+                       gl.uniformMatrix4fv( shaderProgram.transformMU, false, moveMatrix );
+
+                       normalMatrix = mat3.create();
+                       mat4.toInverseMat3( moveMatrix, normalMatrix );
+                       mat3.transpose( normalMatrix );
+                       gl.uniformMatrix3fv( shaderProgram.normalMU, false, normalMatrix );
+
+                       gl.drawElements( gl.TRIANGLES, meshIndexBufferItemSize, gl.UNSIGNED_SHORT, 0 );
+
+                       // release buffer memory
+                       gl.bindBuffer( gl.ARRAY_BUFFER, null );
+                       gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, null );
+
+                       // release texture memory
+                       gl.bindTexture( gl.TEXTURE_2D, null );
+               },
+
+               // ----------------------------------------------------------
+               // Animation
+               // ----------------------------------------------------------
+               _animate: function ( easingType, duration, direction, repeatCount, startValue, _removeCount ) {
+                       var self = this,
+                               timeNow = $.now(),
+                               progress,
+                               removeCount = 0;
+
+                       easingType = easingType || "linear";
+                       startValue = startValue || 0;
+                       _removeCount = _removeCount || 0;
+
+                       if ( self._sumTime >= duration ) {
+                               self._setPosition( self._ANIMATION_END, direction );
+                               self._stop();
+                               return;
+                       }
+
+                       if ( self._startTime === 0 ) {
+                               self._startTime = timeNow;
+                       } else {
+                               self._sumTime = timeNow - self._startTime;
+                               progress = $.easing[ easingType ]( self._sumTime / duration, self._sumTime, startValue, repeatCount + 1, duration );
+                               removeCount = parseInt( Math.abs( progress ), 10 );
+
+                               if ( _removeCount !== removeCount ) {
+                                       self._setPosition( self._ANIMATION_END, direction );
+                                       _removeCount = removeCount;
+
+                                       if ( ( repeatCount - _removeCount ) >= 0 ) {
+                                               self._animate( easingType, duration, direction, repeatCount, startValue, _removeCount );
+                                       } else {
+                                               self._stop();
+                                       }
+                                       return;
+                               }
+
+                               self._setPosition( progress - _removeCount, direction );
+                       }
+
+                       self._animationID = window.requestAnimationFrame( function () {
+                               self._animate( easingType, duration, direction, repeatCount, startValue, _removeCount );
+                       });
+               },
+
+               _run: function ( direction, repeatCount, startValue ) {
+                       var self = this,
+                               repeat = repeatCount || 0,
+                               duration = self._DURATION_DEFAULT * ( repeat + 1 );
+
+                       if ( self._imageList.length <= 1 ) {
+                               return;
+                       }
+
+                       startValue = startValue || 0;
+                       duration = ( duration >= 0 ) ? duration : 0;
+
+                       if ( self._animationID ) {
+                               self._setPosition( self._ANIMATION_END, direction );
+                               self._stop();
+                       }
+
+                       self._animate( "easeOutExpo", duration, direction, repeat, startValue );
+               },
+
+               _reset: function () {
+                       if ( !this._canvas || !this._gl ) {
+                               return;
+                       }
+
+                       this._final();
+                       this._init();
+                       this.refresh();
+               },
+
+               _stop: function () {
+                       if ( this._animationID ) {
+                               window.cancelAnimationFrame( this._animationID );
+                       }
+                       this._animationID = 0;
+
+                       this._startTime = 0;
+                       this._sumTime = 0;
+               },
+
+               _degreeToRadian: function ( degree ) {
+                       return degree * Math.PI / 180;
+               },
+
+               next: function () {
+                       this._run( this._DIRECTION_LEFT , 0 );
+               },
+
+               prev: function () {
+                       this._run( this._DIRECTION_RIGHT, 0 );
+               },
+
+               refresh: function () {
+                       var view = this.element,
+                               canvas = view.find( "canvas.ui-gallery3d-canvas" );
+
+                       if ( canvas.width() !== view.width() ) {
+                               canvas.width( view.width() );
+                       }
+
+                       if ( !this._animationID ) {
+                               this._setPosition( 0, 0 );
+                       }
+               },
+
+               select: function ( index ) {
+                       var nodes = this._nodes,
+                               repeat,
+                               i,
+                               imageID,
+                               object = null,
+                               target = 0,
+                               direction = 0;
+
+                       if ( index && this._animationID ) {
+                               this._stop();
+                       }
+
+                       for ( i in nodes ) {
+                               if ( nodes[i].level === 1 ) {
+                                       object = this._imageList[ nodes[i].imageID ];
+                                       imageID = nodes[i].imageID;
+                                       break;
+                               }
+                       }
+
+                       if ( !index ) {
+                               return object;
+                       }
+
+                       if ( index < 0 && index >= this._imageList.length ) {
+                               return;
+                       }
+
+                       target = index - imageID;
+                       direction = ( target > 0 ) ? this._DIRECTION_LEFT
+                               : ( ( target < 0 ) ? this._DIRECTION_RIGHT : 0 );
+                       if ( direction ) {
+                               this._run( direction, Math.abs( target ) - 1  );
+                       }
+               },
+
+               add: function ( item, index ) {
+                       if ( !item ) {
+                               return;
+                       }
+
+                       if ( typeof item === "string" ) {
+                               item = { "src" : item };
+                       }
+
+                       index = index || 0;
+                       if ( typeof index !== "number" && index < 0
+                                       && index >= this._imageList.length ) {
+                               return;
+                       }
+
+                       this._imageList.splice( index, 0, item );
+                       if ( this._gl ) {
+                               this._reset();
+                       }
+               },
+
+               remove: function ( index ) {
+                       index = index || 0;
+                       if ( typeof index !== "number" && index < 0
+                                       && index >= this._imageList.length ) {
+                               return;
+                       }
+
+                       this._imageList.splice( index, 1 );
+                       if ( this._gl ) {
+                               this._reset();
+                       }
+               },
+
+               clearThumbnailCache: function () {
+                       if ( !this._nodes || ( this._nodes.length <= 0 ) ) {
+                               return;
+                       }
+
+                       var i, url;
+                       for ( i = 0; i < this._imageList.length; i += 1 ) {
+                               url = this._imageList[i].src;
+                               $.imageloader.removeThumbnail( url );
+                       }
+               },
+
+               empty: function () {
+                       this._imageList = [];
+                       this._reset();
+               },
+
+               length: function () {
+                       return this._imageList.length;
+               }
+       });
+
+       $( document ).bind( "pagecreate create", function ( e ) {
+               $( ":jqmData(role='gallery3d')" ).gallery3d();
+       });
+
+} ( jQuery, document, window ) );
+
+
+
+/*
+ * jQuery Mobile Widget @VERSION
+ *
+ * This software is licensed under the MIT licence (as defined by the OSI at
+ * http://www.opensource.org/licenses/mit-license.php)
+ *
+ * ***************************************************************************
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2011 by Intel Corporation Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ *
+ * Authors: Kalyan Kondapally <kalyan.kondapally@intel.com>,
+ *          Elliot Smith <elliot.smith@intel.com>
+ *          Hyunjung Kim <hjnim.kim@samsung.com>
+ */
+
+// Widget which turns a html element into a "swipe":
+// i.e. each list item has a sliding "cover" which can be swiped
+// to the right (to reveal buttons underneath) or left (to
+// cover the buttons again). Clicking on a button under a swipe
+// also moves the cover back to the left.
+//
+// In this case, the cover is over a grid of buttons;
+// but it is should also be possible to use other types of markup under the
+// list items.
+//
+// WARNING: This doesn't work well inside a scrollview widget, as
+// the touch events currently interfere with each other badly (e.g.
+// a swipe will work but cause a scroll as well).
+//
+// Theme: default is to use the theme on the target element,
+// theme passed in options, parent theme, or 'c' if none of the above.
+// If list items are themed individually, the cover will pick up the
+// theme of the list item which is its parent.
+//
+
+/**
+       @class Swipe
+       The swipe widget shows a view on the screen where the items can be swiped vertically to show a menu.
+       To add a swipe widget to the application, use the following code:
+
+               <ul data-role="listview">
+                       <li data-role="swipe">
+                               <div data-role="swipe-cover">
+                                       <div data-role="button" data-inline="true">OK</div>
+                                       <div data-role="button" data-inline="true">Cancel</div>
+                               </div>
+                               <div data-role="swipe-item-cover">
+                                       <p>This is a swipe item cover.<br>
+                                               This will be swiped out when swipe event comes.</p>
+                               </div>
+                       </li>
+               </ul>
+
+       You can use methods with the swipe as described in the jQueryMobile documentation for view methods.
+*/
+/**
+       @property {String} data-role
+       Creates a swipe using the HTML unordered view (&gt;ul&lt;) element.
+       The default value is swipe.
+
+       Creates a swipe item cover using an HTML $gt;div$lt; element. This cover can be swiped to show the content beneath it.
+       The default value is swipe-item-cover.
+*/
+/**
+       @method open
+       uncover swipe item
+*/
+/**
+       @method close
+       cover swipe item
+*/
+/**
+       @method opened
+       return coveritem status( coverd or uncovred )
+*/
+/**
+       @event animationstart
+       The swipe can define a callback for the animationstart event, which is fired after a item is swipe and the swipe animation is start:
+*/
+/**
+       @event animationend
+       The swipe can define a callback for the animationend event, which is fired after a item is swiped and the swipe animation is complete:
+
+               <ul data-role="listview">
+               <li data-role="swipe">
+                               <div data-role="swipe-cover">
+                                       <div data-role="button" data-inline="true">OK</div>
+                                       <div data-role="button" data-inline="true">Cancel</div>
+                               </div>
+                               <div data-role="swipe-item-cover" id="foo">
+                               <p>This is a swipe item cover.<br>
+                                               This will be swiped out when swipe event comes.</p>
+                               </div>
+                       </li>
+               </ul>
+               $("#foo").bind("animationend", function (ev)
+               {
+                       Console.log("Swipe cover's animation is complete.");
+               });
+*/
+(function ($) {
+
+       $.widget("tizen.swipe", $.mobile.widget, {
+               options: {
+                       theme: null
+               },
+
+               _create: function () {
+                       // use the theme set on the element, set in options,
+                       // the parent theme, or 'c' (in that order of preference)
+                       var theme = this.element.jqmData('theme') ||
+                               this.options.theme ||
+                               this.element.parent().jqmData('theme') ||
+                               's';
+
+                       this.options.theme = theme;
+                       this._isopen = false;
+                       this.refresh();
+               },
+
+               refresh: function () {
+                       this._cleanupDom();
+
+                       var self = this,
+                               defaultCoverTheme,
+                               covers,
+                               coverTheme,
+                               item,
+                               itemHasThemeClass;
+
+                       defaultCoverTheme = 'ui-body-' + this.options.theme;
+
+                       if ( !this.element.parent().hasClass('ui-listview') ) {
+                               this.element.parent().listview();
+                       }
+                       this.element.addClass('ui-swipe');
+
+                       // get the item covers
+                       covers = this.element.find(':jqmData(role="swipe-item-cover")');
+                       item = this.element.find(':jqmData(role="swipe-item")');
+
+                       this._covers = covers;
+                       this._item = item;
+                       item.addClass('ui-swipe-item');
+                       coverTheme = defaultCoverTheme;
+                       itemHasThemeClass = item.parent().attr('class')
+                                       .match(/ui\-body\-[a-z]|ui\-bar\-[a-z]/);
+
+                       covers.each( function () {
+                               var cover = $( this );
+
+                               if ( itemHasThemeClass ) {
+                                       coverTheme = itemHasThemeClass[0];
+                               }
+
+                               cover.addClass('ui-swipe-item-cover');
+                               cover.addClass( coverTheme );
+
+                               if ( cover.has('.ui-swipe-item-cover-inner').length === 0 ) {
+                                       cover.wrapInner( $('<span/>').addClass('ui-swipe-item-cover-inner') );
+                               }
+
+                               if ( !( cover.data('animateRight') && cover.data('animateLeft') ) ) {
+                                       cover.data('animateRight', function () {
+                                               self._animateCover( cover, 110, item );
+                                       });
+
+                                       cover.data('animateLeft', function () {
+                                               self._animateCover( cover, 0, item );
+                                       });
+                               }
+
+                               // bind to synthetic events
+                               item.bind( 'swipeleft', cover.data('animateLeft') );
+                               cover.bind( 'swiperight', cover.data('animateRight') );
+                               item.find( '.ui-btn' ).bind( 'vclick', cover.data('animateLeft') );
+                       } );
+
+               },
+
+               _cleanupDom: function () {
+                       var self = this,
+                               defaultCoverTheme,
+                               cover,
+                               coverTheme = defaultCoverTheme,
+                               item,
+                               itemClass,
+                               itemHasThemeClass,
+                               text,
+                               wrapper;
+
+                       defaultCoverTheme = 'ui-body-' + this.options.theme;
+
+                       this.element.removeClass('ui-swipe');
+
+                       // get the item covers
+                       cover = this.element.find(':jqmData(role="swipe-item-cover")');
+                       item = this.element.find(':jqmData(role="swipe-item")');
+
+                       item.removeClass('ui-swipe-item');
+                       cover.removeClass('ui-swipe-item-cover');
+
+                       itemClass = item.attr('class');
+                       itemHasThemeClass = itemClass &&
+                               itemClass.match(/ui\-body\-[a-z]|ui\-bar\-[a-z]/);
+
+                       if ( itemHasThemeClass ) {
+                               coverTheme = itemHasThemeClass[0];
+                       }
+
+                       cover.removeClass(coverTheme);
+
+                       // remove wrapper HTML
+                       wrapper = cover.find('.ui-swipe-item-cover-inner');
+                       wrapper.children().unwrap();
+                       text = wrapper.text();
+
+                       if ( text ) {
+                               cover.append( text );
+                               wrapper.remove();
+                       }
+
+                       // unbind swipe events
+                       if ( cover.data('animateRight') && cover.data('animateLeft') ) {
+                               cover.unbind( 'swiperight', cover.data('animateRight') );
+                               item.unbind( 'swipeleft', cover.data('animateLeft') );
+
+                               // unbind clicks on buttons inside the item
+                               item.find('.ui-btn').unbind( 'vclick', cover.data('animateLeft') );
+
+                               cover.data( 'animateRight', null );
+                               cover.data( 'animateLeft', null );
+                       }
+               },
+
+               // NB I tried to use CSS animations for this, but the performance
+               // and appearance was terrible on Android 2.2 browser;
+               // so I reverted to jQuery animations
+               //
+               // once the cover animation is done, the cover emits an
+               // animationComplete event
+               _animateCover: function ( cover, leftPercentage, item ) {
+                       var self = this,
+                               animationOptions = {
+                                       easing: 'linear',
+                                       duration: 'normal',
+                                       queue: true,
+                                       complete: function () {
+                                               cover.trigger('animationend');
+                                       }
+                               };
+
+                       $( this.element.parent() )
+                               .find(":jqmData(role='swipe')")
+                               .each(
+                                       function () {
+                                               if ( this !== self.element.get(0) &&
+                                                               $( this ).swipe("opened") ) {
+                                                       $( this ).swipe("close");
+                                               }
+                                       }
+                               );
+
+                       if ( leftPercentage == 110 ) {
+                               this._isopen = true;
+                       } else {
+                               this._isopen = false;
+                       }
+
+                       cover.stop();
+                       cover.clearQueue();
+                       cover.trigger('animationstart');
+                       cover.animate( { left: leftPercentage + '%' }, animationOptions );
+                       if ( leftPercentage == 0 ) {
+                               item.animate({ opacity: 0 }, "slow");
+                       } else {
+                               item.animate({ opacity: 1 }, "slow");
+                       }
+
+               },
+
+               destroy: function () {
+                       this._cleanupDom();
+               },
+
+               open: function () {
+                       var self = this;
+
+                       $( self._covers ).each( function () {
+                               var cover = $( this );
+                               self._animateCover( cover, 110, self._item);
+                       } );
+               },
+
+               opened: function () {
+                       return this._isopen;
+               },
+
+               close: function () {
+                       var self = this;
+
+                       $( self._covers ).each( function () {
+                               var cover = $( this );
+                               self._animateCover( cover, 0, self._item);
+                       } );
+               }
+
+       });
+
+       $( document ).bind("pagecreate", function ( e ) {
+               $( e.target ).find(":jqmData(role='swipe')").swipe();
+       });
+
+}( jQuery ));
+
+
+
+/* ***************************************************************************
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * ***************************************************************************
+ *
+ *     Author: Kangsik Kim <kangsik81.kim@samsung.com>
+ *                             Minkyeong Kim <minkyeong.kim@samsung.com>
+*/
+
+/**
+ *     The TokenTextArea widget changes a text item to a button. It can be comprised of a number of button widgets. 
+ *     When a user types text and the text gets a specific event to change from a text to a button, 
+ *     the input text is changed to a TokenTextArea widget.
+ *     A user can add the TokenTextArea widget to a contact list, email list, or another list.
+ *     The typical use of this widget is composing a number of contacts or phone numbers in a specific area of the screen.
+ *
+ *     HTML Attributes:
+ *
+ *             data-link : Represents the id of the page or the URL of other HTML file.
+ *                             The page contains data for the user, for example, an address book.
+ *                             If the value is null, anchor button doesn't work. (Default : null)
+ *             data-label:     Provide a label for a user-guide. (Default : 'To : ')
+ *             data-description : This attribute is managing message format.
+ *                             This message is displayed when widget status was changed to 'focusout'. (Default : '+ {0}')
+ *
+ *     APIs:
+ *
+ *             inputtext (  [string]  )
+ *                     : If argument is not exist, will get a string from inputbox.
+ *                     If argument is exist, will set a string to inputbox.
+ *             select (  [number]  )
+ *                     : If no argument exists, gets a string of the selected block.
+ *                     If any button isn't selected on a token text area widget, this method returns "null" value.
+ *                     When a user call this method with an argument which is a number type,
+ *                     this method selects the button which is matched with the argument.
+ *             add ( text, [number] )
+ *                     :  If second argument does not exist, will insert to a new button at last position.
+ *                     Insert a new button at indexed position. The position is decided by the second argument.
+ *                     "index of position" means that the position of inserting a new button is decided by the second argument on "add" method.
+ *                     For example, if a user call the method like this "add("Tizen", 2)",
+ *                     new button labed "Tizen" will be inserted on the third position.
+ *             remove ( [number] )
+ *                     : If no argument exists, all buttons are removed.
+ *                     Remove a button at indexed position.
+ *                     The position is decided by the second argument. (index: index of button)
+ *             length ( void )
+ *                     : Get a number of buttons.
+ *             foucsIn ( void )
+ *                     : This method change a status to 'focusin'.
+ *                     This status is able to manage a widget.
+ *             focusOut ( void )
+ *                     : Changes the focus status to 'focus out'.
+ *                     The status is not able to manage a widget.
+ *                     All buttons that contained in the widget are removed and
+ *                     summarized message is displayed.
+ *             destroy ( void )
+ *                     : Remove all of the new DOM elements for the current widget that you created.
+ *
+ *     Events:
+ *
+ *             select : Occur when a button is selected.
+ *             add : Occur when new button is inserted. (@since Tizen 2.1 deprecated, You can still use this event. But not recommended.)
+ *             remove : Occur when a button is removed. (@since Tizen 2.1 deprecated, You can still use this event. But not recommended.)
+ *
+ *     Examples:
+ *
+ *             <div data-role="tokentextarea" data-label="To : " data-link="#pageId" data-description="+ {0}">
+ *             </div>
+ *
+ */
+
+
+/**
+       @class TokenTextArea
+       The TokenTextArea widget enables the user to enter text and convert it to a button. Each button that is created from entered text as a result of a change event forms a token text area widget. This widget is useful in composing an e-mail or SMS message to a group of addresses, each of which is a clickable item for more actions, such as copying, editing, or removing the address.
+
+       To add a token text area widget to the application, use the following code:
+
+               <div data-role="tokentextarea" data-label="To : " data-link="#pageId">
+               </div>
+*/
+
+/**
+       @property {String} data-label
+       Sets a label as a guide for the user.
+       For example, while composing an e-mail message, the 'To : ' label is a guide for the user to enter e-mail addresses.
+
+               <div data-role="tokentextarea" data-label="To : ">
+               </div>
+*/
+
+/**
+       @property {String} data-decription
+       Manages the message format.
+       The message is displayed when the widget status changes to focus out
+
+               <div data-role="tokentextarea" data-description=" + {0}">
+               </div>
+ */
+/**
+       @property {String} data-link
+       Sets the ID of the page or the URL of other HTML file to which the button links.
+       If the data-link is set with the URL of other HTML file, the 'dom-cache' option of both page - a page containing a Tokentextarea and a page in the target HTML file - must be set as 'true'.
+
+               <div data-role="tokentextarea" data-link="#pageId">
+               </div>
+
+               <div data-role="tokentextarea" data-link="fileName.html" data-dom-cache="true">
+               </div>
+*/
+/**
+       @event select
+       The select event is fired when a token text area widget button is selected:
+
+               <div data-role="tokentextarea">
+               </div>
+               $(".selector").on("select", function(event, ui)
+               {
+                       // Handle the select event
+               });     
+*/
+/**
+       @event add (@since Tizen 2.1 deprecated, You can still use this event. But not recommended.)
+       The add event is fired when a token text area widget button is created:
+
+               <div data-role="tokentextarea">
+               </div>
+               $(".selector").on("add", function(event, ui)
+               {
+                       // Handle the add event
+               });
+*/
+/**
+       @event remove (@since Tizen 2.1 deprecated, You can still use this event. But not recommended.)
+       The remove event is fired when a token text area widget button is removed:
+       Restriction : "remove" event works under only "bind" event handling.
+
+               <div data-role="tokentextarea">
+               </div>
+               $(".selector").bind("remove", function(event, ui)
+               {
+                       // Handle the remove event
+               });
+*/
+/**
+       @method destroy
+       The destroy method is used to remove in the current widget all the new DOM elements that you have created.
+
+               <div data-role="tokentextarea">
+               </div>
+               $(".selector").tokentextarea("destroy");
+
+       @since Tizen2.0
+*/
+/**
+       @method inputText
+       The inputText method is used to manage the widget input box text. If no parameter is set, the method gets the input box text. If a parameter is set, the parameter text is set in the input box.
+       
+               <div data-role="tokentextarea">
+               </div>
+               $(".selector").tokentextarea("inputText", [text]);
+*/
+/**
+       @method select
+       The select method is used to select a token text area widget button based on its index value. If no index value is defined, the method returns the string of the selected block. If there are no buttons present in the widget, the method returns null.
+
+               <div data-role="tokentextarea">
+               </div>
+               $(".selector").tokentextarea("select", [index]);
+*/
+/**
+       @method add
+       The add method is used to add a new token text area widget button with the specified label text at the specified index position. If the index parameter is not defined, the widget button is added at the bottom of the list. For example, the $(".selector").tokentextarea("add", "Tizen", 2) method call creates a new widget button labeled 'Tizen' at the third position in the widget.
+
+               <div data-role="tokentextarea">
+               </div>
+               $(".selector").tokentextarea("add", [text], [index]);
+*/
+/**
+       @method remove
+       The remove method is used to remove a token text area widget button at the specified index position. If the parameter is not defined, all the widget buttons are removed.
+
+               <div data-role="tokentextarea">
+               </div>
+               $(".selector").tokentextarea("remove", [index]);
+*/
+/**
+       @method length
+       The length method is used to retrieve the number of buttons in the token text area widget:
+               <div data-role="tokentextarea">
+               </div>
+               $(".selector").tokentextarea("length");
+*/
+/**
+       @method focusIn
+       The focusIn method is used to set the focus status to "focus in". This focus state enables the user to add or remove buttons in the token text area widget.
+
+               <div data-role="tokentextarea">
+               </div>
+               $(".selector").tokentextarea("focusIn");
+*/
+/**
+       @method focusOut
+       The focusOut method is used to set the focus status to "focus out". In this focus state, the user cannot manage the buttons in the widget, all the buttons are removed, and a message is displayed.
+
+               <div data-role="tokentextarea">
+               </div>
+               $(".selector").tokentextarea("focusOut");
+*/
+( function ( $, window, document, undefined ) {
+       $.widget( "tizen.tokentextarea", $.mobile.widget, {
+               _focusStatus : null,
+               _items : null,
+               _viewWidth : 0,
+               _reservedWidth : 0,
+               _currentWidth : 0,
+               _fontSize : 0,
+               _anchorWidth : 0,
+               _labelWidth : 0,
+               _marginWidth : 0,
+               options : {
+                       label : "To : ",
+                       link : null,
+                       description : "+ {0}"
+               },
+
+               _create : function () {
+                       var self = this,
+                               $view = this.element,
+                               role = $view.jqmData( "role" ),
+                               option = this.options,
+                               className = "ui-tokentextarea-link",
+                               inputbox = $( document.createElement( "input" ) ),
+                               labeltag = $( document.createElement( "span" ) ),
+                               moreBlock = $( document.createElement( "a" ) );
+
+                       $view.hide().empty().addClass( "ui-" + role );
+
+                       // create a label tag.
+                       $( labeltag ).text( option.label ).addClass( "ui-tokentextarea-label" ).attr( "tabindex", 0 );
+                       $view.append( labeltag );
+
+                       // create a input tag
+                       $( inputbox ).addClass( "ui-tokentextarea-input ui-tokentextarea-input-visible ui-input-text ui-body-s" ).attr( "role", "textbox" );
+                       $view.append( inputbox );
+
+                       // create a anchor tag.
+                       if ( option.link === null || $.trim( option.link ).length < 1 || $( option.link ).length === 0 ) {
+                               className += "-dim";
+                       }
+                       $( moreBlock ).attr( "data-role", "button" )
+                               .buttonMarkup( {
+                                       inline: true,
+                                       icon: "plus",
+                                       style: "circle"
+                               })
+                               .attr( { "href" : $.trim( option.link ), "tabindex" : 0 } )
+                               .addClass( "ui-tokentextarea-link-base" )
+                               .addClass( className )
+                               .find( "span.ui-btn-text" )
+                               .text( "Add recipient" );
+
+                       // append default htmlelements to main widget.
+                       $view.append( moreBlock );
+
+                       // bind a event
+                       this._bindEvents();
+                       self._focusStatus = "init";
+                       // display widget
+                       $view.show();
+
+                       // assign global variables
+                       self._viewWidth = $view.innerWidth();
+                       self._reservedWidth += self._calcBlockWidth( moreBlock );
+                       self._reservedWidth += self._calcBlockWidth( labeltag );
+                       self._fontSize = parseInt( $( moreBlock ).css( "font-size" ), 10 );
+                       self._currentWidth = self._reservedWidth;
+                       self._modifyInputBoxWidth();
+               },
+
+               // bind events
+               _bindEvents : function () {
+                       var self = this,
+                               $view = self.element,
+                               option = self.options,
+                               inputbox = $view.find( ".ui-tokentextarea-input" ),
+                               moreBlock = $view.find( ".ui-tokentextarea-link-base" ),
+                               isSeparator = false;
+
+                       // delegate a event to HTMLDivElement(each block).
+                       $view.delegate( "div", "click", function ( event ) {
+                               if ( $( this ).hasClass( "ui-tokentextarea-sblock" ) ) {
+                                       // If block is selected, it will be removed.
+                                       self._removeTextBlock();
+                               }
+
+                               var lockBlock = $view.find( "div.ui-tokentextarea-sblock" );
+                               if ( typeof lockBlock !== "undefined" ) {
+                                       lockBlock.removeClass( "ui-tokentextarea-sblock" ).addClass( "ui-tokentextarea-block" );
+                               }
+                               $( this ).removeClass( "ui-tokentextarea-block" ).addClass( "ui-tokentextarea-sblock" );
+                               $view.trigger( "select" );
+                       });
+
+                       inputbox.bind( "keyup", function ( event ) {
+                               // 8  : backspace
+                               // 13 : Enter
+                               // 186 : semi-colon
+                               // 188 : comma
+                               var keyValue = event.keyCode,
+                                       valueString = $( inputbox ).val(),
+                                       valueStrings = [],
+                                       index;
+
+                               if ( keyValue === 8 ) {
+                                       if ( valueString.length === 0 ) {
+                                               self._validateTargetBlock();
+                                       }
+                               } else if ( keyValue === 13 || keyValue === 186 || keyValue === 188 ) {
+                                       if ( valueString.length !== 0 ) {
+                                               // split content by separators(',', ';')
+                                               valueStrings = valueString.split ( /[,;]/ );
+                                               for ( index = 0; index < valueStrings.length; index++ ) {
+                                                       if ( valueStrings[index].length !== 0 && valueStrings[index].replace( /\s/g, "" ).length !== 0 ) {
+                                                               self._addTextBlock( valueStrings[index] );
+                                                       }
+                                               }
+                                       }
+                                       inputbox.val( "" );
+                                       isSeparator = true;
+                               } else {
+                                       self._unlockTextBlock();
+                               }
+
+                               return !isSeparator;
+                       });
+
+                       moreBlock.click( function () {
+                               if ( $( moreBlock ).hasClass( "ui-tokentextarea-link-dim" ) ) {
+                                       return;
+                               }
+
+                               $( inputbox ).removeClass( "ui-tokentextarea-input-visible" ).addClass( "ui-tokentextarea-input-invisible" );
+
+                               $.mobile.changePage( option.link, {
+                                       transition: "slide",
+                                       reverse: false,
+                                       changeHash: false
+                               });
+                       });
 
-               <div data-role="page">
-                       <div data-role="notification" data-type="smallpopup">
-                               <p>text1</p>
-                       </div>
-                       <div data-role="header"></div>
-                       <div data-role="content"></div>
-                       <div data-role="footer"></div>
-               </div>
-*/
-/**
-       @property {String} data-type
-       Defines the notification type. The type options are tickernoti and smallpopup. <br/>The default value is smallpopup.
+                       $( document ).bind( "pagechange.mbe", function ( event ) {
+                               if ( $view.innerWidth() === 0 ) {
+                                       return ;
+                               }
+                               self._modifyInputBoxWidth();
+                               $( inputbox ).removeClass( "ui-tokentextarea-input-invisible" ).addClass( "ui-tokentextarea-input-visible" );
+                       });
 
-*/
-/**
-       @property {Integer} data-interval
-       Defines the time to showing a notification widget. <br/>The default is infinitely.
+                       $view.bind( "click", function ( event ) {
+                               if ( self._focusStatus === "focusOut" ) {
+                                       self.focusIn();
+                               }
+                       });
+               },
 
-*/
-/**
-       @method open
-       The open method is used to open the notification widget:
+               // create a textbutton and append this button to parent layer.
+               // @param arg1 : string
+               // @param arg2 : index
+               _addTextBlock : function ( messages, blockIndex ) {
+                       if ( arguments.length === 0 ) {
+                               return;
+                       }
 
-               <div data-role="notification" data-type="smallpopup" data-interval="3000"></div>
-               $('#notification').notification('open');
-*/
-/**
-       @method close
-       The close method is used to close the notification widget:
+                       if ( !messages ) {
+                               return ;
+                       }
 
-               <div data-role="notification" data-type="smallpopup" data-interval="3000"></div>
-               $('#notification').notification('close');
-*/
-/**
-       @method text
-       The text method is used to set or get the notification text:
+                       var self = this,
+                               $view = self.element,
+                               content = messages,
+                               index = blockIndex,
+                               blocks = null,
+                               textBlock = null;
 
-               <div data-role="notification" data-type="smallpopup" data-interval="3000"></div>
-               // Set notification text
-               $('#notification').notification('text', 'setThisText');
-               // Get notification text
-               texts = $('#notification').notification('text');
-       @since Tizen2.0
-*/
-/**
-       @method icon
-       The setIcon method is used to set the ticker notification icon. The icon can be set only if the notification type is set to tickernoti.
+                       if ( self._viewWidth === 0 ) {
+                               self._viewWidth = $view.innerWidth();
+                       }
 
-               <div data-role="notification" data-type="ticker" data-interval="3000"></div>
-               $('#notification').notification('icon', './test.png');
-*/
-(function ( $, window ) {
-       $.widget( "tizen.notification", $.mobile.widget, {
-               btn: null,
-               text_bg: [],
-               icon_img: [],
-               interval: null,
-               seconds: null,
-               running: false,
+                       // Create a new text HTMLDivElement.
+                       textBlock = $( document.createElement( 'div' ) );
 
-               _get_text: function () {
-                       var text = new Array( 2 );
+                       textBlock.text( content ).addClass( "ui-tokentextarea-block" ).attr( { "aria-label" : "double tap to edit", "tabindex" : 0 } );
+                       textBlock.css( {'visibility': 'hidden'} );
 
-                       if ( this.type === 'ticker' ) {
-                               text[0] = $( this.text_bg[0] ).text();
-                               text[1] = $( this.text_bg[1] ).text();
+                       blocks = $view.find( "div" );
+                       if ( index !== null && index <= blocks.length ) {
+                               $( blocks[index] ).before( textBlock );
                        } else {
-                               text[0] = $( this.text_bg[0] ).text();
+                               $view.find( ".ui-tokentextarea-input" ).before( textBlock );
                        }
 
-                       return text;
+                       textBlock = self._ellipsisTextBlock( textBlock );
+                       textBlock.css( {'visibility': 'visible'} );
+
+                       self._modifyInputBoxWidth();
+
+                       textBlock.hide();
+                       textBlock.fadeIn( "fast", function () {
+                               self._currentWidth += self._calcBlockWidth( textBlock );
+                               $view.trigger( "add" );
+                       });
                },
 
-               _set_text: function ( text0, text1 ) {
-                       var _set = function ( elem, text ) {
-                               if ( !text ) {
-                                       return;
+               _removeTextBlock : function () {
+                       var self = this,
+                               $view = this.element,
+                               lockBlock = $view.find( "div.ui-tokentextarea-sblock" ),
+                               _temp = null,
+                               _dummy = function () {};
+
+                       if ( lockBlock !== null && lockBlock.length > 0 ) {
+                               self._currentWidth -= self._calcBlockWidth( lockBlock );
+
+                               lockBlock.fadeOut( "fast", function () {
+                                       lockBlock.remove();
+                                       self._modifyInputBoxWidth();
+                               });
+
+                               this._eventRemoveCall = true;
+                               if ( $view[0].remove ) {
+                                       _temp = $view[0].remove;
+                                       $view[0].remove = _dummy;
                                }
-                               elem.text( text );
-                       };
+                               $view.triggerHandler( "remove" );
+                               if ( _temp) {
+                                       $view[0].remove = _temp;
+                               }
+                               this._eventRemoveCall = false;
+                       } else {
+                               $view.find( "div:last" ).removeClass( "ui-tokentextarea-block" ).addClass( "ui-tokentextarea-sblock" );
+                       }
+               },
 
-                       if ( this.type === 'ticker' ) {
-                               _set( $( this.text_bg[0] ), text0 );
-                               _set( $( this.text_bg[1] ), text1 );
+               _calcBlockWidth : function ( block ) {
+                       return $( block ).outerWidth( true );
+               },
+
+               _unlockTextBlock : function () {
+                       var $view = this.element,
+                               lockBlock = $view.find( "div.ui-tokentextarea-sblock" );
+                       if ( lockBlock ) {
+                               lockBlock.removeClass( "ui-tokentextarea-sblock" ).addClass( "ui-tokentextarea-block" );
+                       }
+               },
+
+               // call when remove text block by backspace key.
+               _validateTargetBlock : function () {
+                       var self = this,
+                               $view = self.element,
+                               lastBlock = $view.find( "div:last" ),
+                               tmpBlock = null;
+
+                       if ( lastBlock.hasClass( "ui-tokentextarea-sblock" ) ) {
+                               self._removeTextBlock();
                        } else {
-                               _set( $( this.text_bg[0] ), text0 );
+                               tmpBlock = $view.find( "div.ui-tokentextarea-sblock" );
+                               tmpBlock.removeClass( "ui-tokentextarea-sblock" ).addClass( "ui-tokentextarea-block" );
+                               lastBlock.removeClass( "ui-tokentextarea-block" ).addClass( "ui-tokentextarea-sblock" );
                        }
                },
 
-               text: function ( text0, text1 ) {
-                       if ( text0 === undefined && text1 === undefined ) {
-                               return this._get_text();
+               _ellipsisTextBlock : function ( textBlock ) {
+                       var self = this,
+                               $view = self.element,
+                               maxWidth = self._viewWidth / 2;
+
+                       if ( self._calcBlockWidth( textBlock ) > maxWidth ) {
+                               $( textBlock ).width( maxWidth - self._marginWidth );
                        }
 
-                       this._set_text( text0, text1 );
+                       return textBlock;
                },
 
-               icon: function ( src ) {
-                       if ( src === undefined ) {
+               _modifyInputBoxWidth : function () {
+                       var self = this,
+                               $view = self.element,
+                               margin = 0,
+                               labelWidth = 0,
+                               anchorWidth = 0,
+                               inputBoxWidth = 0,
+                               blocks = $view.find( "div" ),
+                               blockWidth = 0,
+                               index = 0,
+                               inputBoxMargin = 10,
+                               inputBox = $view.find( ".ui-tokentextarea-input" );
+
+                       if ( $view.width() === 0 ) {
                                return;
                        }
 
-                       this.icon_img.detach();
-                       this.icon_img = $( "<img src='" + src + "' class='ui-ticker-icon'>" );
-                       $( this.element ).find(".ui-ticker").append( this.icon_img );
+                       if ( self._labelWidth === 0 ) {
+                               self._labelWidth = $view.find( ".ui-tokentextarea-label" ).outerWidth( true );
+                               self._anchorWidth = $view.find( ".ui-tokentextarea-link-base" ).outerWidth( true );
+                               self._marginWidth = parseInt( ( $( inputBox ).css( "margin-left" ) ), 10 );
+                               self._marginWidth += parseInt( ( $( inputBox ).css( "margin-right" ) ), 10 );
+                               self._viewWidth = $view.innerWidth();
+                       }
+
+                       margin = self._marginWidth;
+                       labelWidth = self._labelWidth;
+                       anchorWidth = self._anchorWidth;
+                       inputBoxWidth = self._viewWidth - labelWidth;
+
+                       for ( index = 0; index < blocks.length; index += 1 ) {
+                               blockWidth = self._calcBlockWidth( blocks[index] );
+
+                               if ( blockWidth >= inputBoxWidth + anchorWidth ) {
+                                       if ( blockWidth >= inputBoxWidth ) {
+                                               inputBoxWidth = self._viewWidth - blockWidth;
+                                       } else {
+                                               inputBoxWidth = self._viewWidth;
+                                       }
+                               } else {
+                                       if ( blockWidth > inputBoxWidth ) {
+                                               inputBoxWidth = self._viewWidth - blockWidth;
+                                       } else {
+                                               inputBoxWidth -= blockWidth;
+                                       }
+                               }
+                       }
+
+                       inputBoxWidth -= margin;
+                       if ( inputBoxWidth < anchorWidth * 2 ) {
+                               inputBoxWidth = self._viewWidth - margin;
+                       }
+                       $( inputBox ).width( inputBoxWidth - anchorWidth - inputBoxMargin );
+               },
+
+               _stringFormat : function ( expression ) {
+                       var pattern = null,
+                               message = expression,
+                               i = 0;
+                       for ( i = 1; i < arguments.length; i += 1 ) {
+                               pattern = "{" + ( i - 1 ) + "}";
+                               message = message.replace( pattern, arguments[i] );
+                       }
+                       return message;
                },
 
-               _refresh: function () {
-                       var container = this._get_container();
-
-                       $( container ).addClass("fix")
-                                       .removeClass("show")
-                                       .removeClass("hide");
+               _resizeBlocks : function () {
+                       var self = this,
+                               $view = self.element,
+                               blocks = $view.find( "div" ),
+                               index = 0;
 
-                       this._set_interval();
+                       for ( index = 0 ; index < blocks.length ; index += 1 ) {
+                               $( blocks[index] ).css( "width", "auto" );
+                               blocks[index] = self._ellipsisTextBlock( blocks[index] );
+                       }
                },
 
-               open: function () {
-                       var container = this._get_container();
-
-                       if ( this.running ) {
-                               this._refresh();
+               //---------------------------------------------------- //
+               //                                      Public Method   //
+               //----------------------------------------------------//
+               //
+               // Focus In Event
+               //
+               focusIn : function () {
+                       if ( this._focusStatus === "focusIn" ) {
                                return;
                        }
 
-                       $( container ).addClass("show")
-                                       .removeClass("hide")
-                                       .removeClass("fix");
-
-                       this.running = true;
+                       var $view = this.element;
 
-                       if ( this.type === 'popup' ) {
-                               this._set_position();
-                       }
+                       $view.find( ".ui-tokentextarea-label" ).attr( "tabindex", 0 ).show();
+                       $view.find( ".ui-tokentextarea-desclabel" ).remove();
+                       $view.find( "div.ui-tokentextarea-sblock" ).removeClass( "ui-tokentextarea-sblock" ).addClass( "ui-tokentextarea-block" );
+                       $view.find( "div" ).attr( { "aria-label" : "double tap to edit", "tabindex" : 0 } ).show();
+                       $view.find( ".ui-tokentextarea-input" ).removeClass( "ui-tokentextarea-input-invisible" ).addClass( "ui-tokentextarea-input-visible" ).attr( "tabindex", 0 );
+                       $view.find( "a" ).attr( "tabindex", 0 ).show();
 
-                       this._set_interval();
+                       // change focus state.
+                       this._modifyInputBoxWidth();
+                       this._focusStatus = "focusIn";
+                       $view.removeClass( "ui-tokentextarea-focusout" ).addClass( "ui-tokentextarea-focusin" ).removeAttr( "tabindex" );
+                       $view.find( ".ui-tokentextarea-input" ).focus();
                },
 
-               close: function () {
-                       var container = this._get_container();
-
-                       if ( !this.running ) {
+               focusOut : function () {
+                       if ( this._focusStatus === "focusOut" ) {
                                return;
                        }
 
-                       $( container ).addClass("hide")
-                                       .removeClass("show")
-                                       .removeClass("fix");
-
-                       this.running = false;
-                       clearInterval( this.interval );
-               },
+                       var self = this,
+                               $view = self.element,
+                               tempBlock = null,
+                               stateBlock = null,
+                               numBlock = null,
+                               statement = "",
+                               index = 0,
+                               lastIndex = 10,
+                               label = $view.find( ".ui-tokentextarea-label" ),
+                               more = $view.find( "span" ),
+                               blocks = $view.find( "div" ),
+                               currentWidth = $view.outerWidth( true ) - more.outerWidth( true ) - label.outerWidth( true ),
+                               blockWidth = 0;
 
-               destroy: function () {
-                       var container = this._get_container();
+                       label.removeAttr( "tabindex" );
+                       $view.find( ".ui-tokentextarea-input" ).removeClass( "ui-tokentextarea-input-visible" ).addClass( "ui-tokentextarea-input-invisible" ).removeAttr( "tabindex" );
+                       $view.find( "a" ).removeAttr( "tabindex" ).hide();
+                       blocks.removeAttr( "aria-label" ).removeAttr( "tabindex" ).hide();
 
-                       $( container ).removeClass("show")
-                                       .removeClass("hide")
-                                       .removeClass("fix");
+                       currentWidth = currentWidth - self._reservedWidth;
 
-                       this._del_event();
+                       for ( index = 0; index < blocks.length; index++ ) {
+                               blockWidth = $( blocks[index] ).outerWidth( true );
+                               if ( currentWidth - blockWidth <= 0 ) {
+                                       lastIndex = index - 1;
+                                       break;
+                               }
 
-                       this.running = false;
-               },
+                               $( blocks[index] ).show();
+                               currentWidth -= blockWidth;
+                       }
 
-               _get_container: function () {
-                       if ( this.type === 'ticker' ) {
-                               return $( this.element ).find(".ui-ticker");
+                       if ( lastIndex !== blocks.length ) {
+                               statement = self._stringFormat( self.options.description, blocks.length - lastIndex - 1 );
+                               tempBlock = $( document.createElement( 'span' ) );
+                               tempBlock.addClass( "ui-tokentextarea-desclabel" ).attr( { "aria-label" : "more, double tap to edit", "tabindex" : "-1" } );
+                               stateBlock = $( document.createElement( 'span' ) ).text( statement ).attr( "aria-hidden", "true" );
+                               numBlock = $( document.createElement( 'span' ) ).text( blocks.length - lastIndex - 1 ).attr( "aria-label", "and" ).css( "visibility", "hidden" );
+                               tempBlock.append( stateBlock );
+                               tempBlock.append( numBlock );
+                               $( blocks[lastIndex] ).after( tempBlock );
                        }
 
-                       return $( this.element ).find(".ui-smallpopup");
+                       // update focus state
+                       this._focusStatus = "focusOut";
+                       $view.removeClass( "ui-tokentextarea-focusin" ).addClass( "ui-tokentextarea-focusout" ).attr( "tabindex", 0 );
                },
 
-               _set_interval: function () {
-                       var self = this;
-
-                       clearInterval( this.interval );
+               inputText : function ( message ) {
+                       var $view = this.element;
 
-                       if ( this.seconds !== undefined && this.second !== 0 ) {
-                               this.interval = setInterval( function () {
-                                       self.close();
-                               }, this.seconds );
+                       if ( arguments.length === 0 ) {
+                               return $view.find( ".ui-tokentextarea-input" ).val();
                        }
+                       $view.find( ".ui-tokentextarea-input" ).val( message );
+                       return message;
                },
 
-               _add_event: function () {
-                       var self = this,
-                               container = this._get_container();
-
-                       if ( this.type === 'ticker' ) {
-                               container.find(".ui-ticker-btn").append( this.btn ).trigger("create");
+               select : function ( index ) {
+                       var $view = this.element,
+                               lockBlock = null,
+                               blocks = null;
 
-                               this.btn.bind( "vmouseup", function () {
-                                       self.close();
-                               });
+                       if ( this._focusStatus === "focusOut" ) {
+                               return;
                        }
 
-                       container.bind( 'vmouseup', function () {
-                               self.close();
-                       });
-               },
-
-               _del_event: function () {
-                       var container = this._get_container();
-
-                       if ( this.type === 'ticker' ) {
-                               this.btn.unbind("vmouseup");
+                       if ( arguments.length === 0 ) {
+                               // return a selected block.
+                               lockBlock = $view.find( "div.ui-tokentextarea-sblock" );
+                               if ( lockBlock ) {
+                                       return lockBlock.text();
+                               }
+                               return null;
                        }
-                       container.unbind('vmouseup');
-                       clearInterval( this.interval );
+                       // 1. unlock all blocks.
+                       this._unlockTextBlock();
+                       // 2. select pointed block.
+                       blocks = $view.find( "div" );
+                       if ( blocks.length > index ) {
+                               $( blocks[index] ).removeClass( "ui-tokentextarea-block" ).addClass( "ui-tokentextarea-sblock" );
+                               $view.trigger( "select" );
+                       }
+                       return null;
                },
 
-               _set_position: function () {
-                       var container = this._get_container(),
-                               $footer = $('.ui-page-active').children('.ui-footer'),
-                               footer_h = $footer.outerHeight() || 0;
+               add : function ( message, position ) {
+                       if ( this._focusStatus === "focusOut" ) {
+                               return;
+                       }
 
-                       container.css( 'bottom', footer_h);
+                       this._addTextBlock( message, position );
                },
 
-               _create: function () {
+               remove : function ( position ) {
                        var self = this,
-                               elem = $( this.element ),
-                               i;
+                               $view = this.element,
+                               blocks = $view.find( "div" ),
+                               index = 0,
+                               _temp = null,
+                               _dummy = function () {};
 
-                       this.btn = $('<div data-role="button" data-inline="true">Close</div>');
+                       if ( this._focusStatus === "focusOut" ) {
+                               return;
+                       }
 
-                       this.seconds = elem.jqmData('interval');
-                       this.type = elem.jqmData('type') || 'popup';
+                       if ( arguments.length === 0 ) {
+                               blocks.fadeOut( "fast", function () {
+                                       blocks.remove();
+                                       self._modifyInputBoxWidth();
+                                       self._trigger( "clear" );
+                               });
+                       } else if ( !isNaN( position ) ) {
+                               // remove selected button
+                               index = ( ( position < blocks.length ) ? position : ( blocks.length - 1 ) );
 
-                       if ( this.type === 'ticker' ) {
-                               elem.wrapInner("<div class='ui-ticker'></div>");
-                               elem.find(".ui-ticker").append("<div class='ui-ticker-body'></div>" +
-                                                       "<div class='ui-ticker-btn'></div>");
-                               this.text_bg = elem.find("p");
+                               $( blocks[index] ).fadeOut( "fast", function () {
+                                       $( blocks[index] ).remove();
+                                       self._modifyInputBoxWidth();
+                               });
 
-                               if ( this.text_bg.length < 2 ) {
-                                       elem.find(".ui-ticker").append("<p></p><p></p>");
-                                       this.text_bg = elem.find("p");
-                               } else if ( this.text_bg.length > 2 ) {
-                                       for ( i = 2; i < this.text_bg.length; i++ ) {
-                                               $( this.text_bg[i] ).css( "display", "none" );
-                                       }
+                               this._eventRemoveCall = true;
+                               if ( $view[0].remove ) {
+                                       _temp = $view[0].remove;
+                                       $view[0].remove = _dummy;
                                }
+                               $view.triggerHandler( "remove" );
+                               if ( _temp) {
+                                       $view[0].remove = _temp;
+                               }
+                               this._eventRemoveCall = false;
+                       }
+               },
 
-                               $( this.text_bg[0] ).addClass("ui-ticker-text1-bg");
-                               $( this.text_bg[1] ).addClass("ui-ticker-text2-bg");
-
-                               this.icon_img = elem.find("img");
+               length : function () {
+                       return this.element.find( "div" ).length;
+               },
 
-                               if ( this.icon_img.length ) {
-                                       $( this.icon_img ).addClass("ui-ticker-icon");
+               refresh : function () {
+                       var self = this,
+                               $view = this.element;
 
-                                       for ( i = 1; i < this.icon_img.length; i++ ) {
-                                               $( this.icon_img[i] ).css( "display", "none" );
-                                       }
-                               }
-                       } else {
-                               elem.wrapInner("<div class='ui-smallpopup'></div>");
-                               this.text_bg = elem.find("p").addClass("ui-smallpopup-text-bg");
+                       self._viewWidth = $view.innerWidth();
+                       self._resizeBlocks();
+                       self._modifyInputBoxWidth();
+               },
 
-                               if ( this.text_bg.length < 1 ) {
-                                       elem.find(".ui-smallpopup")
-                                               .append("<p class='ui-smallpopup-text-bg'></p>");
-                                       this.text_bg = elem.find("p");
-                               } else if ( this.text_bg.length > 1 ) {
-                                       for ( i = 1; i < this.text_bg.length; i++ ) {
-                                               $( this.text_bg[i] ).css( "display", "none" );
-                                       }
-                               }
+               destroy : function () {
+                       var $view = this.element,
+                               _temp = null,
+                               _dummy = function () {};
 
-                               this._set_position();
+                       if ( this._eventRemoveCall ) {
+                               return;
                        }
 
-                       this._add_event();
-
-                       $( window ).bind( "resize", function () {
-                               if ( !self.running ) {
-                                       return;
-                               }
+                       $view.find( ".ui-tokentextarea-label" ).remove();
+                       $view.find( "div" ).undelegate( "click" ).remove();
+                       $view.find( "a" ).remove();
+                       $view.find( ".ui-tokentextarea-input" ).unbind( "keyup" ).remove();
 
-                               self._refresh();
+                       this._eventRemoveCall = true;
+                       if ( $view[0].remove ) {
+                               _temp = $view[0].remove;
+                               $view[0].remove = _dummy;
+                       }
+                       $view.remove();
+                       if ( _temp) {
+                               $view[0].remove = _temp;
+                       }
+                       this._eventRemoveCall = false;
 
-                               if ( self.type === 'popup' ) {
-                                       self._set_position();
-                               }
-                       });
+                       this._trigger( "destroy" );
                }
-       }); // End of widget
+       });
 
-       // auto self-init widgets
-       $( document ).bind( "pagecreate create", function ( e ) {
-               $( e.target ).find(":jqmData(role='notification')").notification();
+       $( document ).bind( "pagecreate create", function () {
+               $( ":jqmData(role='tokentextarea')" ).tokentextarea();
        });
 
-       $( document ).bind( "pagebeforehide", function ( e ) {
-               $( e.target ).find(":jqmData(role='notification')").notification('destroy');
+       $( window ).bind( "resize", function () {
+               $( ":jqmData(role='tokentextarea')" ).tokentextarea( "refresh" );
        });
-}( jQuery, this ));
+} ( jQuery, window, document ) );
 
 
 
 /*
- * jQuery Mobile Widget @VERSION
  *
  * This software is licensed under the MIT licence (as defined by the OSI at
  * http://www.opensource.org/licenses/mit-license.php)
- *
+ * 
  * ***************************************************************************
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
- * Copyright (c) 2011 by Intel Corporation Ltd.
- *
+ * Copyright (C) 2011 by Intel Corporation Ltd.
+ * 
  * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
+ * copy of this software and associated documentation files (the "Software" ),
  * to deal in the Software without restriction, including without limitation
  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  * and/or sell copies of the Software, and to permit persons to whom the
  * Software is furnished to do so, subject to the following conditions:
- *
+ * 
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
- *
+ * 
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -14426,311 +14757,340 @@ If developers do not give a viewport meta tag, Tizen Web UI Framework automatica
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  * DEALINGS IN THE SOFTWARE.
  * ***************************************************************************
- *
- * Authors: Kalyan Kondapally <kalyan.kondapally@intel.com>,
- *          Elliot Smith <elliot.smith@intel.com>
- *          Hyunjung Kim <hjnim.kim@samsung.com>
  */
 
-// Widget which turns a html element into a "swipe":
-// i.e. each list item has a sliding "cover" which can be swiped
-// to the right (to reveal buttons underneath) or left (to
-// cover the buttons again). Clicking on a button under a swipe
-// also moves the cover back to the left.
+// Base class for widgets that need the following features:
 //
-// In this case, the cover is over a grid of buttons;
-// but it is should also be possible to use other types of markup under the
-// list items.
+// I. HTML prototype loading
 //
-// WARNING: This doesn't work well inside a scrollview widget, as
-// the touch events currently interfere with each other badly (e.g.
-// a swipe will work but cause a scroll as well).
+// This class provides HTML prototype loading for widgets. That is, the widget implementation specifies its HTML portions
+// in one continuous HTML snippet, and it optionally provides an object containing selectors into the various parts of the
+// HTML snippet. This widget loads the HTML snippet into a jQuery object, and optionally assigns jQuery objects to each of
+// the selectors in the optionally provided object.
 //
-// Theme: default is to use the theme on the target element,
-// theme passed in options, parent theme, or 'c' if none of the above.
-// If list items are themed individually, the cover will pick up the
-// theme of the list item which is its parent.
+// To use this functionality you can either derive from this class, or you can call its prototype's gtype method.
 //
+// 1. Widgets deriving from this class should define _htmlProto as part of their prototype declaration. _htmlProto looks like
+// this:
+//
+// _htmlProto: {
+//     source: string|jQuery object (optional) default: string - The name of the widget
+//     ui: {
+//         uiElement1: "#ui-element-1-selector",
+//         uiElement2: "#ui-element-2-selector",
+//         ...
+//         subElement: {
+//             subElement1: "#sub-element-1-selector",
+//             subElement2: "#sub-element-2-selector",
+//             ...
+//         }
+//         ...
+//     }
+// }
+//
+// If neither 'source' nor 'ui' are defined, you must still include an empty _htmlProto key (_htmlProto: {}) to indicate
+// that you wish to make use of this feature. This will cause a prototype HTML file named after your widget to be loaded.
+// The loaded prototype will be placed into your widget's prototype's _protoHtml.source key.
+//
+// If 'source' is defined as a string, it is the name of the widget (including namespace). This is the default. If your
+// widget's HTML prototype is loaded via AJAX and the name of the AJAX file is different from the name of your widget
+// (that is, it is not "<widgetName>.prototype.html", then you should explicitly define 'source' as:
+//
+// If you wish to load HTML prototypes via AJAX, modify the getProtoPath() function defined below to reflect the directory
+// structure holding your widget HTML prototypes.
+//
+// source: "alternateWidgetName"
+//
+// If AJAX loading fails, source is set to a jQuery object containing a div with an error message. You can check whether
+// loading failed via the jQuery object's jqmData( "tizen.widgetex.ajax.fail" ) data item. If false, then the jQuery object
+// is the actual prototype loaded via AJAX or present inline. Otherwise, the jQuery object is the error message div.
+//
+// If 'source' is defined as a jQuery object, it is considered already loaded.
+//
+// if 'ui' is defined inside _htmlProto, It is assumed to be an object such that every one of its keys is either a string,
+// or another object with the same properties as itself.
+//
+// When a widget is instantiated, the HTML prototype is loaded if not already present in the prototype. If 'ui' is present
+// inside _htmlProto, the prototype is cloned. Then, a new structure is created based on 'ui' with each selector replaced
+// by a jQuery object containing the results of performing .find() on the prototype's clone with the filter set to the
+// value of the string. In the special case where the selector starts with a '#', the ID is removed from the element after
+// it is assigned into the structure being created. This structure is then made accessible from the widget instance via
+// the '_ui' key (i.e., this._ui).
+//
+// 2. Use the loadPrototype method when your widget does not derive from $.tizen.widgetex:
+// Add _htmlProto to your widget's prototype as described above. Then, in your widget's _create() method, call
+// loadPrototype in the following manner:
+//
+// $.tizen.widgetex.loadPrototype.call(this, "namespace.widgetName" );
+//
+// Thereafter, you may use the HTML prototype from your widget's prototype or, if you have specified a 'ui' key in your
+// _htmlProto key, you may use this._ui from your widget instance.
+//
+// II. realize method
+//
+// When a widget is created, some of its properties cannot be set immediately, because they depend on the widths/heights
+// of its constituent elements. They can only be calculated when the page containing the widget is made visible via the
+// "pageshow" event, because widths/heights always evaluate to 0 when retrieved from a widget that is not visible. When
+// you inherit from widgetex, you can add a "_realize" function to your prototype. This function will be called once right
+// after _create() if the element that anchors your widget is on a visible page. Otherwise, it will be called when the
+// page to which the widget belongs emits the "pageshow" event.
+//
+// NB: If your widget is inside a container which is itself not visible, such as an expandable or a collapsible, your
+// widget will remain hidden even though "pageshow" is fired and therefore _realize is called. In this case, widths and
+// heights will be unreliable even during _realize.
+//
+// III. systematic option handling
+//
+// If a widget has lots of options, the _setOption function can become a long switch for setting each recognized option.
+// It is also tempting to allow options to determine the way a widget is created, by basing decisions on various options
+// during _create(). Often, the actions based on option values in _create() are the same as those in _setOption. To avoid
+// such code duplication, this class calls _setOption once for each option after _create() has completed.
+//
+// Furthermore, to avoid writing long switches in a widget's _setOption method, this class implements _setOption in such
+// a way that, for any given option (e.g. "myOption" ), _setOption looks for a method _setMyOption in the widget's
+// implementation, and if found, calls the method with the value of the option.
+//
+// If your widget does not inherit from widgetex, you can still use widgetex' systematic option handling:
+// 1. define the _setOption method for your widget as follows:
+//      _setOption: $.tizen.widgetex.prototype._setOption
+// 2. Call this._setOptions(this.options) from your widget's _create() function.
+// 3. As with widgetex-derived widgets, implement a corresponding _setMyOptionName function for each option myOptionName
+// you wish to handle.
+//
+// IV. systematic value handling for input elements
+//
+// If your widget happens to be constructed from an <input> element, you have to handle the "value" attribute specially,
+// and you have to emit the "change" signal whenever it changes, in addition to your widget's normal signals and option
+// changes. With widgetex, you can assign one of your widget's "data-*" properties to be synchronized to the "value"
+// property whenever your widget is constructed onto an <input> element. To do this, define, in your prototype:
+//
+// _value: {
+//      attr: "data-my-attribute",
+//      signal: "signal-to-emit"
+// }
+//
+// Then, call this._setValue(newValue) whenever you wish to set the value for your widget. This will set the data-*
+// attribute, emit the custom signal (if set) with the new value as its parameter, and, if the widget is based on an
+// <input> element, it will also set the "value" attribute and emit the "change" signal.
+//
+// "attr" is required if you choose to define "_value", and identifies the data-attribute to set in addition to "value",
+// if your widget's element is an input.
+// "signal" is optional, and will be emitted when setting the data-attribute via this._setValue(newValue).
+//
+// If your widget does not derive from widgetex, you can still define "_value" as described above and call
+// $.tizen.widgetex.setValue(widget, newValue).
+//
+// V. Systematic enabled/disabled handling for input elements
+//
+// widgetex implements _setDisabled which will disable the input associated with this widget, if any. Thus, if you derive
+// from widgetex and you plan on implementing the disabled state, you should chain up to
+// $.tizen.widgetex.prototype._setDisabled(value), rather than $.Widget.prototype._setOption( "disabled", value).
 
-/**
-       @class Swipe
-       The swipe widget shows a view on the screen where the items can be swiped vertically to show a menu.
-       To add a swipe widget to the application, use the following code:
-
-               <ul data-role="listview">
-                       <li data-role="swipe">
-                               <div data-role="swipe-cover">
-                                       <div data-role="button" data-inline="true">OK</div>
-                                       <div data-role="button" data-inline="true">Cancel</div>
-                               </div>
-                               <div data-role="swipe-item-cover">
-                                       <p>This is a swipe item cover.<br>
-                                               This will be swiped out when swipe event comes.</p>
-                               </div>
-                       </li>
-               </ul>
-
-       You can use methods with the swipe as described in the jQueryMobile documentation for view methods.
-*/
-/**
-       @property {String} data-role
-       Creates a swipe using the HTML unordered view (&gt;ul&lt;) element.
-       The default value is swipe.
-
-       Creates a swipe item cover using an HTML $gt;div$lt; element. This cover can be swiped to show the content beneath it.
-       The default value is swipe-item-cover.
-*/
-/**
-       @method open
-       uncover swipe item
-*/
-/**
-       @method close
-       cover swipe item
-*/
-/**
-       @method opened
-       return coveritem status( coverd or uncovred )
-*/
-/**
-       @event animationstart
-       The swipe can define a callback for the animationstart event, which is fired after a item is swipe and the swipe animation is start:
-*/
-/**
-       @event animationend
-       The swipe can define a callback for the animationend event, which is fired after a item is swiped and the swipe animation is complete:
-
-               <ul data-role="listview">
-               <li data-role="swipe">
-                               <div data-role="swipe-cover">
-                                       <div data-role="button" data-inline="true">OK</div>
-                                       <div data-role="button" data-inline="true">Cancel</div>
-                               </div>
-                               <div data-role="swipe-item-cover" id="foo">
-                               <p>This is a swipe item cover.<br>
-                                               This will be swiped out when swipe event comes.</p>
-                               </div>
-                       </li>
-               </ul>
-               $("#foo").bind("animationend", function (ev)
-               {
-                       Console.log("Swipe cover's animation is complete.");
-               });
-*/
-(function ($) {
+(function ($, undefined) {
 
-       $.widget("tizen.swipe", $.mobile.widget, {
-               options: {
-                       theme: null
-               },
+// Framework-specific HTML prototype path for AJAX loads
+       function getProtoPath() {
+               var theScriptTag = $( "script[data-framework-version][data-framework-root][data-framework-theme]" );
 
-               _create: function () {
-                       // use the theme set on the element, set in options,
-                       // the parent theme, or 'c' (in that order of preference)
-                       var theme = this.element.jqmData('theme') ||
-                               this.options.theme ||
-                               this.element.parent().jqmData('theme') ||
-                               's';
+               return (theScriptTag.attr( "data-framework-root" ) + "/" +
+                               theScriptTag.attr( "data-framework-version" ) + "/themes/" +
+                               theScriptTag.attr( "data-framework-theme" ) + "/proto-html" );
+       }
 
-                       this.options.theme = theme;
-                       this._isopen = false;
-                       this.refresh();
+       $.widget( "tizen.widgetex", $.mobile.widget, {
+               _createWidget: function () {
+                       $.tizen.widgetex.loadPrototype.call( this, this.namespace + "." + this.widgetName );
+                       $.mobile.widget.prototype._createWidget.apply( this, arguments );
                },
 
-               refresh: function () {
-                       this._cleanupDom();
-
-                       var self = this,
-                               defaultCoverTheme,
-                               covers,
-                               coverTheme,
-                               item,
-                               itemHasThemeClass;
-
-                       defaultCoverTheme = 'ui-body-' + this.options.theme;
-
-                       if ( !this.element.parent().hasClass('ui-listview') ) {
-                               this.element.parent().listview();
+               _init: function () {
+                       // TODO THIS IS TEMPORARY PATCH TO AVOID CTXPOPUP PAGE CRASH
+                       if ( this.element === undefined ) {
+                               return;
                        }
-                       this.element.addClass('ui-swipe');
 
-                       // get the item covers
-                       covers = this.element.find(':jqmData(role="swipe-item-cover")');
-                       item = this.element.find(':jqmData(role="swipe-item")');
+                       var page = this.element.closest( ".ui-page" ),
+                               self = this,
+                               myOptions = {};
 
-                       this._covers = covers;
-                       this._item = item;
-                       item.addClass('ui-swipe-item');
-                       coverTheme = defaultCoverTheme;
-                       itemHasThemeClass = item.parent().attr('class')
-                                       .match(/ui\-body\-[a-z]|ui\-bar\-[a-z]/);
+                       if ( page.is( ":visible" ) ) {
+                               this._realize();
+                       } else {
+                               page.bind( "pageshow", function () { self._realize(); } );
+                       }
 
-                       covers.each( function () {
-                               var cover = $( this );
+                       $.extend( myOptions, this.options );
 
-                               if ( itemHasThemeClass ) {
-                                       coverTheme = itemHasThemeClass[0];
-                               }
+                       this.options = {};
 
-                               cover.addClass('ui-swipe-item-cover');
-                               cover.addClass( coverTheme );
+                       this._setOptions( myOptions );
+               },
 
-                               if ( cover.has('.ui-swipe-item-cover-inner').length === 0 ) {
-                                       cover.wrapInner( $('<span/>').addClass('ui-swipe-item-cover-inner') );
-                               }
+               _getCreateOptions: function () {
+                       // if we're dealing with an <input> element, value takes precedence over corresponding data-* attribute, if a
+                       // mapping has been established via this._value. So, assign the value to the data-* attribute, so that it may
+                       // then be assigned to this.options in the superclass' _getCreateOptions
 
-                               if ( !( cover.data('animateRight') && cover.data('animateLeft') ) ) {
-                                       cover.data('animateRight', function () {
-                                               self._animateCover( cover, 110, item );
-                                       });
+                       if (this.element.is( "input" ) && this._value !== undefined) {
+                               var theValue =
+                                       ( ( this.element.attr( "type" ) === "checkbox" || this.element.attr( "type" ) === "radio" )
+                                                       ? this.element.is( ":checked" )
+                                                                       : this.element.is( "[value]" )
+                                                                       ? this.element.attr( "value" )
+                                                                                       : undefined);
 
-                                       cover.data('animateLeft', function () {
-                                               self._animateCover( cover, 0, item );
-                                       });
+                               if ( theValue != undefined ) {
+                                       this.element.attr( this._value.attr, theValue );
                                }
+                       }
 
-                               // bind to synthetic events
-                               item.bind( 'swipeleft', cover.data('animateLeft') );
-                               cover.bind( 'swiperight', cover.data('animateRight') );
-                               item.find( '.ui-btn' ).bind( 'vclick', cover.data('animateLeft') );
-                       } );
-
+                       return $.mobile.widget.prototype._getCreateOptions.apply( this, arguments );
                },
 
-               _cleanupDom: function () {
-                       var self = this,
-                               defaultCoverTheme,
-                               cover,
-                               coverTheme = defaultCoverTheme,
-                               item,
-                               itemClass,
-                               itemHasThemeClass,
-                               text,
-                               wrapper;
-
-                       defaultCoverTheme = 'ui-body-' + this.options.theme;
-
-                       this.element.removeClass('ui-swipe');
-
-                       // get the item covers
-                       cover = this.element.find(':jqmData(role="swipe-item-cover")');
-                       item = this.element.find(':jqmData(role="swipe-item")');
-
-                       item.removeClass('ui-swipe-item');
-                       cover.removeClass('ui-swipe-item-cover');
-
-                       itemClass = item.attr('class');
-                       itemHasThemeClass = itemClass &&
-                               itemClass.match(/ui\-body\-[a-z]|ui\-bar\-[a-z]/);
+               _setOption: function ( key, value ) {
+                       var setter = "_set" + key.replace(/^[a-z]/, function (c) { return c.toUpperCase(); } );
 
-                       if ( itemHasThemeClass ) {
-                               coverTheme = itemHasThemeClass[0];
+                       if ( this[setter] !== undefined ) {
+                               this[setter]( value );
+                       } else {
+                               $.mobile.widget.prototype._setOption.apply( this, arguments );
                        }
+               },
 
-                       cover.removeClass(coverTheme);
-
-                       // remove wrapper HTML
-                       wrapper = cover.find('.ui-swipe-item-cover-inner');
-                       wrapper.children().unwrap();
-                       text = wrapper.text();
-
-                       if ( text ) {
-                               cover.append( text );
-                               wrapper.remove();
+               _setDisabled: function ( value ) {
+                       $.Widget.prototype._setOption.call( this, "disabled", value );
+                       if ( this.element.is( "input" ) ) {
+                               this.element.attr( "disabled", value );
                        }
+               },
 
-                       // unbind swipe events
-                       if ( cover.data('animateRight') && cover.data('animateLeft') ) {
-                               cover.unbind( 'swiperight', cover.data('animateRight') );
-                               item.unbind( 'swipeleft', cover.data('animateLeft') );
+               _setValue: function ( newValue ) {
+                       $.tizen.widgetex.setValue( this, newValue );
+               },
 
-                               // unbind clicks on buttons inside the item
-                               item.find('.ui-btn').unbind( 'vclick', cover.data('animateLeft') );
+               _realize: function () {}
+       } );
 
-                               cover.data( 'animateRight', null );
-                               cover.data( 'animateLeft', null );
+       $.tizen.widgetex.setValue = function ( widget, newValue ) {
+               if ( widget._value !== undefined ) {
+                       var valueString = ( widget._value.makeString ? widget._value.makeString(newValue) : newValue ),
+                               inputType;
+
+                       widget.element.attr( widget._value.attr, valueString );
+                       if ( widget._value.signal !== undefined ) {
+                               widget.element.triggerHandler( widget._value.signal, newValue );
                        }
-               },
 
-               // NB I tried to use CSS animations for this, but the performance
-               // and appearance was terrible on Android 2.2 browser;
-               // so I reverted to jQuery animations
-               //
-               // once the cover animation is done, the cover emits an
-               // animationComplete event
-               _animateCover: function ( cover, leftPercentage, item ) {
-                       var self = this,
-                               animationOptions = {
-                                       easing: 'linear',
-                                       duration: 'normal',
-                                       queue: true,
-                                       complete: function () {
-                                               cover.trigger('animationend');
-                                       }
-                               };
+                       if ( widget.element.is( "input" ) ) {
+                               inputType = widget.element.attr( "type" );
 
-                       $( this.element.parent() )
-                               .find(":jqmData(role='swipe')")
-                               .each(
-                                       function () {
-                                               if ( this !== self.element.get(0) &&
-                                                               $( this ).swipe("opened") ) {
-                                                       $( this ).swipe("close");
-                                               }
+                               // Special handling for checkboxes and radio buttons, where the presence of the "checked" attribute is really
+                               // the value
+                               if ( inputType === "checkbox" || inputType === "radio" ) {
+                                       if ( newValue ) {
+                                               widget.element.attr( "checked", true );
+                                       } else {
+                                               widget.element.removeAttr( "checked" );
                                        }
-                               );
+                               } else {
+                                       widget.element.attr( "value", valueString );
+                               }
 
-                       if ( leftPercentage == 110 ) {
-                               this._isopen = true;
-                       } else {
-                               this._isopen = false;
+                               widget.element.trigger( "change" );
                        }
+               }
+       };
 
-                       cover.stop();
-                       cover.clearQueue();
-                       cover.trigger('animationstart');
-                       cover.animate( { left: leftPercentage + '%' }, animationOptions );
-                       if ( leftPercentage == 0 ) {
-                               item.animate({ opacity: 0 }, "slow");
+       $.tizen.widgetex.assignElements = function (proto, obj) {
+               var ret = {},
+                       key;
+
+               for ( key in obj ) {
+                       if ( ( typeof obj[key] ) === "string" ) {
+                               ret[key] = proto.find( obj[key] );
+                               if ( obj[key].match(/^#/) ) {
+                                       ret[key].removeAttr( "id" );
+                               }
                        } else {
-                               item.animate({ opacity: 1 }, "slow");
+                               if ( (typeof obj[key]) === "object" ) {
+                                       ret[key] = $.tizen.widgetex.assignElements( proto, obj[key] );
+                               }
                        }
+               }
 
-               },
+               return ret;
+       };
 
-               destroy: function () {
-                       this._cleanupDom();
-               },
+       $.tizen.widgetex.loadPrototype = function ( widget, ui ) {
+               var ar = widget.split( "." ),
+                       namespace,
+                       widgetName,
+                       source,
+                       noSource = false,
+                       htmlProto,
+                       protoPath;
 
-               open: function () {
-                       var self = this;
+               if ( ar.length == 2 ) {
+                       namespace = ar[0];
+                       widgetName = ar[1];
 
-                       $( self._covers ).each( function () {
-                               var cover = $( this );
-                               self._animateCover( cover, 110, self._item);
-                       } );
-               },
+                       // If htmlProto is defined
+                       if ( $[namespace][widgetName].prototype._htmlProto !== undefined ) {
+                               // If no source is defined, use the widget name
+                               source = $[namespace][widgetName].prototype._htmlProto.source;
+                               if ( source === undefined ) {
+                                       source = widgetName;
+                                       noSource = true;
+                               }
 
-               opened: function () {
-                       return this._isopen;
-               },
+                               // Load the HTML prototype via AJAX if not defined inline
+                               if ( typeof source === "string" ) {
+                                       if ( noSource ) {       // use external htmlproto file
+                                               // Establish the path for the proto file
+                                               widget = source;
+                                               protoPath = getProtoPath();
 
-               close: function () {
-                       var self = this;
+                                               // Make the AJAX call
+                                               $.ajax( {
+                                                       url: protoPath + "/" + widget + ".prototype.html",
+                                                       async: false,
+                                                       dataType: "html"
+                                               }).success( function (data, textStatus, jqXHR ) {
+                                                       source = $( "<div></div>" ).html(data).jqmData( "tizen.widgetex.ajax.fail", false );
+                                               } );
 
-                       $( self._covers ).each( function () {
-                               var cover = $( this );
-                               self._animateCover( cover, 0, self._item);
-                       } );
-               }
+                                               // Assign the HTML proto to the widget prototype
+                                               source  = $( "<div></div>" )
+                                                       .text( "Failed to load proto for widget " + namespace + "." + widgetName + "!" )
+                                                       .css( {background: "red", color: "blue", border: "1px solid black"} )
+                                                       .jqmData( "tizen.widgetex.ajax.fail", true );
 
-       });
+                                       } else {
+                                               // inline definition (string)
+                                               source = $( source ).jqmData( "tizen.widgetex.ajax.fail", false );
+                                       }
 
-       $( document ).bind("pagecreate", function ( e ) {
-               $( e.target ).find(":jqmData(role='swipe')").swipe();
-       });
+                               } else {
+                                       // inline definition (object)
+                                       // AJAX loading has trivially succeeded, since there was no AJAX loading at all
+                                       source.jqmData( "tizen.widgetex.ajax.fail", false );
+                               }
+                               htmlProto = source;
+                               $[namespace][widgetName].prototype._htmlProto.source = source;
 
-}( jQuery ));
+                               // If there's a "ui" portion in the HTML proto, copy it over to this instance, and
+                               // replace the selectors with the selected elements from a copy of the HTML prototype
+                               if ( $[namespace][widgetName].prototype._htmlProto.ui !== undefined ) {
+                                       // Assign the relevant parts of the proto
+                                       $.extend( this, {
+                                               _ui: $.tizen.widgetex.assignElements( htmlProto.clone(), $[namespace][widgetName].prototype._htmlProto.ui )
+                                       });
+                               }
+                       }
+               }
+       };
+
+}( jQuery ) );
 
 
 
@@ -14756,316 +15116,349 @@ If developers do not give a viewport meta tag, Tizen Web UI Framework automatica
  * DEALINGS IN THE SOFTWARE.
  * ***************************************************************************
  *
- * Authors: Wonseop Kim ( wonseop.kim@samsung.com )
-*/
+ *     Author: Minkyu Kang <mk7.kang@samsung.com>
+ */
 
-/**
- * "Handler" is a widget helping a user to scroll a window or panel.
- * It is different from the scrollview feature in that the handler has a fixed size
- * and disappears when a scroll size is smaller than a parent window's size.
- * If the handler widget is activated, a scroll bar on the screen will be deactivated.
- * The handler widget supports scrolling up and down and indicates the position of the scrolled window.
+/*
+ * Notification widget
  *
- * HTML Attributes:
+ * HTML Attributes
  *
- *             data-handler : This attribute is indicating that whether enable.
- *                                             If you want to use, you will set 'true'.
- *             data-handler-theme : Set the widget theme ( optional )
+ *  data-role: set to 'notification'.
+ *  data-type: 'ticker' or 'popup'.
+ *  data-interval: time to showing. If don't set, will show infinitely.
  *
- * APIs:
+ * APIs
  *
- *             enableHandler ( boolean )
- *                     : Get or set the use of handler widget.
- *                     If the value is "true", it will be run handler widget.
- *                     If the value is "false", it will be not run handler widget.
- *                     If no value is specified, will act as a getter.
+ *  open(): open the notification.
+ *  close(): close the notification.
+ *  text(text0, text1): set texts or get texts
+ *  icon(src): set the icon (tickernoti only)
  *
- * Events:
+ * Events
  *
- * Examples:
+ *  N/A
+ *
+ * Examples
+ *
+ * // tickernoti
+ * <div data-role="notification" id="notification" data-type="ticker" data-interval="3000">
+ *     <img src="icon01.png">
+ *     <p>Hello World</p>
+ *     <p>Denis</p>
+ * </div>
+ *
+ * // smallpopup
+ * <div data-role="notification" id="notification" data-type="popup" data-interval="3000">
+ *     <p>Hello World</p>
+ * </div>
  *
- *             <div data-role="content" data-scroll="y" data-handler="true">
- *                     <ul data-role="listview">
- *                             <li data-role="list-divider">A</li>
- *                             <li><a href="#">Adam Kinkaid</a></li>
- *                                     ...
- *                     </ul>
- *             </div>
  */
 
-/**
-       @class handler
-       The handler widget enables the user to vertically scroll through a page or panel using a fixed-size handle. The widget indicates the position of the scrolled window, and only appears on the screen if the parent page or panel's scroll size is larger than the screen size. <br/> To add a handler widget to the application, use the following code:
+/**
+       @class Notification
+       The notification widget shows a pop-up window on the screen to provide notifications.
+       To add a notification widget to the application, use the following code:
+
+               <div data-role="page">
+                       <div data-role="notification" data-type="smallpopup">
+                               <p>text1</p>
+                       </div>
+                       <div data-role="header"></div>
+                       <div data-role="content"></div>
+                       <div data-role="footer"></div>
+               </div>
+*/
+/**
+       @property {String} data-type
+       Defines the notification type. The type options are tickernoti and smallpopup. <br/>The default value is smallpopup.
+
+*/
+/**
+       @property {Integer} data-interval
+       Defines the time to showing a notification widget. <br/>The default is infinitely.
+
+*/
+/**
+       @method open
+       The open method is used to open the notification widget:
+
+               <div data-role="notification" data-type="smallpopup" data-interval="3000"></div>
+               $('#notification').notification('open');
+*/
+/**
+       @method close
+       The close method is used to close the notification widget:
+
+               <div data-role="notification" data-type="smallpopup" data-interval="3000"></div>
+               $('#notification').notification('close');
+*/
+/**
+       @method text
+       The text method is used to set or get the notification text:
+
+               <div data-role="notification" data-type="smallpopup" data-interval="3000"></div>
+               // Set notification text
+               $('#notification').notification('text', 'setThisText');
+               // Get notification text
+               texts = $('#notification').notification('text');
+       @since Tizen2.0
+*/
+/**
+       @method icon
+       The setIcon method is used to set the ticker notification icon. The icon can be set only if the notification type is set to tickernoti.
+
+               <div data-role="notification" data-type="ticker" data-interval="3000"></div>
+               $('#notification').notification('icon', './test.png');
+*/
+(function ( $, window ) {
+       $.widget( "tizen.notification", $.mobile.widget, {
+               btn: null,
+               text_bg: [],
+               icon_img: [],
+               interval: null,
+               seconds: null,
+               running: false,
+
+               _get_text: function () {
+                       var text = new Array( 2 );
+
+                       if ( this.type === 'ticker' ) {
+                               text[0] = $( this.text_bg[0] ).text();
+                               text[1] = $( this.text_bg[1] ).text();
+                       } else {
+                               text[0] = $( this.text_bg[0] ).text();
+                       }
+
+                       return text;
+               },
+
+               _set_text: function ( text0, text1 ) {
+                       var _set = function ( elem, text ) {
+                               if ( !text ) {
+                                       return;
+                               }
+                               elem.text( text );
+                       };
+
+                       if ( this.type === 'ticker' ) {
+                               _set( $( this.text_bg[0] ), text0 );
+                               _set( $( this.text_bg[1] ), text1 );
+                       } else {
+                               _set( $( this.text_bg[0] ), text0 );
+                       }
+               },
+
+               text: function ( text0, text1 ) {
+                       if ( text0 === undefined && text1 === undefined ) {
+                               return this._get_text();
+                       }
+
+                       this._set_text( text0, text1 );
+               },
+
+               icon: function ( src ) {
+                       if ( src === undefined ) {
+                               return;
+                       }
+
+                       this.icon_img.detach();
+                       this.icon_img = $( "<img src='" + src + "' class='ui-ticker-icon'>" );
+                       $( this.element ).find(".ui-ticker").append( this.icon_img );
+               },
 
-               <div data-role="content" data-scroll="y" data-handler="true">
-                       <ul data-role="listview">
-                               <li data-role="list-divider">A</li>
-                               <li><a href="#">Adam Kinkaid</a></li>
-                                       ...
-                       </ul>
-               </div>
-       
-       You can use the enableHandler method with the handler widget to get (if no value is defined) or set the handler usage status. If the [enable] value is true, the handler is enabled; otherwise the handler is not used.
+               _refresh: function () {
+                       var container = this._get_container();
 
-               $("#.selector").scrollview("enableHandler", [enable]);
-*/
-/**
-       @property {Boolean} data-handler
-       Enables the handler widget. The value must be set to true.
-*/
-/**
-       @property {String} data-handler-theme
-       Sets the handler widget theme.
-*/
-( function ( $, document, undefined ) {
-       // The options of handler in scrollview
-       $.tizen.scrollview.prototype.options.handler = false;
-       $.tizen.scrollview.prototype.options.handlerTheme = "s";
+                       $( container ).addClass("fix")
+                                       .removeClass("show")
+                                       .removeClass("hide");
 
-       var originSetOption = $.tizen.scrollview.prototype._setOption,
-               createHandler = function ( target ) {
-                       var $view = target,
-                               prefix = "<div class=\"ui-handler ui-handler-direction-",
-                               suffix = "\"><div class=\"ui-handler-track\"><div class=\"ui-handler-thumb\"></div></div></div>",
-                               scrollview = $view.data( "scrollview" ),
-                               options = scrollview.options,
-                               direction = options.direction,
-                               parentTheme = $.mobile.getInheritedTheme( scrollview, "s" ),
-                               theme = options.theme || parentTheme,
-                               isHorizontal = ( scrollview.options.direction === "x" ),
-                               _$view = scrollview._$view,
-                               _$clip = scrollview._$clip,
-                               scrollbar = $view.find( ".ui-scrollbar" ),
-                               handler = null,
-                               handlerThumb = null,
-                               viewLength = 0,
-                               clipLength = 0,
-                               handlerHeight = 0,
-                               handlerMargin = 0,
-                               trackLength = 0,
-                               moveTimer,
-                               isTouchable = $.support.touch,
-                               dragStartEvt = ( isTouchable ? "touchstart" : "mousedown" ) + ".handler",
-                               dragMoveEvt = ( isTouchable ? "touchmove" : "mousemove" ) + ".handler",
-                               dragStopEvt = ( isTouchable ? "touchend" : "mouseup" ) + ".handler",
-                               dragLeaveEvt = ( isTouchable ? " touchleave" : " mouseleave" ) + ".handler",
-                               calculateLength = function () {
-                                       clipLength = ( isHorizontal ? _$clip.width() : _$clip.height() );
-                                       viewLength = ( isHorizontal ? _$view.width() : _$view.height() ) - clipLength;
-                                       trackLength = clipLength - handlerHeight - handlerMargin * 2;
-                               },
-                               setHanderPostion = function ( scrollPos ) {
-                                       var handlerPos = Math.round( ( isHorizontal ? scrollPos.x : scrollPos.y ) / viewLength * trackLength );
-                                       handlerThumb[0].style[ ( isHorizontal ? "left" : "top" ) ] = handlerPos + "px";
-                               },
-                               stopHandlerScroll = function () {
-                                       $( document ).unbind( ".handler" );
-                                       $view.moveData = null;
-                                       _$view.trigger( "scrollstop" );
-                               };
+                       this._set_interval();
+               },
 
-                       if ( $view.find( ".ui-handler-thumb" ).length !== 0 || typeof direction !== "string" ) {
+               open: function () {
+                       var container = this._get_container();
+
+                       if ( this.running ) {
+                               this._refresh();
                                return;
                        }
 
-                       handler = $( [ prefix, direction, suffix ].join( "" ) ).appendTo( $view.addClass( " ui-handler-" + theme ) );
-                       handlerThumb = $view.find( ".ui-handler-thumb" ).attr( {
-                               "tabindex" : "0",
-                               "aria-label" : ( isHorizontal ? "Horizontal handler, double tap and move to scroll" : "Verticalhandler, double tap and move to scroll" )
-                       }).hide();
-                       handlerHeight = ( isHorizontal ? handlerThumb.width() : handlerThumb.height() );
-                       handlerMargin = ( isHorizontal ? parseInt( handler.css( "right" ), 10 ) : parseInt( handler.css( "bottom" ), 10 ) );
+                       $( container ).addClass("show")
+                                       .removeClass("hide")
+                                       .removeClass("fix");
 
-                       $.extend( $view, {
-                               moveData : null
-                       });
+                       this.running = true;
 
-                       // handler drag
-                       handlerThumb.bind( dragStartEvt, {
-                               e : handlerThumb[0]
-                       }, function ( event ) {
-                               scrollview._stopMScroll();
+                       if ( this.type === 'popup' ) {
+                               this._set_position();
+                       }
 
-                               var target = event.data.e,
-                                       t = ( isTouchable ? event.originalEvent.targetTouches[0] : event );
+                       this._set_interval();
+               },
 
-                               target.style.opacity = 1.0;
+               close: function () {
+                       var container = this._get_container();
 
-                               $view.moveData = {
-                                       target : target,
-                                       X : parseInt( target.style.left, 10 ) || 0,
-                                       Y : parseInt( target.style.top, 10 ) || 0,
-                                       pX : t.pageX,
-                                       pY : t.pageY
-                               };
-                               calculateLength();
+                       if ( !this.running ) {
+                               return;
+                       }
 
-                               _$view.trigger( "scrollstart" );
+                       $( container ).addClass("hide")
+                                       .removeClass("show")
+                                       .removeClass("fix");
 
-                               if ( !isTouchable ) {
-                                       event.preventDefault();
-                               }
+                       this.running = false;
+                       clearInterval( this.interval );
+               },
 
-                               $( document ).bind( dragMoveEvt, function ( event ) {
-                                       var moveData = $view.moveData,
-                                               target = moveData.target,
-                                               handlePos = 0,
-                                               scrollPos = 0,
-                                               t = ( isTouchable ? event.originalEvent.targetTouches[0] : event );
+               destroy: function () {
+                       var container = this._get_container();
 
-                                       handlePos = ( isHorizontal ? moveData.X + t.pageX - moveData.pX : moveData.Y + t.pageY - moveData.pY );
+                       $( container ).removeClass("show")
+                                       .removeClass("hide")
+                                       .removeClass("fix");
 
-                                       if ( handlePos < 0 ) {
-                                               handlePos = 0;
-                                       }
+                       this._del_event();
 
-                                       if ( handlePos > trackLength ) {
-                                               handlePos = trackLength;
-                                       }
-                                       scrollPos = - Math.round( handlePos / trackLength * viewLength );
+                       this.running = false;
+               },
 
-                                       if ( isHorizontal ) {
-                                               scrollview._setScrollPosition( scrollPos, 0 );
-                                               target.style.left = handlePos + "px";
-                                       } else {
-                                               scrollview._setScrollPosition( 0, scrollPos );
-                                               target.style.top = handlePos + "px";
-                                       }
+               _get_container: function () {
+                       if ( this.type === 'ticker' ) {
+                               return $( this.element ).find(".ui-ticker");
+                       }
 
-                                       event.preventDefault();
-                               }).bind( dragStopEvt + dragLeaveEvt, function ( event ) {
-                                       stopHandlerScroll();
+                       return $( this.element ).find(".ui-smallpopup");
+               },
+
+               _set_interval: function () {
+                       var self = this;
+
+                       clearInterval( this.interval );
+
+                       if ( this.seconds !== undefined && this.second !== 0 ) {
+                               this.interval = setInterval( function () {
+                                       self.close();
+                               }, this.seconds );
+                       }
+               },
+
+               _add_event: function () {
+                       var self = this,
+                               container = this._get_container();
+
+                       if ( this.type === 'ticker' ) {
+                               container.find(".ui-ticker-btn").append( this.btn ).trigger("create");
+
+                               this.btn.bind( "vmouseup", function () {
+                                       self.close();
                                });
-                       });
+                       }
 
-                       _$view.bind( dragStopEvt, function ( event ) {
-                               stopHandlerScroll();
+                       container.bind( 'vmouseup', function () {
+                               self.close();
                        });
+               },
 
-                       $view.bind( "scrollstart", function ( event ) {
-                               if ( !scrollview.enableHandler() ) {
-                                       return;
-                               }
+               _del_event: function () {
+                       var container = this._get_container();
 
-                               calculateLength();
+                       if ( this.type === 'ticker' ) {
+                               this.btn.unbind("vmouseup");
+                       }
+                       container.unbind('vmouseup');
+                       clearInterval( this.interval );
+               },
 
-                               if ( viewLength < 0 || clipLength < handlerHeight ) {
-                                       if ( scrollbar.is( ":hidden" ) ) {
-                                               scrollbar.show();
-                                       }
-                                       return;
-                               }
+               _set_position: function () {
+                       var container = this._get_container(),
+                               $footer = $('.ui-page-active').children('.ui-footer'),
+                               footer_h = $footer.outerHeight() || 0;
 
-                               if ( scrollbar.is( ":visible" ) ) {
-                                       scrollbar.hide();
+                       container.css( 'bottom', footer_h);
+               },
+
+               _create: function () {
+                       var self = this,
+                               elem = $( this.element ),
+                               i;
+
+                       this.btn = $('<div data-role="button" data-inline="true">Close</div>');
+
+                       this.seconds = elem.jqmData('interval');
+                       this.type = elem.jqmData('type') || 'popup';
+
+                       if ( this.type === 'ticker' ) {
+                               elem.wrapInner("<div class='ui-ticker'></div>");
+                               elem.find(".ui-ticker").append("<div class='ui-ticker-body'></div>" +
+                                                       "<div class='ui-ticker-btn'></div>");
+                               this.text_bg = elem.find("p");
+
+                               if ( this.text_bg.length < 2 ) {
+                                       elem.find(".ui-ticker").append("<p></p><p></p>");
+                                       this.text_bg = elem.find("p");
+                               } else if ( this.text_bg.length > 2 ) {
+                                       for ( i = 2; i < this.text_bg.length; i++ ) {
+                                               $( this.text_bg[i] ).css( "display", "none" );
+                                       }
                                }
 
-                               if ( moveTimer ) {
-                                       clearInterval( moveTimer );
-                                       moveTimer = undefined;
-                               }
+                               $( this.text_bg[0] ).addClass("ui-ticker-text1-bg");
+                               $( this.text_bg[1] ).addClass("ui-ticker-text2-bg");
 
-                               handler.addClass( "ui-handler-visible" );
-                               handlerThumb.stop( true, true )
-                                                       .fadeIn();
-                       }).bind( "scrollupdate", function ( event, data ) {
-                               if ( !scrollview.enableHandler() || viewLength < 0 || clipLength < handlerHeight ) {
-                                       return;
-                               }
+                               this.icon_img = elem.find("img");
 
-                               setHanderPostion( scrollview.getScrollPosition() );
-                       }).bind( "scrollstop", function ( event ) {
-                               if ( !scrollview.enableHandler() || viewLength < 0 || clipLength < handlerHeight ) {
-                                       return;
-                               }
+                               if ( this.icon_img.length ) {
+                                       $( this.icon_img ).addClass("ui-ticker-icon");
 
-                               moveTimer = setInterval( function () {
-                                       setHanderPostion( scrollview.getScrollPosition() );
-                                       if ( !scrollview._gesture_timer ) {
-                                               clearInterval( moveTimer );
-                                               moveTimer = undefined;
+                                       for ( i = 1; i < this.icon_img.length; i++ ) {
+                                               $( this.icon_img[i] ).css( "display", "none" );
                                        }
-                               }, 10 );
-
-                               if ( scrollview._handlerTimer ) {
-                                       clearTimeout( scrollview._handlerTimer );
-                                       scrollview._handlerTimer = 0;
                                }
-                               scrollview._handlerTimer = setTimeout( function () {
-                                       if ( scrollview._timerID === 0 && $view.moveData === null ) {
-                                               handlerThumb.stop( true, true )
-                                                       .css( "opacity", 1.0 )
-                                                       .fadeOut( function () {
-                                                               handler.removeClass( "ui-handler-visible" );
-                                                       });
-                                               scrollview._handlerTimer = 0;
-                                       }
-                               }, 1000 );
-                       }).bind( "mousewheel", function ( event ) {
-                               handler.removeClass( "ui-handler-visible" );
-                               setHanderPostion( scrollview.getScrollPosition() );
-                       });
-               };
-
-       $.extend( $.tizen.scrollview.prototype, {
-               enableHandler: function ( enabled ) {
-                       if ( typeof enabled === 'undefined' ) {
-                               return this.options.handler;
-                       }
-
-                       this.options.handler = !!enabled;
+                       } else {
+                               elem.wrapInner("<div class='ui-smallpopup'></div>");
+                               this.text_bg = elem.find("p").addClass("ui-smallpopup-text-bg");
 
-                       var $view = this.element;
-                       if ( this.options.handler ) {
-                               if ( $view.find( ".ui-handler" ).length === 0 ) {
-                                       createHandler( $view );
+                               if ( this.text_bg.length < 1 ) {
+                                       elem.find(".ui-smallpopup")
+                                               .append("<p class='ui-smallpopup-text-bg'></p>");
+                                       this.text_bg = elem.find("p");
+                               } else if ( this.text_bg.length > 1 ) {
+                                       for ( i = 1; i < this.text_bg.length; i++ ) {
+                                               $( this.text_bg[i] ).css( "display", "none" );
+                                       }
                                }
 
-                               $view.find( ".ui-scrollbar" ).hide();
-                               $view.find( ".ui-handler" ).show();
-                       } else {
-                               $view.find( ".ui-handler" ).removeClass( "ui-handler-visible" ).hide();
-                               $view.find( ".ui-scrollbar" ).show();
+                               this._set_position();
                        }
-               },
 
-               _setHandlerTheme: function ( handlerTheme ) {
-                       if ( !handlerTheme ) {
-                               return;
-                       }
+                       this._add_event();
 
-                       var oldClass = "ui-handler-" + this.options.handlerTheme,
-                               newClass = "ui-handler-" + handlerTheme;
+                       $( window ).bind( "resize", function () {
+                               if ( !self.running ) {
+                                       return;
+                               }
 
-                       this.element.removeClass( oldClass ).addClass( newClass );
-                       this.options.handlerTheme = handlerTheme;
-               },
+                               self._refresh();
 
-               _setOption: function ( key, value ) {
-                       switch ( key ) {
-                       case "handler":
-                               this.enableHandler( value );
-                               break;
-                       case "handlerTheme":
-                               this._setHandlerTheme( value );
-                               break;
-                       default:
-                               originSetOption.call( this, key, value );
-                       }
-               },
+                               if ( self.type === 'popup' ) {
+                                       self._set_position();
+                               }
+                       });
+               }
+       }); // End of widget
 
-               _handlerTimer : 0
+       // auto self-init widgets
+       $( document ).bind( "pagecreate create", function ( e ) {
+               $( e.target ).find(":jqmData(role='notification')").notification();
        });
 
-       $( document ).delegate( ":jqmData(scroll)", "scrollviewcreate", function () {
-               var widget = $( this );
-               if ( widget.attr( "data-" + $.mobile.ns + "scroll" ) === "none"
-                               || widget.attr( "data-" + $.mobile.ns + "handler" ) !== "true" ) {
-                       return;
-               }
-               widget.scrollview( "enableHandler", "true" );
+       $( document ).bind( "pagebeforehide", function ( e ) {
+               $( e.target ).find(":jqmData(role='notification')").notification('destroy');
        });
-} ( jQuery, document ) );
+}( jQuery, this ));
 
 
 
@@ -15091,377 +15484,248 @@ If developers do not give a viewport meta tag, Tizen Web UI Framework automatica
  * DEALINGS IN THE SOFTWARE.
  * ***************************************************************************
  *
- *     Author: Jinhyuk Jun <jinhyuk.jun@samsung.com>
- */
-
-(function ( $, undefined ) {
-
-       $.widget( "mobile.pagelayout", $.mobile.widget, {
-               options: {
-                       visibleOnPageShow: true,
-                       disablePageZoom: true,
-                       transition: "slide", //can be none, fade, slide (slide maps to slideup or slidedown)
-                       fullscreen: false,
-                       tapToggle: true,
-                       tapToggleBlacklist: "a, input, select, textarea, .ui-header-fixed, .ui-footer-fixed",
-                       hideDuringFocus: "input, textarea, select",
-                       updatePagePadding: true,
-                       // Browser detection! Weeee, here we go...
-                       // Unfortunately, position:fixed is costly, not to mention probably impossible, to feature-detect accurately.
-                       // Some tests exist, but they currently return false results in critical devices and browsers, which could lead to a broken experience.
-                       // Testing fixed positioning is also pretty obtrusive to page load, requiring injected elements and scrolling the window
-                       // The following function serves to rule out some popular browsers with known fixed-positioning issues
-                       // This is a plugin option like any other, so feel free to improve or overwrite it
-                       supportBlacklist: function () {
-                               var w = window,
-                                       ua = navigator.userAgent,
-                                       platform = navigator.platform,
-                                       // Rendering engine is Webkit, and capture major version
-                                       wkmatch = ua.match( /AppleWebKit\/([0-9]+)/ ),
-                                       wkversion = !!wkmatch && wkmatch[ 1 ],
-                                       ffmatch = ua.match( /Fennec\/([0-9]+)/ ),
-                                       ffversion = !!ffmatch && ffmatch[ 1 ],
-                                       operammobilematch = ua.match( /Opera Mobi\/([0-9]+)/ ),
-                                       omversion = !!operammobilematch && operammobilematch[ 1 ];
-
-                               if (
-                                       // iOS 4.3 and older : Platform is iPhone/Pad/Touch and Webkit version is less than 534 (ios5)
-                                       ( ( platform.indexOf( "iPhone" ) > -1 || platform.indexOf( "iPad" ) > -1  || platform.indexOf( "iPod" ) > -1 ) && wkversion && wkversion < 534 ) ||
-                                               // Opera Mini
-                                               ( w.operamini && ({}).toString.call( w.operamini ) === "[object OperaMini]" ) ||
-                                               ( operammobilematch && omversion < 7458 ) ||
-                                               //Android lte 2.1: Platform is Android and Webkit version is less than 533 (Android 2.2)
-                                               ( ua.indexOf( "Android" ) > -1 && wkversion && wkversion < 533 ) ||
-                                               // Firefox Mobile before 6.0 -
-                                               ( ffversion && ffversion < 6 ) ||
-                                               // WebOS less than 3
-                                               ( window.palmGetResource !== undefined && wkversion && wkversion < 534 ) ||
-                                               // MeeGo
-                                               ( ua.indexOf( "MeeGo" ) > -1 && ua.indexOf( "NokiaBrowser/8.5.0" ) > -1 )
-                               ) {
-                                       return true;
-                               }
-
-                               return false;
-                       },
-                       initSelector: ":jqmData(role='content')"
-               },
-
-               _create: function () {
-
-                       var self = this,
-                               o = self.options,
-                               $el = self.element;
-
-                       // Feature detecting support for
-                       if ( o.supportBlacklist() ) {
-                               self.destroy();
-                               return;
-                       }
-
-                       self._addFixedClass();
-                       self._addTransitionClass();
-                       self._bindPageEvents();
-
-                       // only content
-                       self._bindContentControlEvents();
-               },
-
-               /* add minimum fixed css style to bar(header/footer) and content
-               *  it need to update when core source modified(jquery.mobile.page.section.js)
-               *  modified from core source cuz initSelector different */
-               _addFixedClass: function () {
-                       var self = this,
-                               o = self.options,
-                               $el = self.element,
-                               $elHeader = $el.siblings( ":jqmData(role='header')" ),
-                               $elFooter = $el.siblings( ":jqmData(role='footer')" ),
-                               $elPage = $el.closest(".ui-page");
-
-                       $elHeader.addClass( "ui-header-fixed" );
-                       $elFooter.addClass( "ui-footer-fixed" );
-
-                       // "fullscreen" overlay positioning
-                       if ( o.fullscreen ) {
-                               $elHeader.addClass( "ui-header-fullscreen" );
-                               $elFooter.addClass( "ui-footer-fullscreen" );
-                               $elPage
-                                       .addClass( "ui-page-header-fullscreen" )
-                                       .addClass( "ui-page-footer-fullscreen" );
-                       } else {
-                       // If not fullscreen, add class to page to set top or bottom padding
-                               $elPage.addClass( "ui-page-header-fixed" )
-                                       .addClass( "ui-page-footer-fixed" );
-                       }
-               },
+ * jQuery Mobile Framework : "tabbar" plugin
+ * Copyright (c) jQuery Project
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ * Authors: Jinhyuk Jun <jinhyuk.jun@samsung.com>
+*/
 
-               /* original core source(jquery.mobile.fixedToolbar.js)
-               * never changed */
-               _addTransitionClass: function () {
-                       var tclass = this.options.transition;
+/**
+ *  Tabbar can be created using data-role = "tabbar" inside footer 
+ *  Framework determine which tabbar will display with tabbar attribute
+ *
+ * Examples:
+ *         
+ *     HTML markup for creating tabbar: ( 2 ~ 5 li item available )
+ *     icon can be changed data-icon attribute (customized icon need)
+ *         <div data-role="footer" data-position ="fixed">
+ *              <div data-role="tabbar">
+ *                     <ul>
+ *                            <li><a href="#" class="ui-btn-active">Menu</a></li>
+ *                            <li><a href="#">Save</a></li>
+ *                            <li><a href="#">Share</a></li>
+ *                     </ul>
+ *             </div>
+ *      </div>
+*/
 
-                       if ( tclass && tclass !== "none" ) {
-                               // use appropriate slide for header or footer
-                               if ( tclass === "slide" ) {
-                                       tclass = this.element.is( ".ui-header" ) ? "slidedown" : "slideup";
-                               }
+(function ( $, undefined ) {
 
-                               this.element.addClass( tclass );
-                       }
+       $.widget( "tizen.tabbar", $.mobile.widget, {
+               options: {
+                       iconpos: "top",
+                       grid: null,
+                       defaultList : 4,
+                       initSelector: ":jqmData(role='tabbar')"
                },
 
+               _create: function () {
 
-               /* Set default page positon
-               * 1. add title style to header
-               * 2. Set default header/footer position */
-               setHeaderFooter: function ( thisPage ) {
-                       var $elPage = $( thisPage ),
-                               $elHeader = $elPage.find( ":jqmData(role='header')" ).length ? $elPage.find( ":jqmData(role='header')") : $elPage.siblings( ":jqmData(role='header')"),
-                               $elContent = $elPage.find( ".ui-content" ),
-                               $elFooter = $elPage.find( ":jqmData(role='footer')" ),
-                               $elFooterGroup = $elFooter.find( ":jqmData(role='fieldcontain')" ),
-                               $elFooterControlGroup = $elFooter.find( ".ui-controlgroup" );
-
-                       // divide content mode scrollview and non-scrollview
-                       if ( !$elPage.is( ".ui-dialog" ) ) {
-                               if ( $elHeader.jqmData("position") == "fixed" || ( $.support.scrollview && $.tizen.frameworkData.theme.match(/tizen/) ) ) {
-                                       $elHeader
-                                               .css( "position", "fixed" )
-                                               .css( "top", "0px" );
-                               } else if ( !$.support.scrollview && $elHeader.jqmData("position") != "fixed" ) {
-                                       $elHeader.css( "position", "relative" );
-                               }
-                       }
+                       var $tabbar = this.element,
+                               $tabbtns,
+                               textpos,
+                               iconpos,
+                               theme = $.mobile.listview.prototype.options.theme,      /* Get current theme */
+                               ww = window.innerWidth || $( window ).width(),
+                               wh = window.innerHeight || $( window ).height(),
+                               tabbarDividerLeft = "<div class='ui-tabbar-divider ui-tabbar-divider-left'></div>",
+                               tabbarDividerRight = "<div class='ui-tabbar-divider ui-tabbar-divider-right'></div>",
+                               isLandscape;
 
-                       /* set Title style */
-                       if ( $elHeader.find("span.ui-title-text-sub").length ) {
-                               $elHeader.addClass( "ui-title-multiline");
-                       }
+                       isLandscape = ww > wh && ( ww - wh );
 
-                       if ( $elFooterGroup.find( "div" ).is( ".ui-controlgroup-label" ) ) {
-                               $elFooterGroup.find( "div.ui-controlgroup-label" ).remove();
+                       if ( isLandscape ) {
+                               $tabbar.removeClass( "ui-portrait-tabbar" ).addClass( "ui-landscape-tabbar" );
+                       } else {
+                               $tabbar.removeClass( "ui-landscape-tabbar" ).addClass( "ui-portrait-tabbar" );
                        }
 
-                       if ( $elFooterControlGroup.length ) {
-                               var anchorPer = 100 / $elFooterControlGroup.find( "a" ).length;
-                               $elFooterControlGroup.find( "a" ).each( function ( i ) {
-                                       $elFooterControlGroup.find( "a" ).eq( i ).width( anchorPer + "%" );
-                               });
+                       if ( $tabbar.find( "a" ).length ) {
+                               $tabbtns = $tabbar.find( "a" );
+                               iconpos = $tabbtns.filter( ":jqmData(icon)" ).length ? this.options.iconpos : undefined;
+                               textpos = $tabbtns.html().length ? true : false;
                        }
-               },
-
-               _bindPageEvents: function () {
-                       var self = this,
-                               o = self.options,
-                               $el = self.element,
-                               $elCurrentFooter;
-
-                       //page event bindings
-                       // Fixed toolbars require page zoom to be disabled, otherwise usability issues crop up
-                       // This method is meant to disable zoom while a fixed-positioned toolbar page is visible
-                       $el.closest( ".ui-page" )
-                               .bind( "pagebeforeshow", function ( event ) {
-                                       var thisPage = this;
-                                       if ( o.disablePageZoom ) {
-                                               $.mobile.zoom.disable( true );
-                                       }
-                                       if ( !o.visibleOnPageShow ) {
-                                               self.hide( true );
-                                       }
-                                       self.setHeaderFooter( thisPage );
-                                       self._setContentMinHeight( thisPage );
-                               } )
-                               .bind( "webkitAnimationStart animationstart updatelayout", function ( e, data ) {
-                                       var thisPage = this;
-                                       if ( o.updatePagePadding ) {
-                                               self.updatePagePadding(thisPage);
-                                               self.updatePageLayout( thisPage, data);
-                                       }
-                               })
-
-                               .bind( "pageshow", function ( event ) {
-                                       var thisPage = this;
-                                       self._setContentMinHeight( thisPage );
-                                       self.updatePagePadding( thisPage );
-                                       self._updateHeaderArea( thisPage );
-                                       if ( o.updatePagePadding ) {
-                                               $( window ).bind( "throttledresize." + self.widgetName, function () {
-                                                       self.updatePagePadding(thisPage);
-
-                                                       self.updatePageLayout( thisPage, false);
-                                                       self._updateHeaderArea( thisPage );
-                                                       self._setContentMinHeight( thisPage );
-                                               });
-                                       }
-                               })
 
-                               .bind( "pagebeforehide", function ( e, ui ) {
-                                       if ( o.disablePageZoom ) {
-                                               $.mobile.zoom.enable( true );
-                                       }
-                                       if ( o.updatePagePadding ) {
-                                               $( window ).unbind( "throttledresize." + self.widgetName );
-                                       }
-                               });
+                       if ( $tabbar.parents( ".ui-header" ).length && $tabbar.parents( ".ui-scrollview-view" ).length ) {
+                               $tabbar.find( "li" ).addClass( "tabbar-scroll-li" );
+                               $tabbar.find( "ul" ).addClass( "tabbar-scroll-ul" );
 
-                       window.addEventListener( "softkeyboardchange", function ( e ) {
-                               var $elDownBtn = $( "<div class='ui-btn-footer-down'></div>" ),
-                                       $elPage = $( ".ui-page-active" ),
-                                       backBtnPosition = "footer";
+                               /* add shadow divider */
+                               $( tabbarDividerLeft ).appendTo( $tabbar.parents( ".ui-scrollview-clip" ) );
+                               $( tabbarDividerRight ).appendTo( $tabbar.parents( ".ui-scrollview-clip" ) );
 
-                               if ( $elPage.data( "addBackBtn" ) ) {
-                                       $elPage.data( "addBackBtn" ) == "header" ? backBtnPosition = "header" : backBtnPosition = "footer";
+                               $( ".ui-tabbar-divider-left" ).hide();
+                               $( ".ui-tabbar-divider-right" ).hide();
 
-                                       if ( e.state == "on" ) {
-                                               if ( !$elPage.find( ".ui-" + backBtnPosition + " .ui-btn-footer-down" ).length ) {
-                                                       $elDownBtn.buttonMarkup( { icon: "down" } ).appendTo( $elPage.find( ".ui-" + backBtnPosition ) );
-                                                       $( ".ui-btn-footer-down" ).bind( "vclick",  function ( ) {
-                                                               $elPage.find( "input" ).blur();
-                                                       });
-                                               }
-                                               $( ".ui-page-active .ui-btn-back" ).remove();
-                                       } else if ( e.state == "off" ) {
-                                               $elPage.page( "addBackBtn", backBtnPosition );
-                                               $( ".ui-btn-footer-down" ).remove();
-                                       }
+                               /* add width calculation*/
+                               if ( $tabbar.parents( ".ui-scrollview-view" ).data("default-list") ) {
+                                       this.options.defaultList = $tabbar.parents( ".ui-scrollview-view" ).data( "default-list" );
+                               }
+                               $tabbar.find( "li" ).css( "width", window.innerWidth / this.options.defaultList + "px" );
+                       } else {
+                               if ( $tabbar.find( "ul" ).children().length ) {
+                                       $tabbar.addClass( "ui-navbar" )
+                                               .find( "ul" )
+                                               .grid( { grid: this.options.grid } );
                                }
+                       }
 
-                       });
-               },
+                       if ( $tabbar.parents( ".ui-footer" ).length  ) {
+                               $tabbar.find( "li" ).addClass( "ui-tab-btn-style" );
+                       }
 
-               _bindContentControlEvents: function () {
-                       var self = this,
-                               o = self.options,
-                               $el = self.element;
+                       /* title tabbar */
+                       if ( $tabbar.siblings( ".ui-title" ).length ) {
+                               $tabbar.parents( ".ui-header" ).addClass( "ui-title-tabbar" );
+                       }
 
-                       $el.closest( ".ui-page" )
-                               .bind( "pagebeforeshow", function ( event ) {
+                       if ( !iconpos ) {
+                               $tabbar.addClass( "ui-tabbar-noicons" );
+                       }
+                       if ( !textpos ) {
+                               $tabbar.addClass( "ui-tabbar-notext" );
+                       }
+                       if ( textpos && iconpos ) {
+                               $tabbar.parents( ".ui-header" ).addClass( "ui-title-tabbar-multiline" );
+                       }
 
+                       if ( $tabbar.find( "a" ).length ) {
+                               $tabbtns.buttonMarkup({
+                                       corners:        false,
+                                       shadow:         false,
+                                       iconpos:        iconpos
                                });
-               },
-
-               _setContentMinHeight : function ( thisPage ) {
-                       var $elPage = $( thisPage ),
-                               $elHeader = $elPage.find( ":jqmData(role='header')" ),
-                               $elFooter = $elPage.find( ":jqmData(role='footer')" ),
-                               $elContent = $elPage.find( ":jqmData(role='content')" ),
-                               resultMinHeight;
-
-                       resultMinHeight = window.innerHeight - $elHeader.height() - $elFooter.height();
-
-                       $elContent.css( "min-height", resultMinHeight - parseFloat( $elContent.css("padding-top") ) - parseFloat( $elContent.css("padding-bottom") ) + "px" );
-               },
-
-               _updateHeaderArea : function ( thisPage ) {
-                       var $elPage = $( thisPage ),
-                               $elHeader = $elPage.find( ":jqmData(role='header')" ).length ? $elPage.find( ":jqmData(role='header')") : $elPage.siblings( ":jqmData(role='header')"),
-                               headerBtnNum = $elHeader.children("a").length,
-                               headerSrcNum = $elHeader.children("img").length;
+                       }
 
-                       if ( !$elPage.is( ".ui-dialog" ) ) {
-                               $elHeader.find( "h1" ).css( "width", window.innerWidth - parseInt( $elHeader.find( "h1" ).css( "margin-left" ), 10 ) * 2 - $elHeader.children( "a" ).width() * headerBtnNum - $elHeader.children( "a" ).width() / 4 - $elHeader.children( "img" ).width() * headerSrcNum * 4 );
+                       if ( $tabbar.find( ".ui-state-persist" ).length ) {
+                               $tabbar.addClass( "ui-tabbar-persist" );
                        }
-                       /* add half width for default space between text and button, and img tag area is too narrow, so multiply three for img width*/
-               },
 
-               _visible: true,
+                       $tabbar.delegate( "a", "vclick", function ( event ) {
+                               $tabbtns.not( ".ui-state-persist" ).removeClass( $.mobile.activeBtnClass );
+                               $( this ).addClass( $.mobile.activeBtnClass );
+                       });
 
-               // This will set the content element's top or bottom padding equal to the toolbar's height
-               updatePagePadding: function ( tbPage ) {
-                       var $el = this.element,
-                               header = $el.siblings( ".ui-header" ).length,
-                               footer = $el.siblings( ".ui-footer" ).length;
+                       $tabbar.addClass( "ui-tabbar");
 
-                       // This behavior only applies to "fixed", not "fullscreen"
-                       if ( this.options.fullscreen ) {
-                               return;
-                       }
+                       $( document ).bind( "pagebeforeshow", function ( event, ui ) {
+                               var footer_filter = $( event.target ).find( ":jqmData(role='footer')" ),
+                                       tabbar_filter = footer_filter.find( ":jqmData(role='tabbar')" ),
+                                       $elFooterMore = tabbar_filter.siblings( ":jqmData(icon='naviframe-more')" ),
+                                       $elFooterBack = tabbar_filter.siblings( ".ui-btn-back" );
 
-                       tbPage = tbPage || $el.closest( ".ui-page" );
+                               footer_filter
+                                       .css( "position", "fixed" )
+                                       .css( "bottom", 0 )
+                                       .css( "height", tabbar_filter.height() );
+                               if ( $elFooterMore.length ) {
+                                       tabbar_filter.addClass( "ui-tabbar-margin-more" );
+                               }
+                               if ( $elFooterBack.length ) {
+                                       tabbar_filter.addClass( "ui-tabbar-margin-back" );
+                               }
+                       });
 
-                       if ( $el.siblings( ".ui-header" ).jqmData("position") == "fixed" || $.support.scrollview ) {
-                               $( tbPage ).css( "padding-top", ( header ? $el.siblings( ".ui-header" ).outerHeight() : 0 ) );
-                       }
-                       $( tbPage ).css( "padding-bottom", ( footer ? $el.siblings( ".ui-footer" ).outerHeight() : 0 ) );
-               },
+                       $tabbar.bind( "touchstart vmousedown", function ( e ) {
+                               var $tabbarScroll = $( e.target ).parents( ".ui-scrollview-view" );
+                               if ( $tabbarScroll.offset() ) {
+                                       if ( $tabbarScroll.offset().left < 0 ) {
+                                               $( ".ui-tabbar-divider-left" ).show();
+                                       } else {
+                                               $( ".ui-tabbar-divider-left" ).hide();
+                                       }
+                                       if ( ( $tabbarScroll.width() - $tabbarScroll.parents( ".ui-scrollview-clip" ).width() ) ==  Math.abs( $tabbarScroll.offset().left ) ) {
+                                               $( ".ui-tabbar-divider-right" ).hide();
+                                       } else {
+                                               $( ".ui-tabbar-divider-right" ).show();
+                                       }
+                               }
+                       });
 
-               /* 1. Calculate and update content height   */
-               updatePageLayout: function ( thisPage, receiveType ) {
-                       var $elFooter,
-                               $elPage = $( thisPage ),
-                               $elHeader = $elPage.find( ":jqmData(role='header')" ),
-                               $elContent = $elPage.find( ":jqmData(role='content')" ),
-                               resultContentHeight = 0,
-                               resultFooterHeight = 0,
-                               resultHeaderHeight = 0;
+                       this._bindTabbarEvents();
+                       this._initTabbarAnimation();
+               },
 
-                       if ( $elPage.length ) {
-                               $elFooter = $elPage.find( ":jqmData(role='footer')" );
-                       } else {
-                               $elFooter = $( document ).find( ":jqmData(role='footer')" ).eq( 0 );
-                       }
+               _initTabbarAnimation: function () {
+                       var isScrollingStart = false,
+                               isScrollingEnd = false;
+                       $( document ).bind( "scrollstart.tabbar", function ( e ) {
+                               if ( $( e.target ).find( ".ui-tabbar" ).length ) {
+                                       isScrollingStart = true;
+                                       isScrollingEnd = false;
+                               }
+                       });
 
-                       // calculate footer height
-                       resultFooterHeight = ( $elFooter.css( "display" ) == "none" || $elFooter.length == 0 ) ? 0 : $elFooter.height();
-                       resultHeaderHeight = ( $elHeader.css( "display" ) == "none" || $elHeader.length == 0 ) ? 0 : $elHeader.height();
+                       $( document ).bind( "scrollstop.tabbar", function ( e ) {
+                               var $tabbarScrollview = $( e.target ),
+                                       $elTabbar = $( e.target ).find( ".ui-tabbar" ),
+                                       $elTabbarLI = $( e.target ).find( ".ui-tabbar li" ),
+                                       $minElement = $elTabbarLI.eq( 0 ),
+                                       minElementIndexVal,
+                                       minElementIndex = -1;
 
-                       if (resultFooterHeight != 0 ) {
-                               $elFooter.css( "bottom", 0 );
-                       }
+                               isScrollingEnd = true;
+                               if ( $elTabbar.length && isScrollingStart == true ) {
+                                       minElementIndexVal = Math.abs( $elTabbarLI.eq( 0 ).offset().left );
+                                       $elTabbarLI.each( function ( i ) {
+                                               var offset      = $elTabbarLI.eq( i ).offset();
 
-                       resultContentHeight = window.innerHeight - resultFooterHeight - resultHeaderHeight;
+                                               if ( Math.abs( offset.left ) < minElementIndexVal ) {
+                                                       minElementIndexVal = Math.abs( offset.left );
+                                                       minElementIndex = i;
+                                                       $minElement = $elTabbarLI.eq( i );
+                                               }
+                                       });
 
-                       if ( $.support.scrollview ) {
-                               $elContent.height( resultContentHeight -
-                                               parseFloat( $elContent.css("padding-top") ) -
-                                               parseFloat( $elContent.css("padding-bottom") ) );
-                       }
+                                       if ( $tabbarScrollview.length && isScrollingStart == isScrollingEnd && minElementIndex != -1) {
+                                               isScrollingStart = false;
+                                               $tabbarScrollview.scrollview( "scrollTo", -( window.innerWidth / $elTabbar.data( "defaultList" ) * minElementIndex ) , 0, 357);
+                                       }
+                               }
 
-                       // External call page( "refresh") - in case title changed
-                       if ( receiveType ) {
-                               $elPage
-                                       .css( "min-height", resultContentHeight )
-                                       .css( "padding-top", resultHeaderHeight )
-                                       .css( "padding-bottom", resultFooterHeight );
-                       }
+                               $( ".ui-tabbar-divider-left" ).hide();
+                               $( ".ui-tabbar-divider-right" ).hide();
+                       });
                },
 
-               show: function ( notransition ) {
-                       /* blank function: deprecated */
-               },
+               _bindTabbarEvents: function () {
+                       var $tabbar = this.element;
 
-               hide: function ( notransition ) {
-                       /* blank function: deprecated */
+                       $( window ).bind( "orientationchange", function ( e, ui ) {
+                               var ww = window.innerWidth || $( window ).width(),
+                                       wh = window.innerHeight || $( window ).height(),
+                                       isLandscape = ww > wh && ( ww - wh );
+
+                               if ( isLandscape ) {
+                                       $tabbar.removeClass( "ui-portrait-tabbar" ).addClass( "ui-landscape-tabbar" );
+                               } else {
+                                       $tabbar.removeClass( "ui-landscape-tabbar" ).addClass( "ui-portrait-tabbar" );
+                               }
+                       });
                },
 
-               toggle: function () {
-                       this[ this._visible ? "hide" : "show" ]();
+               _setDisabled: function ( value, cnt ) {
+                       this.element.find( "li" ).eq( cnt ).attr( "disabled", value );
+                       this.element.find( "li" ).eq( cnt ).attr( "aria-disabled", value );
                },
 
-               destroy: function () {
-                       this.element.removeClass( "ui-header-fixed ui-footer-fixed ui-header-fullscreen ui-footer-fullscreen in out fade slidedown slideup ui-fixed-hidden" );
-                       this.element.closest( ".ui-page" ).removeClass( "ui-page-header-fixed ui-page-footer-fixed ui-page-header-fullscreen ui-page-footer-fullscreen" );
+               disable: function ( cnt ) {
+                       this._setDisabled( true, cnt );
+                       this.element.find( "li" ).eq( cnt ).addClass( "ui-disabled" );
                },
 
-               refresh: function () {
-                       var $elPage = $( ".ui-page-active" );
-                       this.setHeaderFooter( $elPage );
-                       this._updateHeaderArea( $elPage );
+               enable: function ( cnt ) {
+                       this._setDisabled( false, cnt );
+                       this.element.find( "li" ).eq( cnt ).removeClass( "ui-disabled" );
                }
        });
 
        //auto self-init widgets
-       $( document )
-               .bind( "pagecreate create", function ( e ) {
-                       // DEPRECATED in 1.1: support for data-fullscreen=true|false on the page element.
-                       // This line ensures it still works, but we recommend moving the attribute to the toolbars themselves.
-                       if ( $( e.target ).jqmData( "fullscreen" ) ) {
-                               $( $.mobile.pagelayout.prototype.options.initSelector, e.target ).not( ":jqmData(fullscreen)" ).jqmData( "fullscreen", true );
-                       }
-                       $.mobile.pagelayout.prototype.enhanceWithin( e.target );
-               });
-
-}( jQuery ));
+       $( document ).bind( "pagecreate create", function ( e ) {
+               $( $.tizen.tabbar.prototype.options.initSelector, e.target ).tabbar();
+       });
+}( jQuery ) );
 
 
 
@@ -15572,8 +15836,15 @@ If developers do not give a viewport meta tag, Tizen Web UI Framework automatica
 
 
 
-/* ***************************************************************************
+/*
+ * jQuery Mobile Widget @VERSION
+ *
+ * This software is licensed under the MIT licence (as defined by the OSI at
+ * http://www.opensource.org/licenses/mit-license.php)
+ *
+ * ***************************************************************************
  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2011 by Intel Corporation Ltd.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -15594,551 +15865,529 @@ If developers do not give a viewport meta tag, Tizen Web UI Framework automatica
  * DEALINGS IN THE SOFTWARE.
  * ***************************************************************************
  *
- * jQuery Mobile Framework : "tabbar" plugin
- * Copyright (c) jQuery Project
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- * Authors: Jinhyuk Jun <jinhyuk.jun@samsung.com>
-*/
+ * Authors: Gabriel Schulhof <gabriel.schulhof@intel.com>,
+ *          Elliot Smith <elliot.smith@intel.com>
+ *                     Hyunjung Kim <hjnim.kim@samsung.com>
+ */
 
-/**
- *  Tabbar can be created using data-role = "tabbar" inside footer 
- *  Framework determine which tabbar will display with tabbar attribute
+/*
+ * % Popupwindow widget do not use anymore(will be deprecated, internal use only)
  *
- * Examples:
- *         
- *     HTML markup for creating tabbar: ( 2 ~ 5 li item available )
- *     icon can be changed data-icon attribute (customized icon need)
- *         <div data-role="footer" data-position ="fixed">
- *              <div data-role="tabbar">
- *                     <ul>
- *                            <li><a href="#" class="ui-btn-active">Menu</a></li>
- *                            <li><a href="#">Save</a></li>
- *                            <li><a href="#">Share</a></li>
- *                     </ul>
- *             </div>
+ *
+ * Shows other elements inside a popup window.
+ *
+ * To apply, add the attribute data-role="popupwindow" to a <div> element inside
+ * a page. Alternatively, call popupwindow()
+ * on an element, eg :
+ *
+ *     $("#mypopupwindowContent").popupwindow();
+ * where the html might be :
+ *     <div id="mypopupwindowContent"></div>
+ *
+ * To trigger the popupwindow to appear, it is necessary to make a call to its
+ * 'open()' method. This is typically done by binding a function to an event
+ * emitted by an input element, such as a the clicked event emitted by a button
+ * element. The open() method takes two arguments, specifying the x and y
+ * screen coordinates of the center of the popup window.
+
+ * You can associate a button with a popup window like this:
+ *      <div id="mypopupContent" style="display: table;" data-role="popupwindow">
+ *          <table>
+ *              <tr> <td>Eenie</td>   <td>Meenie</td>  <td>Mynie</td>   <td>Mo</td>  </tr>
+ *              <tr> <td>Catch-a</td> <td>Tiger</td>   <td>By-the</td>  <td>Toe</td> </tr>
+ *              <tr> <td>If-he</td>   <td>Hollers</td> <td>Let-him</td> <td>Go</td>  </tr>
+ *              <tr> <td>Eenie</td>   <td>Meenie</td>  <td>Mynie</td>   <td>Mo</td>  </tr>
+ *          </table>
  *      </div>
+ * <a href="#myPopupContent" data-rel="popupwindow" data-role="button">Show popup</a>
+ *
+ * Options:
+ *
+ *     theme: String; the theme for the popupwindow contents
+ *                   Default: null
+ *
+ *     overlayTheme: String; the theme for the popupwindow
+ *                   Default: null
+ *
+ *     shadow: Boolean; display a shadow around the popupwindow
+ *             Default: true
+ *
+ *     corners: Boolean; display a shadow around the popupwindow
+ *             Default: true
+ *
+ *     fade: Boolean; fades the opening and closing of the popupwindow
+ *
+ *     transition: String; the transition to use when opening or closing
+ *                 a popupwindow
+ *                 Default: $.mobile.defaultDialogTransition
+ *
+ * Events:
+ *     popupbeforeposition: triggered after a popup has completed preparations for opening, but has not yet opened
+ *     popupafteropen: triggered after a popup has completely opened
+ *     popupafterclose triggered when a popup has completely closed
+*/
+
+/**
+       class Popupwindow
+       The pop-up widget shows a list of items in a pop-up window in the middle of the screen. It automatically optimizes the pop-up window size within the screen.
+       To add a pop-up widget to the application, use the following code:
+
+               // Basic pop-up
+               <div id="center_info" data-role="popup" data-style="center_info">
+                       <div data-role="text">
+                               <p>
+                               Pop-up dialog box, a child window that blocks user interaction in the parent window
+                               </p>
+                       </div>
+               </div>
+               // Pop-up with a title and button
+               <div id="center_title_1btn" data-role="popup" data-style="center_title_1btn">
+                       <p data-role="title">
+                               Pop-up title
+                       </p>
+                       <p data-role="text">
+                               Pop-up dialog box
+                       </p>
+               <div data-role="button-bg">
+                       <input type="button" value="Text Button" />
+               </div>
+               </div>
+
+       The pop-up can define callbacks for events as described in the jQueryMobile documentation for pop-up events. <br/>You can use methods with the pop-up as described in the jQueryMobile documentation for pop-up methods.
+
+       @deprecated 2.0 verisons
+*/
+
+/**
+       @property {String} data-style
+       Defines the pop-up window style.
+       The following styles are available:
+
+       center_info: basic pop-up message
+       center_title: pop-up message with a title
+       center_basic_1btn: pop-up message with 1 button
+       center_basic_2btn: pop-up message with 2 horizontal buttons
+       center_title_1btn: pop-up message with a title and 1 button
+       center_title_2btn: pop-up message with a title and 2 horizontal buttons
+       center_title_3btn: pop-up message with a title and 3 horizontal buttons
+       center_button_vertical: pop-up message with vertical buttons
+       center_checkbox: pop-up message with a check box
+       center_liststyle_1btn>: pop-up message with a list and 1 button
+       center_liststyle_2btn: pop-up message with a list and 2 horizontal buttons
+       center_liststyle_3btn: pop-up message with a list and 3 horizontal buttons
 */
 
 (function ( $, undefined ) {
-
-       $.widget( "tizen.tabbar", $.mobile.widget, {
+       $.widget( "tizen.popupwindow", $.tizen.widgetex, {
                options: {
-                       iconpos: "top",
-                       grid: null,
-                       defaultList : 4,
-                       initSelector: ":jqmData(role='tabbar')"
+                       theme: null,
+                       overlayTheme: "s",
+                       style: "custom",
+                       disabled: false,
+                       shadow: true,
+                       corners: true,
+                       fade: false,
+                       opacity: 0.7,
+                       widthRatio: 0.8612,
+                       transition: $.mobile.defaultDialogTransition,
+                       initSelector: ":jqmData(role='popupwindow')"
                },
 
-               _create: function () {
-
-                       var $tabbar = this.element,
-                               $tabbtns,
-                               textpos,
-                               iconpos,
-                               theme = $.mobile.listview.prototype.options.theme,      /* Get current theme */
-                               ww = window.innerWidth || $( window ).width(),
-                               wh = window.innerHeight || $( window ).height(),
-                               tabbarDividerLeft = "<div class='ui-tabbar-divider ui-tabbar-divider-left'></div>",
-                               tabbarDividerRight = "<div class='ui-tabbar-divider ui-tabbar-divider-right'></div>",
-                               isLandscape;
-
-                       isLandscape = ww > wh && ( ww - wh );
-
-                       if ( isLandscape ) {
-                               $tabbar.removeClass( "ui-portrait-tabbar" ).addClass( "ui-landscape-tabbar" );
-                       } else {
-                               $tabbar.removeClass( "ui-landscape-tabbar" ).addClass( "ui-portrait-tabbar" );
-                       }
+               _htmlProto: {
+source:
 
-                       if ( $tabbar.find( "a" ).length ) {
-                               $tabbtns = $tabbar.find( "a" );
-                               iconpos = $tabbtns.filter( ":jqmData(icon)" ).length ? this.options.iconpos : undefined;
-                               textpos = $tabbtns.html().length ? true : false;
+ [ "<div><div>" ,
+  "    <div id='popupwindow-screen' class='ui-selectmenu-screen ui-screen-hidden ui-popupwindow-screen'></div>" ,
+  "    <div id='popupwindow-container' class='ui-popupwindow ui-popupwindow-padding ui-selectmenu-hidden ui-overlay-shadow ui-corner-all'></div>" ,
+  "</div>" ,
+  "</div>" ].join("")
+,                      ui: {
+                               screen: "#popupwindow-screen",
+                               container: "#popupwindow-container"
                        }
+               },
 
-                       if ( $tabbar.parents( ".ui-header" ).length && $tabbar.parents( ".ui-scrollview-view" ).length ) {
-                               $tabbar.find( "li" ).addClass( "tabbar-scroll-li" );
-                               $tabbar.find( "ul" ).addClass( "tabbar-scroll-ul" );
-
-                               /* add shadow divider */
-                               $( tabbarDividerLeft ).appendTo( $tabbar.parents( ".ui-scrollview-clip" ) );
-                               $( tabbarDividerRight ).appendTo( $tabbar.parents( ".ui-scrollview-clip" ) );
-
-                               $( ".ui-tabbar-divider-left" ).hide();
-                               $( ".ui-tabbar-divider-right" ).hide();
-
-                               /* add width calculation*/
-                               if ( $tabbar.parents( ".ui-scrollview-view" ).data("default-list") ) {
-                                       this.options.defaultList = $tabbar.parents( ".ui-scrollview-view" ).data( "default-list" );
-                               }
-                               $tabbar.find( "li" ).css( "width", window.innerWidth / this.options.defaultList + "px" );
-                       } else {
-                               if ( $tabbar.find( "ul" ).children().length ) {
-                                       $tabbar.addClass( "ui-navbar" )
-                                               .find( "ul" )
-                                               .grid( { grid: this.options.grid } );
-                               }
-                       }
+               _setStyle: function () {
+                       var popup = this.element,
+                               style = popup.attr( 'data-style' );
 
-                       if ( $tabbar.parents( ".ui-footer" ).length  ) {
-                               $tabbar.find( "li" ).addClass( "ui-tab-btn-style" );
+                       if ( style ) {
+                               this.options.style = style;
                        }
 
-                       /* title tabbar */
-                       if ( $tabbar.siblings( ".ui-title" ).length ) {
-                               $tabbar.parents( ".ui-header" ).addClass( "ui-title-tabbar" );
-                       }
+                       popup.addClass( this.options.style );
+                       popup.find( ":jqmData(role='title')" )
+                                       .wrapAll( "<div class='popup-title'></div>" );
+                       popup.find( ":jqmData(role='text')" )
+                                       .wrapAll( "<div class='popup-text'></div>" );
+                       popup.find( ":jqmData(role='button-bg')" )
+                                       .wrapAll( "<div class='popup-button-bg'></div>" );
+                       popup.find( ":jqmData(role='check-bg')" )
+                                       .wrapAll( "<div class='popup-check-bg'></div>" );
+                       popup.find( ":jqmData(role='scroller-bg')" )
+                                       .addClass( "popup-scroller-bg" );
+                       popup.find( ":jqmData(role='text-bottom-bg')" )
+                                       .wrapAll( "<div class='popup-text-bottom-bg'></div>" );
+                       popup.find( ":jqmData(role='text-left')" )
+                                       .wrapAll( "<div class='popup-text-left'></div>" );
+                       popup.find( ":jqmData(role='text-right')" )
+                                       .wrapAll( "<div class='popup-text-right'></div>" );
+                       popup.find( ":jqmData(role='progress-bg')" )
+                                       .wrapAll( "<div class='popup-progress-bg'></div>" );
+               },
 
-                       if ( !iconpos ) {
-                               $tabbar.addClass( "ui-tabbar-noicons" );
-                       }
-                       if ( !textpos ) {
-                               $tabbar.addClass( "ui-tabbar-notext" );
-                       }
-                       if ( textpos && iconpos ) {
-                               $tabbar.parents( ".ui-header" ).addClass( "ui-title-tabbar-multiline" );
-                       }
+               _create: function () {
+                       console.warn("popupwindow() was deprecated. use popup() instead.");
+                       var thisPage = this.element.closest(":jqmData(role='page')"),
+                               self = this;
 
-                       if ( $tabbar.find( "a" ).length ) {
-                               $tabbtns.buttonMarkup({
-                                       corners:        false,
-                                       shadow:         false,
-                                       iconpos:        iconpos
-                               });
+                       if ( thisPage.length === 0 ) {
+                               thisPage = $("body");
                        }
 
-                       if ( $tabbar.find( ".ui-state-persist" ).length ) {
-                               $tabbar.addClass( "ui-tabbar-persist" );
-                       }
+                       this._ui.placeholder =
+                                       $( "<div><!-- placeholder for " + this.element.attr("id") + " --></div>" )
+                                       .css("display", "none")
+                                       .insertBefore( this.element );
 
-                       $tabbar.delegate( "a", "vclick", function ( event ) {
-                               $tabbtns.not( ".ui-state-persist" ).removeClass( $.mobile.activeBtnClass );
-                               $( this ).addClass( $.mobile.activeBtnClass );
-                       });
+                       thisPage.append( this._ui.screen );
+                       this._ui.container.insertAfter( this._ui.screen );
+                       this._ui.container.append( this.element );
 
-                       $tabbar.addClass( "ui-tabbar");
+                       this._setStyle();
 
-                       $( document ).bind( "pagebeforeshow", function ( event, ui ) {
-                               var footer_filter = $( event.target ).find( ":jqmData(role='footer')" ),
-                                       tabbar_filter = footer_filter.find( ":jqmData(role='tabbar')" ),
-                                       $elFooterMore = tabbar_filter.siblings( ":jqmData(icon='naviframe-more')" ),
-                                       $elFooterBack = tabbar_filter.siblings( ".ui-btn-back" );
+                       this._isOpen = false;
 
-                               footer_filter
-                                       .css( "position", "fixed" )
-                                       .css( "bottom", 0 )
-                                       .css( "height", tabbar_filter.height() );
-                               if ( $elFooterMore.length ) {
-                                       tabbar_filter.addClass( "ui-tabbar-margin-more" );
-                               }
-                               if ( $elFooterBack.length ) {
-                                       tabbar_filter.addClass( "ui-tabbar-margin-back" );
-                               }
-                       });
+                       this._ui.screen.bind( "vclick", function ( e ) {
+                               self.close();
+                               return false;
+                       } );
 
-                       $tabbar.bind( "touchstart vmousedown", function ( e ) {
-                               var $tabbarScroll = $( e.target ).parents( ".ui-scrollview-view" );
-                               if ( $tabbarScroll.offset() ) {
-                                       if ( $tabbarScroll.offset().left < 0 ) {
-                                               $( ".ui-tabbar-divider-left" ).show();
-                                       } else {
-                                               $( ".ui-tabbar-divider-left" ).hide();
-                                       }
-                                       if ( ( $tabbarScroll.width() - $tabbarScroll.parents( ".ui-scrollview-clip" ).width() ) ==  Math.abs( $tabbarScroll.offset().left ) ) {
-                                               $( ".ui-tabbar-divider-right" ).hide();
-                                       } else {
-                                               $( ".ui-tabbar-divider-right" ).show();
-                                       }
+                       this.element.bind( "vclick", function ( e ) {
+                               if ( $( e.target ).is("ui-btn-ctxpopup-close") ) {
+                                       self.close();
                                }
-                       });
-
-                       this._bindTabbarEvents();
-                       this._initTabbarAnimation();
+                       } );
                },
 
-               _initTabbarAnimation: function () {
-                       var isScrollingStart = false,
-                               isScrollingEnd = false;
-                       $( document ).bind( "scrollstart.tabbar", function ( e ) {
-                               if ( $( e.target ).find( ".ui-tabbar" ).length ) {
-                                       isScrollingStart = true;
-                                       isScrollingEnd = false;
-                               }
-                       });
-
-                       $( document ).bind( "scrollstop.tabbar", function ( e ) {
-                               var $tabbarScrollview = $( e.target ),
-                                       $elTabbar = $( e.target ).find( ".ui-tabbar" ),
-                                       $elTabbarLI = $( e.target ).find( ".ui-tabbar li" ),
-                                       $minElement = $elTabbarLI.eq( 0 ),
-                                       minElementIndexVal,
-                                       minElementIndex = -1;
-
-                               isScrollingEnd = true;
-                               if ( $elTabbar.length && isScrollingStart == true ) {
-                                       minElementIndexVal = Math.abs( $elTabbarLI.eq( 0 ).offset().left );
-                                       $elTabbarLI.each( function ( i ) {
-                                               var offset      = $elTabbarLI.eq( i ).offset();
-
-                                               if ( Math.abs( offset.left ) < minElementIndexVal ) {
-                                                       minElementIndexVal = Math.abs( offset.left );
-                                                       minElementIndex = i;
-                                                       $minElement = $elTabbarLI.eq( i );
-                                               }
-                                       });
-
-                                       if ( $tabbarScrollview.length && isScrollingStart == isScrollingEnd && minElementIndex != -1) {
-                                               isScrollingStart = false;
-                                               $tabbarScrollview.scrollview( "scrollTo", -( window.innerWidth / $elTabbar.data( "defaultList" ) * minElementIndex ) , 0, 357);
-                                       }
-                               }
+               destroy: function () {
+                       this.element.insertBefore( this._ui.placeholder );
 
-                               $( ".ui-tabbar-divider-left" ).hide();
-                               $( ".ui-tabbar-divider-right" ).hide();
-                       });
+                       this._ui.placeholder.remove();
+                       this._ui.container.remove();
+                       this._ui.screen.remove();
+                       this.element.triggerHandler("destroyed");
+                       $.Widget.prototype.destroy.call( this );
                },
 
-               _bindTabbarEvents: function () {
-                       var $tabbar = this.element;
+               _placementCoords: function ( x, y, cw, ch ) {
+                       var screenHeight = $( window ).height(),
+                               screenWidth = $( window ).width(),
+                               halfheight = ch / 2,
+                               maxwidth = parseFloat( this._ui.container.css( "max-width" ) ),
+                               roomtop = y,
+                               roombot = screenHeight - y,
+                               newtop,
+                               newleft;
 
-                       $( window ).bind( "orientationchange", function ( e, ui ) {
-                               var ww = window.innerWidth || $( window ).width(),
-                                       wh = window.innerHeight || $( window ).height(),
-                                       isLandscape = ww > wh && ( ww - wh );
+                       if ( roomtop > ch / 2 && roombot > ch / 2 ) {
+                               newtop = y - halfheight;
+                       } else {
+                               newtop = roomtop > roombot ? screenHeight - ch - 30 : 30;
+                       }
 
-                               if ( isLandscape ) {
-                                       $tabbar.removeClass( "ui-portrait-tabbar" ).addClass( "ui-landscape-tabbar" );
-                               } else {
-                                       $tabbar.removeClass( "ui-landscape-tabbar" ).addClass( "ui-portrait-tabbar" );
+                       if ( cw < maxwidth ) {
+                               newleft = ( screenWidth - cw ) / 2;
+                       } else {
+                               newleft = x - cw / 2;
+
+                               if ( newleft < 10 ) {
+                                       newleft = 10;
+                               } else if ( ( newleft + cw ) > screenWidth ) {
+                                       newleft = screenWidth - cw - 10;
                                }
-                       });
-               },
+                       }
 
-               _setDisabled: function ( value, cnt ) {
-                       this.element.find( "li" ).eq( cnt ).attr( "disabled", value );
-                       this.element.find( "li" ).eq( cnt ).attr( "aria-disabled", value );
+                       return { x : newleft, y : newtop };
                },
 
-               disable: function ( cnt ) {
-                       this._setDisabled( true, cnt );
-                       this.element.find( "li" ).eq( cnt ).addClass( "ui-disabled" );
-               },
+               _setPosition: function ( x_where, y_where ) {
+                       var x = ( undefined === x_where ? $( window ).width()  / 2 : x_where ),
+                               y = ( undefined === y_where ? $( window ).height() / 2 : y_where ),
+                               coords,
+                               ctxpopup = this.element.data("ctxpopup"),
+                               popupWidth,
+                               menuHeight,
+                               menuWidth,
+                               screenHeight,
+                               screenWidth,
+                               roomtop,
+                               roombot,
+                               halfheight,
+                               maxwidth,
+                               newtop,
+                               newleft;
 
-               enable: function ( cnt ) {
-                       this._setDisabled( false, cnt );
-                       this.element.find( "li" ).eq( cnt ).removeClass( "ui-disabled" );
-               }
-       });
+                       if ( !ctxpopup ) {
+                               popupWidth = $( window ).width() * this.options.widthRatio;
+                               this._ui.container.css( "width", popupWidth );
 
-       //auto self-init widgets
-       $( document ).bind( "pagecreate create", function ( e ) {
-               $( $.tizen.tabbar.prototype.options.initSelector, e.target ).tabbar();
-       });
-}( jQuery ) );
+                               if ( this._ui.container.outerWidth() > $( window ).width() ) {
+                                       this._ui.container.css( {"max-width" : $( window ).width() - 30} );
+                               }
+                       }
 
+                       coords = this._placementCoords( x, y,
+                                       this._ui.container.outerWidth(),
+                                       this._ui.container.outerHeight() );
 
+                       menuHeight = this._ui.container.innerHeight();
+                       menuWidth = this._ui.container.innerWidth();
+                       screenHeight = $( window ).height();
+                       screenWidth = $( window ).width();
+                       roomtop = y;
+                       roombot = screenHeight - y;
+                       halfheight = menuHeight / 2;
+                       maxwidth = parseFloat( this._ui.container.css( "max-width" ) );
+                       newtop = ( screenHeight - menuHeight ) / 2;
 
-/* ***************************************************************************
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * ***************************************************************************
- */
-/*
-* jQuery Mobile Framework : "textinput" plugin for text inputs, textareas
-* Copyright (c) jQuery Project
-* Dual licensed under the MIT or GPL Version 2 licenses.
-* http://jquery.org/license
-* Authors: Jinhyuk Jun <jinhyuk.jun@samsung.com>
-*          Wongi Lee <wongi11.lee@samsung.com>
-*/
+                       if ( !maxwidth || menuWidth < maxwidth ) {
+                               newleft = ( screenWidth - menuWidth ) / 2;
+                       } else {
+                               newleft = x - menuWidth / 2;
 
-/**
- * Searchbar can be created using <input> element with type=search
- * <input type="search" name="search" id="search1" value=""  />
- *
- * Searchbar can be inserted 3 cases
- * content : seachbar behave same as content element
- * header : searchbar placed below title(header), It doesn't move when scrolling page
- * inside optionheader : Searchbar placed inside optionheader, searchbar can be seen only expand optionheader
- *
- * Examples:
- *
- *     HTML markup for creating Searchbar
- *             <input type="search"/>
- *
- *     How to make searchbar in content
- *             <input type="search" name="" id="" value=""  />
- *
- *     How to make cancel button in searchbar
- *             <div data-role="header" data-position ="fixed" >
- *                     <h1>Searchbar</h1>
- *                     <input type="search" data-cancel-btn=true name="" id="" value=""  />
- *             </div>
- *
- *     How to make icon in front of searchbar
- *             <div data-role="header" data-position ="fixed" >
- *                     <h1>Searchbar</h1>
- *                     <input type="search" data-icon="call" name="" id="" value=""  />
- *             </div>
-*/
+                               if ( newleft < 30 ) {
+                                       newleft = 30;
+                               } else if ( ( newleft + menuWidth ) > screenWidth ) {
+                                       newleft = screenWidth - menuWidth - 30;
+                               }
+                       }
 
-/**
-       @class SearchBar
-       The search bar widget is used to search for page content. This widget can be placed in the header, option header, or page content.
+                       if ( ctxpopup ) {
+                               newtop = coords.y;
+                               newleft = coords.x;
+                       }
 
-       To add a search bar widget to the application, use the following code:
+                       this._ui.container.css({
+                               top: newtop,
+                               left: newleft
+                       });
 
-               <label for="search-basic">Search Input:</label>
-               <input type="search" name="search" id="searc-basic" value="" data-mini="true" />
+                       this._ui.screen.css( "height", screenHeight );
+               },
+               open: function ( x_where, y_where, backgroundclose ) {
+                       var self = this,
+                               zIndexMax = 0;
 
-       Tizen supports many search bar options as described in the jQueryMobile documentation for search bar options.
-       The search bar can define callbacks for events as described in the jQueryMobile documentation for search bar events.
-       You can use methods with the search bar as described in the jQueryMobile documentation for search bar methods.
-*/
+                       if ( this._isOpen || this.options.disabled ) {
+                               return;
+                       }
 
-(function ( $, undefined ) {
+                       $( document ).find("*").each( function () {
+                               var el = $( this ),
+                                       zIndex = parseInt( el.css("z-index"), 10 );
 
-       $.widget( "tizen.searchbar", $.mobile.widget, {
-               options: {
-                       theme: null,
-                       initSelector: "input[type='search'],:jqmData(type='search'), input[type='tizen-search'],:jqmData(type='tizen-search')"
-               },
+                               if ( !( el.is( self._ui.container ) ||
+                                               el.is( self._ui.screen ) ||
+                                               isNaN( zIndex ))) {
+                                       zIndexMax = Math.max( zIndexMax, zIndex );
+                               }
+                       } );
 
-               _create: function () {
-                       var input = this.element,
-                               o = this.options,
-                               theme = o.theme || $.mobile.getInheritedTheme( this.element, "c" ),
-                               themeclass  = " ui-body-" + theme,
-                               focusedEl,
-                               clearbtn,
-                               cancelbtn,
-                               defaultText,
-                               defaultTextClass,
-                               trimedText,
-                               newClassName,
-                               newStyle,
-                               newDiv,
-                               searchimage,
-                               inputedText,
-                               useCancelBtn = false,
-                               frontIcon = false;
+                       this._ui.screen.css( "height", $( window ).height() );
 
-                       $( "label[for='" + input.attr( "id" ) + "']" ).addClass( "ui-input-text" );
+                       if ( backgroundclose ) {
+                               this._ui.screen.css( "opacity", 0 )
+                                               .removeClass("ui-screen-hidden");
+                       } else {
+                               this._ui.removeClass("ui-screen-hidden");
 
-                       if ( typeof input[0].autocorrect !== "undefined" && !$.support.touchOverflow ) {
-                               // Set the attribute instead of the property just in case there
-                               // is code that attempts to make modifications via HTML.
-                               input[0].setAttribute( "autocorrect", "off" );
-                               input[0].setAttribute( "autocomplete", "off" );
+                               if ( this.options.fade ) {
+                                       this._ui.screen.animate( {opacity: this.options.opacity}, "fast" );
+                               } else {
+                                       this._ui.screen.css( {opacity: this.options.opacity} );
+                               }
                        }
 
-                       focusedEl = input.wrap( "<div class='ui-input-search ui-shadow-inset ui-corner-all ui-btn-shadow" + themeclass + "'></div>" ).parent();
+                       this._setPosition( x_where, y_where );
 
-                       if ( $( this.element ).data( "cancel-btn" ) === true ) {
-                               useCancelBtn = true;
-                               focusedEl.addClass( "ui-input-search-default" );
-                       }
-                       if ( $( this.element ).data( "icon" ) != undefined ) {
-                               frontIcon = true;
-                               focusedEl.addClass( "ui-search-bar-icon" );
-                       }
+                       this.element.trigger("popupbeforeposition");
 
-                       clearbtn = $( "<a href='#' class='ui-input-clear' title='clear text'>clear text</a>" )
-                               .bind('click', function ( event ) {
-                                       if ( input.attr( "disabled" ) == "disabled" ) {
-                                               return false;
+                       this._ui.container
+                               .removeClass("ui-selectmenu-hidden")
+                               .addClass("in")
+                               .animationComplete( function () {
+                                       self.element.trigger("popupafteropen");
+                               } );
+
+                       this._isOpen = true;
+
+                       if ( !this._reflow ) {
+                               this._reflow = function () {
+                                       if ( !self._isOpen ) {
+                                               return;
                                        }
-                                       input
-                                               .val( "" )
-                                               .focus()
-                                               .trigger( "change" );
-                                       clearbtn.addClass( "ui-input-clear-hidden" );
-                                       event.preventDefault();
-                               })
-                               .appendTo( focusedEl )
-                               .buttonMarkup({
-                                       icon: "deleteSearch",
-                                       iconpos: "notext",
-                                       corners: true,
-                                       shadow: true
-                               });
 
-                       function toggleClear() {
-                               setTimeout(function () {
-                                       clearbtn.toggleClass( "ui-input-clear-hidden", !input.val() );
-                               }, 0);
-                       }
+                                       self._setPosition( x_where, y_where );
+                               };
 
-                       function showCancel() {
-                               focusedEl
-                                       .addClass( "ui-input-search-default" )
-                                       .removeClass( "ui-input-search-wide" );
-                               cancelbtn
-                                       .addClass( "ui-btn-cancel-show" )
-                                       .removeClass( "ui-btn-cancel-hide" );
+                               $( window ).bind( "resize", this._reflow );
                        }
+               },
 
-                       function hideCancel() {
-                               focusedEl
-                                       .addClass( "ui-input-search-wide" )
-                                       .removeClass( "ui-input-search-default" );
-                               cancelbtn
-                                       .addClass( "ui-btn-cancel-hide" )
-                                       .removeClass( "ui-btn-cancel-show" );
-                               toggleClear();
+               close: function () {
+                       if ( !this._isOpen ) {
+                               return;
                        }
 
-                       function makeFrontIcon() {
-                               var IconStyle = $( input ).jqmData( "icon" ),
-                                       frontIcon = $( "<div data-role='button' data-style='circle'></div>" );
-
-                               frontIcon
-                                       .appendTo( focusedEl.parent() )
-                                       .buttonMarkup( {
-                                               icon: IconStyle,
-                                               corners: true,
-                                               shadow: true
-                                       } );
-                               frontIcon.addClass( "ui-btn-search-front-icon" );
+                       if ( this._reflow ) {
+                               $( window ).unbind( "resize", this._reflow );
+                               this._reflow = null;
                        }
 
-                       toggleClear();
+                       var self = this,
+                               hideScreen = function () {
+                                       self._ui.screen.addClass("ui-screen-hidden");
+                                       self._isOpen = false;
+                               };
 
-                       input.bind( 'paste cut keyup focus change blur', toggleClear );
+                       this._ui.container.removeClass("in").addClass("reverse out");
 
-                       //SLP --start search bar with cancel button
-                       focusedEl.wrapAll( "<div class='input-search-bar'></div>" );
-                       searchimage = $("<div class='ui-image-search'></div>").appendTo( focusedEl );
+                       if ( this.options.transition === "none" ) {
+                               this._ui.container
+                                       .addClass("ui-selectmenu-hidden")
+                                       .removeAttr("style");
+                               this.element.trigger("popupafterclose");
+                       } else {
+                               this._ui.container.animationComplete( function () {
+                                       self._ui.container
+                                               .removeClass("reverse out")
+                                               .addClass("ui-selectmenu-hidden")
+                                               .removeAttr("style");
+                                       self.element.trigger("popupafterclose");
+                               } );
+                       }
 
-                       if ( frontIcon ) {
-                               makeFrontIcon();
+                       if ( this.options.fade ) {
+                               this._ui.screen.animate( {opacity: 0}, "fast", hideScreen );
+                       } else {
+                               hideScreen();
                        }
+               },
 
-                       if ( useCancelBtn ) {
-                               cancelbtn = $( "<div data-role='button' class='ui-input-cancel' title='clear text'>Cancel</div>" )
-                                       .bind('click', function ( event ) {
-                                               if ( input.attr( "disabled" ) == "disabled" ) {
-                                                       return false;
-                                               }
-                                               event.preventDefault();
-                                               event.stopPropagation();
+               _realSetTheme: function ( dst, theme ) {
+                       var classes = ( dst.attr("class") || "" ).split(" "),
+                               alreadyAdded = true,
+                               currentTheme = null,
+                               matches;
 
-                                               input
-                                                       .val( "" )
-                                                       .blur()
-                                                       .trigger( "change" );
+                       while ( classes.length > 0 ) {
+                               currentTheme = classes.pop();
+                               matches = currentTheme.match(/^ui-body-([a-z])$/);
 
-                                               if ( useCancelBtn ) {
-                                                       hideCancel();
-                                               }
-                                       } )
-                                       .appendTo( focusedEl.parent() )
-                                       .buttonMarkup( {
-                                               iconpos: "cancel",
-                                               corners: true,
-                                               shadow: true
-                                       } );
+                               if ( matches && matches.length > 1 ) {
+                                       currentTheme = matches[1];
+                                       break;
+                               } else {
+                                       currentTheme = null;
+                               }
                        }
 
-                       // Input Focused
-                       input
-                               .focus( function () {
-                                       if ( input.attr( "disabled" ) == "disabled" ) {
-                                               return false;
-                                       }
-                                       if ( useCancelBtn ) {
-                                               showCancel();
-                                       }
-                                       focusedEl.addClass( $.mobile.focusClass );
-                               })
-                               .blur(function () {
-                                       focusedEl.removeClass( $.mobile.focusClass );
-                               });
+                       dst.removeClass( "ui-body-" + currentTheme );
+                       if ( ( theme || "" ).match(/[a-z]/) ) {
+                               dst.addClass( "ui-body-" + theme );
+                       }
+               },
 
-                       // Default Text
-                       defaultText = input.jqmData( "default-text" );
+               _setTheme: function ( value ) {
+                       this._realSetTheme( this.element, value );
+                       this.options.theme = value;
+                       this.element.attr( "data-" + ( $.mobile.ns || "" ) + "theme", value );
+               },
 
-                       if ( ( defaultText != undefined ) && ( defaultText.length > 0 ) ) {
-                               defaultTextClass = "ui-input-default-text";
-                               trimedText = defaultText.replace(/\s/g, "");
+               _setOverlayTheme: function ( value ) {
+                       this._realSetTheme( this._ui.container, value );
+                       this.options.overlayTheme = value;
+                       this.element.attr( "data-" + ( $.mobile.ns || "" ) + "overlay-theme", value );
+               },
 
-                               /* Make new class for default text string */
-                               newClassName = defaultTextClass + "-" + trimedText;
-                               newStyle = $( "<style>" + '.' + newClassName + ":after" + "{content:" + "'" + defaultText + "'" + "}" + "</style>" );
-                               $( 'html > head' ).append( newStyle );
+               _setShadow: function ( value ) {
+                       this.options.shadow = value;
+                       this.element.attr( "data-" + ( $.mobile.ns || "" ) + "shadow", value );
+                       this._ui.container[value ? "addClass" : "removeClass"]("ui-overlay-shadow");
+               },
 
-                               /* Make new empty <DIV> for default text */
-                               newDiv = $( "<div></div>" );
+               _setCorners: function ( value ) {
+                       this.options.corners = value;
+                       this.element.attr( "data-" + ( $.mobile.ns || "" ) + "corners", value );
+                       this._ui.container[value ? "addClass" : "removeClass"]("ui-corner-all");
+               },
 
-                               /* Add class and append new div */
-                               newDiv.addClass( defaultTextClass );
-                               newDiv.addClass( newClassName );
-                               newDiv.tap( function ( event ) {
-                                       input.blur();
-                                       input.focus();
-                               } );
+               _setFade: function ( value ) {
+                       this.options.fade = value;
+                       this.element.attr( "data-" + ( $.mobile.ns || "" ) + "fade", value );
+               },
 
-                               input.parent().append( newDiv );
+               _setTransition: function ( value ) {
+                       this._ui.container
+                               .removeClass( this.options.transition || "" )
+                               .addClass( value );
+                       this.options.transition = value;
+                       this.element.attr( "data-" + ( $.mobile.ns || "" ) + "transition", value );
+               },
 
-                               /* When focus, default text will be hide. */
-                               input
-                                       .focus( function () {
-                                               input.parent().find( "div.ui-input-default-text" ).addClass( "ui-input-default-hidden" );
-                                       } )
-                                       .blur( function () {
-                                               var inputedText = input.val();
-                                               if ( inputedText.length > 0 ) {
-                                                       input.parent().find( "div.ui-input-default-text" ).addClass( "ui-input-default-hidden" );
-                                               } else {
-                                                       input.parent().find( "div.ui-input-default-text" ).removeClass( "ui-input-default-hidden" );
-                                               }
-                                       } );
+               _setDisabled: function ( value ) {
+                       $.Widget.prototype._setOption.call( this, "disabled", value );
+                       if ( value ) {
+                               this.close();
                        }
+               }
+       });
 
-                       if ( !input.attr("placeholder") ) {
-                               input.attr( "placeholder", "Search" );
+       $.tizen.popupwindow.bindPopupToButton = function ( btn, popup ) {
+               if ( btn.length === 0 || popup.length === 0 ) {
+                       return;
+               }
+
+               var btnVClickHandler = function ( e ) {
+                       if ( !popup.jqmData("overlay-theme-set") ) {
+                               popup.popupwindow( "option", "overlayTheme", btn.jqmData("theme") );
                        }
-               },
 
-               disable: function () {
-                       this.element.attr( "disabled", true );
-                       this.element.parent().addClass( "ui-disabled" );
-                       $( this.element ).blur();
-                       this.element.parent().parent().find(".ui-input-cancel").addClass( "ui-disabled" );
-               },
+                       popup.popupwindow( "open",
+                               btn.offset().left + btn.outerWidth()  / 2,
+                               btn.offset().top  + btn.outerHeight() / 2 );
 
-               enable: function () {
-                       this.element.attr( "disabled", false );
-                       this.element.parent().removeClass( "ui-disabled" );
-                       this.element.parent().parent().find(".ui-input-cancel").removeClass( "ui-disabled" );
-                       $( this.element ).focus();
+                       return false;
+               };
+
+               if ( ( popup.popupwindow("option", "overlayTheme") || "" ).match(/[a-z]/) ) {
+                       popup.jqmData( "overlay-theme-set", true );
                }
-       } );
 
-       //auto self-init widgets
+               btn
+                       .attr({
+                               "aria-haspopup": true,
+                               "aria-owns": btn.attr("href")
+                       })
+                       .removeAttr("href")
+                       .bind( "vclick", btnVClickHandler );
+
+               popup.bind( "destroyed", function () {
+                       btn.unbind( "vclick", btnVClickHandler );
+               } );
+       };
+
        $( document ).bind( "pagecreate create", function ( e ) {
-               $.tizen.searchbar.prototype.enhanceWithin( e.target );
-       } );
+               $( $.tizen.popupwindow.prototype.options.initSelector, e.target )
+                       .not(":jqmData(role='none'), :jqmData(role='nojs')")
+                       .popupwindow();
 
-}( jQuery ) );
+               $( "a[href^='#']:jqmData(rel='popupwindow')", e.target ).each( function () {
+                       $.tizen.popupwindow.bindPopupToButton( $( this ), $( $( this ).attr("href") ) );
+               });
+       });
+}( jQuery ));
 
 
 
@@ -16516,7 +16765,7 @@ source:
  *             : Change Type and Format options. use datetimepicker( "option", "format" ) instead
  *
  * Events:
- *     date-changed: Raised when date/time was changed.
+ *     date-changed: Raised when date/time was changed. Date-changed event will be deprecated
  *
  * Examples:
  *     <ul data-role="listview">
@@ -16549,8 +16798,8 @@ source:
  * How to get a return value:
  * ==========================
  * Bind to the 'date-changed' event, e.g.:
- *    $("#myDatetimepicker").bind("date-changed", function(e, date) {
- *        alert("New date: " + date.toString());
+ *    $("#myDatetimepicker").bind("change", function() {
+ *                     // your code
  *    });
  */
 
@@ -17160,6 +17409,13 @@ source:
                                $( $li[current] ).addClass("current");
                                $div.jqmData( "list", $li );
                                $div.circularview();
+                               if( !obj._reflow ) {
+                                       obj._reflow = function() {
+                                               $div.circularview( "reflow" );
+                                               $div.circularview( 'centerTo', '.current', 0 );
+                                       }
+                                       $(window).bind( "resize" , obj._reflow );
+                               }
                                // cause ctxpopup forced to subtract 10
                                if ( $( window ).width() / 2 < target.offset().left ) {
                                        newLeft = -10;
@@ -17265,4 +17521,4 @@ source:
 } ( jQuery, this ) );
 
 
-(function($){$.tizen.frameworkData.pkgVersion="0.2.20";}(jQuery));
+(function($){$.tizen.frameworkData.pkgVersion="0.2.23";}(jQuery));
index 1fe5433..49aebea 100644 (file)
@@ -46,10 +46,10 @@ Globalize (http://github.com/jquery/globalize/) [MIT license]
 
 glMatrix 1.3.7 (https://github.com/toji/gl-matrix) [https://github.com/toji/gl-matrix/blob/master/LICENSE.md]
 */
-function range(a,b,c){var d=[],e,f,g,h=c||1,i=!1;!isNaN(a)&&!isNaN(b)?(e=a,f=b):isNaN(a)&&isNaN(b)?(i=!0,e=a.charCodeAt(0),f=b.charCodeAt(0)):(e=isNaN(a)?0:a,f=isNaN(b)?0:b),g=e>f?!1:!0;if(g)while(e<=f)d.push(i?String.fromCharCode(e):e),e+=h;else while(e>=f)d.push(i?String.fromCharCode(e):e),e-=h;return d}function ensureNS(ns){var nsAr=ns.split("."),nsSoFar="";for(var Nix in nsAr)nsSoFar=nsSoFar+(Nix>0?".":"")+nsAr[Nix],eval(nsSoFar+" = "+nsSoFar+" || {};")}(function(a,b,c,d){function e(c){var d=a(c),e=d.children(".ui-content"),f=d.children(".ui-header").outerHeight()||0,g=d.children(".ui-footer").outerHeight()||0,h=parseFloat(e.css("padding-top")),i=parseFloat(e.css("padding-bottom")),j=a(b).height();e.height(j-(f+g)-(h+i))}function f(b){this.options=a.extend({},b),this.easing="easeOutQuad",this.reset()}function h(){return Date.now()}var g={scrolling:0,overshot:1,snapback:2,done:3};jQuery.widget("tizen.scrollview",jQuery.mobile.widget,{options:{direction:null,timerInterval:10,scrollDuration:1e3,overshootDuration:250,snapbackDuration:500,moveThreshold:30,moveIntervalThreshold:150,scrollMethod:"translate",startEventName:"scrollstart",updateEventName:"scrollupdate",stopEventName:"scrollstop",eventType:a.support.touch?"touch":"mouse",showScrollBars:!0,overshootEnable:!1,outerScrollEnable:!1,overflowEnable:!0,scrollJump:!1},_getViewHeight:function(){return this._$view.height()},_getViewWidth:function(){return this._$view.width()},_makePositioned:function(a){a.css("position")==="static"&&a.css("position","relative")},_create:function(){var b,c=this;this._$clip=a(this.element).addClass("ui-scrollview-clip"),this._$clip.children(".ui-scrollview-view").length?this._$view=this._$clip.children(".ui-scrollview-view"):this._$view=this._$clip.wrapInner("<div></div>").children().addClass("ui-scrollview-view"),this.options.scrollMethod==="translate"&&this._$view.css("transform")===d&&(this.options.scrollMethod="position"),this._$clip.css("overflow","hidden"),this._makePositioned(this._$clip),this._makePositioned(this._$view),this._$view.css({left:0,top:0}),this._view_height=this._getViewHeight(),this._sx=0,this._sy=0,b=this.options.direction,this._hTracker=b!=="y"?new f(this.options):null,this._vTracker=b!=="x"?new f(this.options):null,this._timerInterval=this.options.timerInterval,this._timerID=0,this._timerCB=function(){c._handleMomentumScroll()},this._add_event(),this._add_scrollbar(),this._add_scroll_jump(),this._add_overflow_indicator()},_startMScroll:function(a,b){var c=!1,d=this.options.scrollDuration,e=this._hTracker,f=this._vTracker,g,h;this._$clip.trigger(this.options.startEventName);if(e){g=this._$clip.width(),h=this._getViewWidth();if((this._sx===0&&a>0||this._sx===-(h-g)&&a<0)&&h>g)return;e.start(this._sx,a,d,h>g?-(h-g):0,0),c=!e.done()}if(f){g=this._$clip.height(),h=this._getViewHeight();if((this._sy===0&&b>0||this._sy===-(h-g)&&b<0)&&h>g)return;f.start(this._sy,b,d,h>g?-(h-g):0,0),c=c||!f.done()}c?this._timerID=setTimeout(this._timerCB,this._timerInterval):this._stopMScroll()},_stopMScroll:function(){this._timerID&&(this._$clip.trigger(this.options.stopEventName),clearTimeout(this._timerID)),this._timerID=0,this._vTracker&&this._vTracker.reset(),this._hTracker&&this._hTracker.reset(),this._hideScrollBars(),this._hideOverflowIndicator()},_handleMomentumScroll:function(){var a=!1,b=0,c=0,d=0,e=this,f=function(a){setTimeout(function(){e._effect_dir=a,e._setEndEffect("in")},100),setTimeout(function(){e._setEndEffect("out")},350)},g=this._vTracker,h=this._hTracker;if(this._outerScrolling)return;g&&(g.update(this.options.overshootEnable),c=g.getPosition(),a=!g.done(),g.getRemained()>this.options.overshootDuration&&(d=this._getViewHeight()-this._$clip.height(),g.isAvail()?g.isMin()?(this._outerScroll(c-g.getRemained()/3,d),d>0&&f(1)):g.isMax()&&(this._outerScroll(g.getRemained()/3,d),d>0&&f(0)):this._speedY>0?this._outerScroll(g.getRemained()/3,d):this._outerScroll(c-g.getRemained()/3,d))),h&&(h.update(this.options.overshootEnable),b=h.getPosition(),a=a||!h.done()),this._setScrollPosition(b,c),this._$clip.trigger(this.options.updateEventName,[{x:b,y:c}]),a?this._timerID=setTimeout(this._timerCB,this._timerInterval):this._stopMScroll()},_setElementTransform:function(b,c,e,f){var g,h;!f||f===d?h="none":h="-webkit-transform "+f/1e3+"s ease-out",a.support.cssTransform3d?g="translate3d("+c+","+e+", 0px)":g="translate("+c+","+e+")",b.css({"-moz-transform":g,"-webkit-transform":g,"-ms-transform":g,"-o-transform":g,transform:g,"-webkit-transition":h})},_setEndEffect:function(a){var b=this._getViewHeight()-this._$clip.height();if(this._softkeyboard){this._effect_dir?this._outerScroll(-b-this._softkeyboardHeight,b):this._outerScroll(this._softkeyboardHeight,b);return}if(a==="in"){if(this._endEffect)return;this._endEffect=!0,this._setOverflowIndicator(this._effect_dir),this._showOverflowIndicator()}else if(a==="out"){if(!this._endEffect)return;this._endEffect=!1}else this._endEffect=!1,this._setOverflowIndicator(),this._showOverflowIndicator()},_setCalibration:function(a,b){if(this.options.overshootEnable){this._sx=a,this._sy=b;return}var c=this._$view,d=this._$clip,e=this._directionLock,f=0,g=0;e!=="y"&&this._hTracker&&(g=c.width()-d.width(),a>=0?this._sx=0:a<-g?this._sx=-g:this._sx=a,g<0&&(this._sx=0)),e!=="x"&&this._vTracker&&(f=this._getViewHeight()-d.height(),b>0?(this._sy=0,this._didDrag&&f>0&&(this._effect_dir=0,this._setEndEffect("in"))):b<-f?(this._sy=-f,this._didDrag&&f>0&&(this._effect_dir=1,this._setEndEffect("in"))):(this._endEffect&&this._sy!==b&&this._setEndEffect(),this._sy=b),f<0&&(this._sy=0))},_setScrollPosition:function(a,b,c){var d=this._$view,e=this.options.scrollMethod,f=this._$vScrollBar,g=this._$hScrollBar,h;this._setCalibration(a,b),a=this._sx,b=this._sy,e==="translate"?this._setElementTransform(d,a+"px",b+"px",c):d.css({left:a+"px",top:b+"px"}),f&&(h=f.find(".ui-scrollbar-thumb"),e==="translate"?this._setElementTransform(h,"0px",-b/this._getViewHeight()*h.parent().height()+"px",c):h.css("top",-b/this._getViewHeight()*100+"%")),g&&(h=g.find(".ui-scrollbar-thumb"),e==="translate"?this._setElementTransform(h,-a/d.width()*h.parent().width()+"px","0px",c):h.css("left",-a/d.width()*100+"%"))},_outerScroll:function(c,e){var f=this,g=a(b).scrollTop()-b.screenTop,i=0,j=this.options.snapbackDuration,k=h(),l;if(!this.options.outerScrollEnable)return;if(this._$clip.jqmData("scroll")!=="y")return;if(this._outerScrolling)return;if(c>0)i=b.screenTop?b.screenTop:-c;else{if(!(c<-e))return;i=-c-e}l=function(){var c=h()-k;c>=j?(b.scrollTo(0,g+i),f._outerScrolling=d,f._stopMScroll()):(ec=a.easing.easeOutQuad(c/j,c,0,1,j),b.scrollTo(0,g+i*ec),f._outerScrolling=setTimeout(l,f._timerInterval))},this._outerScrolling=setTimeout(l,f._timerInterval)},_scrollTo:function(b,c,d){var e=this,f=h(),g=a.easing.easeOutQuad,i=this._sx,j=this._sy,k=b-i,l=c-j,m;b=-b,c=-c,m=function(){var a=h()-f,n;a>=d?(e._timerID=0,e._setScrollPosition(b,c)):(n=g(a/d,a,0,1,d),e._setScrollPosition(i+k*n,j+l*n),e._timerID=setTimeout(m,e._timerInterval))},this._timerID=setTimeout(m,this._timerInterval)},scrollTo:function(a,b,c){this._stopMScroll(),this._didDrag=!1,!c||this.options.scrollMethod==="translate"?this._setScrollPosition(a,b,c):this._scrollTo(a,b,c)},getScrollPosition:function(){return{x:-this._sx,y:-this._sy}},skipDragging:function(a){this._skip_dragging=a},_getScrollHierarchy:function(){var b=[],c;return this._$clip.parents(".ui-scrollview-clip").each(function(){c=a(this).jqmData("scrollview"),c&&b.unshift(c)}),b},_getAncestorByDirection:function(a){var b=this._getScrollHierarchy(),c=b.length,d,e;while(0<c--){d=b[c],e=d.options.direction;if(!e||e===a)return d}return null},_handleDragStart:function(b,c,d){this._stopMScroll(),this._didDrag=!1,this._skip_dragging=!1;var e=a(b.target),f=this,g=this._$clip,h=this.options.direction;this._is_button=e.is(".ui-btn")||e.is(".ui-btn-text")||e.is(".ui-btn-inner")||e.is(".ui-btn-inner .ui-icon");if(e.parents(".ui-slider").length||e.is(".ui-slider")){this._skip_dragging=!0;return}e.is("textarea")&&e.bind("scroll",function(){f._skip_dragging=!0,e.unbind("scroll")}),this._is_inputbox=e.is(":input")||e.parents(":input").length>0,this._is_inputbox&&e.one("resize.scrollview",function(){d>g.height()&&f.scrollTo(-c,f._sy-d+g.height(),f.options.snapbackDuration)}),this.options.eventType==="mouse"&&!this._is_inputbox&&!this._is_button&&b.preventDefault(),this._lastX=c,this._lastY=d,this._startY=d,this._doSnapBackX=!1,this._doSnapBackY=!1,this._speedX=0,this._speedY=0,this._directionLock="",this._lastMove=0,this._enableTracking(),this._set_scrollbar_size()},_propagateDragMove:function(a,b,c,d,e){this._hideScrollBars(),this._hideOverflowIndicator(),this._disableTracking(),a._handleDragStart(b,c,d),a._directionLock=e,a._didDrag=this._didDrag},_handleDragMove:function(b,c,d){if(this._skip_dragging)return;if(!this._dragging)return;!this._is_inputbox&&!this._is_button&&b.preventDefault();var e=this.options.moveThreshold,f=c-this._lastX,g=d-this._lastY,i=this.options.direction,j=null,k,l,m,n,o,p,q;this._lastMove=h();if(!this._directionLock){k=Math.abs(f),l=Math.abs(g);if(k<e&&l<e)return!1;k<l&&k/l<.5?j="y":k>l&&l/k<.5&&(j="x");if(i&&j&&i!==j){m=this._getAncestorByDirection(j);if(m)return this._propagateDragMove(m,b,c,d,j),!1}this._directionLock=i||j||"none"}o=this._sx,p=this._sy,q=this._directionLock;if(q!=="y"&&this._hTracker){k=this._sx,this._speedX=f,o=k+f,this._doSnapBackX=!1,n=o>0||o<this._maxX;if(n&&q==="x"){m=this._getAncestorByDirection("x");if(m)return this._setScrollPosition(o>0?0:this._maxX,p),this._propagateDragMove(m,b,c,d,j),!1;o=k+f/2,this._doSnapBackX=!0}}if(q!=="x"&&this._vTracker){if(Math.abs(this._startY-d)<e&&q!=="xy")return;l=this._sy,this._speedY=g,p=l+g,this._doSnapBackY=!1,n=p>0||p<this._maxY;if(n&&q==="y"){m=this._getAncestorByDirection("y");if(m)return this._setScrollPosition(o,p>0?0:this._maxY),this._propagateDragMove(m,b,c,d,j),!1;p=l+g/2,this._doSnapBackY=!0}}this.options.overshootEnable===!1&&(this._doSnapBackX=!1,this._doSnapBackY=!1),this._lastX=c,this._lastY=d,this._setScrollPosition(o,p),this._didDrag===!1&&(this._didDrag=!0,this._showScrollBars(),this._showOverflowIndicator(),this._$clip.parents(".ui-scrollview-clip").each(function(){a(this).scrollview("skipDragging",!0)}))},_handleDragStop:function(a){var b=this;if(this._skip_dragging)return;var c=this._lastMove,d=h(),e=c&&d-c<=this.options.moveIntervalThreshold,f=this._hTracker&&this._speedX&&e?this._speedX:this._doSnapBackX?1:0,g=this._vTracker&&this._speedY&&e?this._speedY:this._doSnapBackY?1:0,i=this.options.direction,j,k;return f||g?this._setGestureScroll(f,g)||this._startMScroll(f,g):(this._hideScrollBars(),this._hideOverflowIndicator()),this._disableTracking(),this._endEffect&&setTimeout(function(){b._setEndEffect("out"),b._hideScrollBars(),b._hideOverflowIndicator()},300),!this._didDrag},_setGestureScroll:function(a,b){var c=this,e=function(){clearTimeout(c._gesture_timer),c._gesture_dir=0,c._gesture_timer=d},f={top:0,bottom:1,left:2,right:3};return!b&&!a?!1:(Math.abs(a)>Math.abs(b)?dir=a>0?f.left:f.right:dir=b>0?f.top:f.bottom,this._gesture_timer?this._gesture_dir!==dir?(e(),!1):!1:(this._gesture_dir=dir,this._gesture_timer=setTimeout(function(){e()},1e3),!1))},_enableTracking:function(){this._dragging=!0},_disableTracking:function(){this._dragging=!1},_showScrollBars:function(a){var b="ui-scrollbar-visible",c=this;if(!this.options.showScrollBars)return;if(this._scrollbar_showed)return;this._$vScrollBar&&this._$vScrollBar.addClass(b),this._$hScrollBar&&this._$hScrollBar.addClass(b),this._scrollbar_showed=!0,a&&setTimeout(function(){c._hideScrollBars()},a)},_hideScrollBars:function(){var a="ui-scrollbar-visible";if(!this.options.showScrollBars)return;if(!this._scrollbar_showed)return;this._$vScrollBar&&this._$vScrollBar.removeClass(a),this._$hScrollBar&&this._$hScrollBar.removeClass(a),this._scrollbar_showed=!1},_setOverflowIndicator:function(a){a===1?(this._opacity_top="0",this._opacity_bottom="0.8"):a===0?(this._opacity_top="0.8",this._opacity_bottom="0"):(this._opacity_top="0.5",this._opacity_bottom="0.5")},_showOverflowIndicator:function(){if(!this.options.overflowEnable||!this._overflowAvail||this._softkeyboard)return;this._overflow_top.animate({opacity:this._opacity_top},300),this._overflow_bottom.animate({opacity:this._opacity_bottom},300),this._overflow_showed=!0},_hideOverflowIndicator:function(){if(!this.options.overflowEnable||!this._overflowAvail||this._softkeyboard)return;if(this._overflow_showed===!1)return;this._overflow_top.animate({opacity:0},300),this._overflow_bottom.animate({opacity:0},300),this._overflow_showed=!1,this._setOverflowIndicator()},_add_event:function(){var c=this,e=this._$clip,f=this._$view;this.options.eventType==="mouse"?(this._dragEvt="mousedown mousemove mouseup click mousewheel",this._dragCB=function(a){switch(a.type){case"mousedown":return c._handleDragStart(a,a.clientX,a.clientY);case"mousemove":return c._handleDragMove(a,a.clientX,a.clientY);case"mouseup":return c._handleDragStop(a);case"click":return!c._didDrag;case"mousewheel":var b=c.getScrollPosition();c.scrollTo(-b.x,-(b.y-a.originalEvent.wheelDelta))}}):(this._dragEvt="touchstart touchmove touchend click",this._dragCB=function(a){var b=a.originalEvent.touches;switch(a.type){case"touchstart":if(b.length!=1)return;return c._handleDragStart(a,b[0].pageX,b[0].pageY);case"touchmove":if(b.length!=1)return;return c._handleDragMove(a,b[0].pageX,b[0].pageY);case"touchend":if(b.length!=0)return;return c._handleDragStop(a);case"click":return!c._didDrag}}),f.bind(this._dragEvt,this._dragCB),f.bind("keydown",function(f){var g,h,i=a(b).scrollTop()-b.screenTop,j;if(f.keyCode==9)return!1;g=e.find(".ui-focus");if(g===d)return;h=g.offset().top-i,j=e.offset().top+e.height()-g.height(),c._softkeyboard&&(j-=c._softkeyboardHeight),(h<e.offset().top||h>j)&&c.scrollTo(0,c._sy-(h-e.offset().top-g.height()));return}),f.bind("keyup",function(d){var f,g,h,j=a(b).scrollTop()-b.screenTop,k;if(d.keyCode!=9)return;f=a(this).find(":input");for(i=0;i<f.length;i++){if(!a(f[i]).hasClass("ui-focus"))continue;i+1==f.length?g=a(f[0]):g=a(f[i+1]),h=g.offset().top-j,k=e.offset().top+e.height()-g.height(),c._softkeyboard&&(k-=c._softkeyboardHeight),(h<0||h>k)&&c.scrollTo(0,c._sy-h+g.height()+e.offset().top,0),g.focus();break}return!1}),e.bind("updatelayout",function(a){var b,d,f=c._getViewHeight();if(!e.height()||!f){c.scrollTo(0,0,0);return}b=e.height()-f,d=f-c._view_height,c._view_height=f;if(d==0||d>e.height()/2)return;b>0?c.scrollTo(0,0,0):c._sy-b<=-d?c.scrollTo(0,c._sy,c.options.snapbackDuration):c._sy-b<=d+c.options.moveThreshold&&c.scrollTo(0,b,c.options.snapbackDuration)}),a(b).bind("resize",function(b){var d,f=c._getViewHeight();if(a(".ui-page-active").get(0)!==e.closest(".ui-page").get(0))return;if(!e.height()||!f)return;d=e.find(".ui-focus"),d&&d.trigger("resize.scrollview"),setTimeout(function(){c._sy<e.height()-c._getViewHeight()&&c.scrollTo(0,e.height()-c._getViewHeight(),c.options.overshootDuration)},260),c._view_height=f}),a(b).bind("vmouseout",function(d){var f=!1;if(a(".ui-page-active").get(0)!==e.closest(".ui-page").get(0))return;if(!c._dragging)return;if(d.pageX<0||d.pageX>a(b).width())f=!0;if(d.pageY<0||d.pageY>a(b).height())f=!0;f&&(c._hideScrollBars(),c._hideOverflowIndicator(),c._disableTracking())}),this._softkeyboard=!1,this._softkeyboardHeight=0,b.addEventListener("softkeyboardchange",function(d){if(a(".ui-page-active").get(0)!==e.closest(".ui-page").get(0))return;c._softkeyboard=d.state==="on"?!0:!1,c._softkeyboardHeight=parseInt(d.height)*(a(b).width()/b.screen.availWidth)}),e.closest(".ui-page").bind("pageshow",function(a){setTimeout(function(){c._view_height=c._getViewHeight(),c._set_scrollbar_size(),c._setScrollPosition(c._sx,c._sy),c._showScrollBars(2e3)},0)})},_add_scrollbar:function(){var a=this._$clip,b='<div class="ui-scrollbar ui-scrollbar-',c='"><div class="ui-scrollbar-track"><div class="ui-scrollbar-thumb"></div></div></div>';if(!this.options.showScrollBars)return;this._vTracker&&(a.append(b+"y"+c),this._$vScrollBar=a.children(".ui-scrollbar-y")),this._hTracker&&(a.append(b+"x"+c),this._$hScrollBar=a.children(".ui-scrollbar-x")),this._scrollbar_showed=!1},_add_scroll_jump:function(){var b=this._$clip,c=this,d,e;if(!this.options.scrollJump)return;this._vTracker&&(d=a('<div class="ui-scroll-jump-top-bg"><div data-role="button" data-inline="true" data-icon="scrolltop" data-style="box"></div></div>'),b.append(d).trigger("create"),d.bind("vclick",function(){c.scrollTo(0,0,c.options.overshootDuration)})),this._hTracker&&(e=a('<div class="ui-scroll-jump-left-bg"><div data-role="button" data-inline="true" data-icon="scrollleft" data-style="box"></div></div>'),b.append(e).trigger("create"),e.bind("vclick",function(){c.scrollTo(0,0,c.options.overshootDuration)}))},_add_overflow_indicator:function(){if(!this.options.overflowEnable)return;this._overflow_top=a('<div class="ui-overflow-indicator-top"></div>'),this._overflow_bottom=a('<div class="ui-overflow-indicator-bottom"></div>'),this._$clip.append(this._overflow_top),this._$clip.append(this._overflow_bottom),this._opacity_top="0.5",this._opacity_bottom="0.5",this._overflow_showed=!1},_set_scrollbar_size:function(){var a=this._$clip,b=this._$view,c=0,d=0,e=0,f=0,g;if(!this.options.showScrollBars)return;this._hTracker&&(c=a.width(),d=b.width(),this._maxX=c-d,this._maxX>0&&(this._maxX=0),this._$hScrollBar&&d&&(g=this._$hScrollBar.find(".ui-scrollbar-thumb"),g.css("width",c>=d?"0":(Math.floor(c/d*100)||1)+"%")));if(this._vTracker){e=a.height(),f=this._getViewHeight(),this._maxY=e-f;if(this._maxY>0||f===0)this._maxY=0;if(this._$vScrollBar&&f||f===0)g=this._$vScrollBar.find(".ui-scrollbar-thumb"),g.css("height",e>=f?"0":(Math.floor(e/f*100)||1)+"%"),this._overflowAvail=!!g.height()}}}),a.extend(f.prototype,{start:function(a,b,c,d,e){var f=a<d||a>e?g.snapback:g.scrolling,i;this.state=b!==0?f:g.done,this.pos=a,this.speed=b,this.duration=this.state===g.snapback?this.options.snapbackDuration:c,this.minPos=d,this.maxPos=e,this.fromPos=this.state===g.snapback?this.pos:0,i=this.pos<this.minPos?this.minPos:this.maxPos,this.toPos=this.state===g.snapback?i:0,this.startTime=h()},reset:function(){this.state=g.done,this.pos=0,this.speed=0,this.minPos=0,this.maxPos=0,this.duration=0,this.remained=0},update:function(b){var c=this.state,d=h(),e=this.duration,f=d-this.startTime,i,j,k;return c===g.done?this.pos:(f=f>e?e:f,this.remained=e-f,c===g.scrolling||c===g.overshot?(i=this.speed*(1-a.easing[this.easing](f/e,f,0,1,e)),j=this.pos+i,k=c===g.scrolling&&(j<this.minPos||j>this.maxPos),k&&(j=j<this.minPos?this.minPos:this.maxPos),this.pos=j,c===g.overshot?(b||(this.state=g.done),f>=e&&(this.state=g.snapback,this.fromPos=this.pos,this.toPos=j<this.minPos?this.minPos:this.maxPos,this.duration=this.options.snapbackDuration,this.startTime=d,f=0)):c===g.scrolling&&(k&&b?(this.state=g.overshot,this.speed=i/2,this.duration=this.options.overshootDuration,this.startTime=d):f>=e&&(this.state=g.done))):c===g.snapback&&(f>=e?(this.pos=this.toPos,this.state=g.done):this.pos=this.fromPos+(this.toPos-this.fromPos)*a.easing[this.easing](f/e,f,0,1,e)),this.pos)},done:function(){return this.state===g.done},isMin:function(){return this.pos===this.minPos},isMax:function(){return this.pos===this.maxPos},isAvail:function(){return this.minPos!==this.maxPos},getRemained:function(){return this.remained},getPosition:function(){return this.pos}}),a(c).bind("pagecreate create",function(b){var c=a(b.target),e=c.find(".ui-content").jqmData("scroll");a.support.scrollview===d&&(a.support.scrollview=!0),a.support.scrollview===!0&&e===d&&(e="y"),e!=="y"&&(e="none"),c.find(".ui-content").attr("data-scroll",e),c.find(":jqmData(scroll)").not(".ui-scrollview-clip").each(function(){if(a(this).hasClass("ui-scrolllistview"))a(this).scrolllistview();else{var b=a(this).jqmData("scroll"),c=b&&b.search(/^[xy]/)!==-1?b:null,e=a(this).hasClass("ui-content"),f;if(b==="none")return;f={direction:c||d,overflowEnable:e,scrollMethod:a(this).jqmData("scroll-method")||d,scrollJump:a(this).jqmData("scroll-jump")||d},a(this).scrollview(f)}})}),a(c).bind("pageshow",function(b){var c=a(b.target),d=c.find(".ui-content").jqmData("scroll");d==="y"&&e(b.target)})})(jQuery,window,document),function(a,b,c,d){function e(a,b){var c=a%b;return c<0&&(c=b+c),c}function f(a,b,c){var d="translate3d( "+b+","+c+", 0px)";a.css({"-ms-transform":d,"-o-transform":d,"-moz-transform":d,"-webkit-transform":d,transform:d})}function g(b){this.options=a.extend({},b),this.easing="easeOutQuad",this.reset()}function i(){return Date.now()}var h={scrolling:0,done:1};a.extend(g.prototype,{start:function(a,b,c){this.state=b!=0?h.scrolling:h.done,this.pos=a,this.speed=b,this.duration=c,this.fromPos=0,this.toPos=0,this.startTime=i()},reset:function(){this.state=h.done,this.pos=0,this.speed=0,this.duration=0},update:function(){var b=this.state,c,d,e,f;return b==h.done?this.pos:(c=this.duration,d=i()-this.startTime,d=d>c?c:d,e=this.speed*(1-a.easing[this.easing](d/c,d,0,1,c)),f=this.pos+e,this.pos=f,d>=c&&(this.state=h.done),this.pos)},done:function(){return this.state==h.done},getPosition:function(){return this.pos}}),jQuery.widget("mobile.circularview",jQuery.mobile.widget,{options:{fps:60,scrollDuration:2e3,moveThreshold:10,moveIntervalThreshold:150,startEventName:"scrollstart",updateEventName:"scrollupdate",stopEventName:"scrollstop",eventType:a.support.touch?"touch":"mouse",delayedClickSelector:"a, .ui-btn",delayedClickEnabled:!1},_makePositioned:function(a){a.css("position")=="static"&&a.css("position","relative")},_create:function(){var b=this;this._items=a(this.element).jqmData("list"),this._$clip=a(this.element).addClass("ui-scrollview-clip"),this._$clip.wrapInner('<div class="ui-scrollview-view"></div>'),this._$view=a(".ui-scrollview-view",this._$clip),this._$list=a("ul",this._$clip),this._$clip.css("overflow","hidden"),this._makePositioned(this._$clip),this._$view.css("overflow","hidden"),this._tracker=new g(this.options),this._timerInterval=1e3/this.options.fps,this._timerID=0,this._timerCB=function(){b._handleMomentumScroll()},this.refresh(),this._addBehaviors()},reflow:function(){var a=this.getScrollPosition();this.refresh(),this.scrollTo(a.x,a.y)},refresh:function(){var c;this._$clip.width(a(b).width()),this._clipWidth=this._$clip.width(),this._$list.empty(),this._$list.append(this._items[0]),this._itemWidth=a(this._items[0]).outerWidth(),a(this._items[0]).detach(),c=this._clipWidth/this._itemWidth,c=Math.ceil(c*10)/10,this._itemsPerView=parseInt(c,10);while(this._itemsPerView+1>this._items.length)a.merge(this._items,a(this._items).clone());this._rx=-this._itemWidth,this._sx=-this._itemWidth,this._setItems()},_startMScroll:function(a,b){this._stopMScroll();var c=!1,d=this.options.scrollDuration,e=this._tracker,f=this._clipWidth,g=this._viewWidth;this._$clip.trigger(this.options.startEventName),e.start(this._rx,a,d,g>f?-(g-f):0,0),c=!e.done(),c?this._timerID=setTimeout(this._timerCB,this._timerInterval):this._stopMScroll()},_stopMScroll:function(){this._timerID&&(this._$clip.trigger(this.options.stopEventName),clearTimeout(this._timerID)),this._timerID=0,this._tracker&&this._tracker.reset()},_handleMomentumScroll:function(){var a=!1,b=this._$view,c=0,d=0,e=this._tracker;e&&(e.update(),c=e.getPosition(),a=!e.done()),this._setScrollPosition(c,d),this._rx=c,this._$clip.trigger(this.options.updateEventName,[{x:c,y:d}]),a?this._timerID=setTimeout(this._timerCB,this._timerInterval):this._stopMScroll()},_setItems:function(){var a,b;for(a=-1;a<this._itemsPerView+1;a++)b=this._items[e(a,this._items.length)],this._$list.append(b);f(this._$view,this._sx+"px",0),this._$view.width(this._itemWidth*(this._itemsPerView+2)),this._viewWidth=this._$view.width()},_setScrollPosition:function(a,b){var c=this._sx,d=a-c,g=parseInt(d/this._itemWidth,10),h,i,j;if(g>0)for(h=0;h<g;h++)this._$list.children().last().detach(),i=-parseInt(c/this._itemWidth+h+3,10),j=this._items[e(i,this._items.length)],this._$list.prepend(j);else if(g<0)for(h=0;h>g;h--)this._$list.children().first().detach(),i=this._itemsPerView-parseInt(c/this._itemWidth+h,10),j=this._items[e(i,this._items.length)],this._$list.append(j);this._sx+=g*this._itemWidth,f(this._$view,a-this._sx-this._itemWidth+"px",0)},_enableTracking:function(){a(c).bind(this._dragMoveEvt,this._dragMoveCB),a(c).bind(this._dragStopEvt,this._dragStopCB)},_disableTracking:function(){a(c).unbind(this._dragMoveEvt,this._dragMoveCB),a(c).unbind(this._dragStopEvt,this._dragStopCB)},_getScrollHierarchy:function(){var b=[],c;return this._$clip.parents(".ui-scrollview-clip").each(function(){c=a(this).jqmData("circulaview"),c&&b.unshift(c)}),b},centerTo:function(b,c){var d,e;for(d=0;d<this._items.length;d++)if(a(this._items[d]).is(b)){e=-(d*this._itemWidth-this._clipWidth/2+this._itemWidth*1.5),this.scrollTo(e+this._itemWidth,0),this.scrollTo(e,0,c);return}},scrollTo:function(b,c,d){this._stopMScroll();if(!d){this._setScrollPosition(b,c),this._rx=b;return}var e=this,f=i(),g=a.easing.easeOutQuad,h=this._rx,j=0,k=b-h,l=0,m,n,o;this._rx=b,m=function(){n=i()-f,n>=d?(e._timerID=0,e._setScrollPosition(b,c),e._$clip.trigger("scrollend")):(o=g(n/d,n,0,1,d),e._setScrollPosition(h+k*o,j+l*o),e._timerID=setTimeout(m,e._timerInterval))},this._timerID=setTimeout(m,this._timerInterval)},getScrollPosition:function(){return{x:-this._rx,y:0}},_handleDragStart:function(b,c,d){a.each(this._getScrollHierarchy(),function(a,b){b._stopMScroll()}),this._stopMScroll(),this.options.delayedClickEnabled&&(this._$clickEle=a(b.target).closest(this.options.delayedClickSelector)),this._lastX=c,this._lastY=d,this._speedX=0,this._speedY=0,this._didDrag=!1,this._lastMove=0,this._enableTracking(),this._ox=c,this._nx=this._rx,(this.options.eventType=="mouse"||this.options.delayedClickEnabled)&&b.preventDefault(),b.stopPropagation()},_handleDragMove:function(a,b,c){this._lastMove=i();var d=b-this._lastX,e=c-this._lastY;return this._speedX=d,this._speedY=0,this._didDrag=!0,this._lastX=b,this._lastY=c,this._mx=b-this._ox,this._setScrollPosition(this._nx+this._mx,0),!1},_handleDragStop:function(a){var b=this._lastMove,c=i(),e=b&&c-b<=this.options.moveIntervalThreshold,f=this._tracker&&this._speedX&&e?this._speedX:0,g=0;return this._rx=this._mx?this._nx+this._mx:this._rx,f&&this._startMScroll(f,g),this._disableTracking(),!this._didDrag&&this.options.delayedClickEnabled&&this._$clickEle.length&&this._$clickEle.trigger("mousedown").trigger("mouseup").trigger("click"),this._didDrag&&(a.preventDefault(),a.stopPropagation()),this._didDrag?!1:d},_addBehaviors:function(){var a=this;this.options.eventType==="mouse"?(this._dragStartEvt="mousedown",this._dragStartCB=function(b){return a._handleDragStart(b,b.clientX,b.clientY)},this._dragMoveEvt="mousemove",this._dragMoveCB=function(b){return a._handleDragMove(b,b.clientX,b.clientY)},this._dragStopEvt="mouseup",this._dragStopCB=function(b){return a._handleDragStop(b)},this._$view.bind("vclick",function(b){return!a._didDrag})):(this._dragStartEvt="touchstart",this._dragStartCB=function(b){var c=b.originalEvent.targetTouches[0];return a._handleDragStart(b,c.pageX,c.pageY)},this._dragMoveEvt="touchmove",this._dragMoveCB=function(b){var c=b.originalEvent.targetTouches[0];return a._handleDragMove(b,c.pageX,c.pageY)},this._dragStopEvt="touchend",this._dragStopCB=function(b){return a._handleDragStop(b)}),this._$view.bind(this._dragStartEvt,this._dragStartCB)}}),a(c).bind("pagecreate create",function(b){a(a.mobile.circularview.prototype.options.initSelector,b.target).circularview()})}(jQuery,window,document),function(a,b,c){a.widget("tizen.gallery",a.mobile.widget,{options:{flicking:!1,duration:500},dragging:!1,moving:!1,max_width:0,max_height:0,org_x:0,org_time:null,cur_img:null,prev_img:null,next_img:null,images:[],images_hold:[],index:0,align_type:null,direction:1,container:null,_resize:function(a){var b=this.images[a],c=this.images[a].width(),d=this.images[a].height(),e=0,f,g=this.max_width-e,h=this.max_height-e;f=d/c,c>g&&(b.width(g),b.height(g*f)),d=b.height(),d>h&&(b.height(h),b.width(h/f))},_align:function(a,b){var c=this.images[a],d=0;if(!b)return;if(!b.length)return;this.align_type=="middle"?d=(this.max_height-c.height())/2:this.align_type=="bottom"?d=this.max_height-c.height():d=0,b.css("top",d+"px")},_attach:function(a,b){var d=this,e=function(){d._resize(a),d._align(a,b)},f=function(){if(d.images[a]===c)return;if(!d.images[a].height()){setTimeout(f,10);return}e()};if(!b)return;if(!b.length)return;if(a<0)return;if(!this.images.length)return;if(a>=this.images.length)return;b.css("display","block"),b.append(this.images[a]),f()},_detach:function(a,b){if(!b)return;if(!b.length)return;if(a<0)return;if(a>=this.images.length)return;b.css("display","none"),this.images[a].removeAttr("style"),this.images[a].detach()},_detach_all:function(){var a;for(a=0;a<this.images.length;a++)this.images[a].detach()},_drag:function(a){var b,c;if(!this.dragging)return;if(this.options.flicking===!1){b=this.org_x-a;if(b<0&&!this.prev_img.length)return;if(b>0&&!this.next_img.length)return}c=a-this.org_x,this._moveLeft(this.cur_img,c+"px"),this.next_img.length&&this._moveLeft(this.next_img,c+this.window_width+"px"),this.prev_img.length&&this._moveLeft(this.prev_img,c-this.window_width+"px")},_move:function(a){var b=this.org_x-a,c=0,d,e,f;if(b==0)return;b>0?c=b<this.max_width*.45?0:1:c=-b<this.max_width*.45?0:1,c||(d=Date.now()-this.org_time,Math.abs(b)/d>1&&(c=1)),c&&(b>0&&this.next_img.length?(this._detach(this.index-1,this.prev_img),this.prev_img=this.cur_img,this.cur_img=this.next_img,this.next_img=this.next_img.next(),this.index++,this.next_img.length&&(this._moveLeft(this.next_img,this.window_width+"px"),this._attach(this.index+1,this.next_img)),this.direction=1):b<0&&this.prev_img.length&&(this._detach(this.index+1,this.next_img),this.next_img=this.cur_img,this.cur_img=this.prev_img,this.prev_img=this.prev_img.prev(),this.index--,this.prev_img.length&&(this._moveLeft(this.prev_img,-this.window_width+"px"),this._attach(this.index-1,this.prev_img)),this.direction=-1)),e=this.options.duration,f=this,this.moving=!0,setTimeout(function(){f.moving=!1},e-25),this._moveLeft(this.cur_img,"0px",e),this.next_img.length&&this._moveLeft(this.next_img,this.window_width+"px",e),this.prev_img.length&&this._moveLeft(this.prev_img,-this.window_width+"px",e)},_add_event:function(){var a=this,b;this.container.bind("vmousemove",function(b){b.preventDefault();if(a.moving)return;if(!a.dragging)return;a._drag(b.pageX)}),this.container.bind("vmousedown",function(b){b.preventDefault();if(a.moving)return;a.dragging=!0,a.org_x=b.pageX,a.org_time=Date.now()}),this.container.bind("vmouseup",function(b){if(a.moving)return;a.dragging=!1,a._move(b.pageX)}),this.container.bind("vmouseout",function(b){if(a.moving)return;if(!a.dragging)return;if(b.pageX<20||b.pageX>a.max_width-20)a._move(b.pageX),a.dragging=!1})},_del_event:function(){this.container.unbind("vmousemove"),this.container.unbind("vmousedown"),this.container.unbind("vmouseup"),this.container.unbind("vmouseout")},_moveLeft:function(b,d,e){var f,g="",h=null;a.support.cssTransform3d?f="translate3d("+d+", 0px, 0px)":f="translate("+d+", 0px)";if(!e||e!==c)g="-webkit-transform "+e/1e3+"s ease";return h={"-moz-transform":f,"-webkit-transform":f,"-ms-transform":f,"-o-transform":f,transform:f},g!==""&&(h["-webkit-transition"]=g),b.css(h),b},_show:function(){this.window_width=a(b).width(),this.max_width=this._get_width(),this.max_height=this._get_height(),this.container.css("height",this.max_height),this.cur_img=a("div").find(".ui-gallery-bg:eq("+this.index+")"),this.prev_img=this.cur_img.prev(),this.next_img=this.cur_img.next(),this._attach(this.index-1,this.prev_img),this._attach(this.index,this.cur_img),this._attach(this.index+1,this.next_img),this.prev_img.length&&this._moveLeft(this.prev_img,-this.window_width+"px"),this._moveLeft(this.cur_img,"0px"),this.next_img.length&&this._moveLeft(this.next_img,this.window_width+"px")},show:function(){if(!this.images.length)return;this._show(),this._add_event()},_hide:function(){this._detach(this.index-1,this.prev_img),this._detach(this.index,this.cur_img),this._detach(this.index+1,this.next_img)},hide:function(){this._hide(),this._del_event()},_get_width:function(){return a(this.element).width()},_get_height:function(){var c=a(this.element).parentsUntil("ui-page"),d=c.children(".ui-content"),e=c.children(".ui-header").outerHeight()||0,f=c.children(".ui-footer").outerHeight()||0,g=parseFloat(d.css("padding-top"))+parseFloat(d.css("padding-bottom")),h=a(b).height()-e-f-g;return h},_create:function(){var c,d=this,e,f=0;a(this.element).wrapInner('<div class="ui-gallery"></div>'),
-a(this.element).find("img").wrap('<div class="ui-gallery-bg"></div>'),this.container=a(this.element).find(".ui-gallery"),c=a("div").find(".ui-gallery-bg:first");while(c.length)this.images[f]=c.find("img"),c=c.next(),f++;this._detach_all(),e=parseInt(a(this.element).jqmData("index"),10),e||(e=0),e<0&&(e=0),e>=this.images.length&&(e=this.images.length-1),this.index=e,this.align_type=a(this.element).jqmData("vertical-align"),a(b).bind("resize",function(){d.refresh()})},_update:function(){var b,c,d;while(this.images_hold.length)b=this.images_hold.shift(),c=a('<div class="ui-gallery-bg"></div>'),d=a('<img src="'+b+'"></div>'),c.append(d),this.container.append(c),this.images.push(d);this._detach_all()},refresh:function(a){return this._update(),this._hide(),a===c&&(a=this.index),a<0&&(a=0),a>=this.images.length&&(a=this.images.length-1),this.index=a,this._show(),this.index},add:function(a){this.images_hold.push(a)},remove:function(b){var d;b===c&&(b=this.index);if(b<0||b>=this.images.length)return;b==this.index?(d=this.cur_img,this.index==0?this.direction=1:this.index==this.images.length-1&&(this.direction=-1),this.direction<0?(this.cur_img=this.prev_img,this.prev_img=this.prev_img.prev(),this.prev_img.length&&(this._moveLeft(this.prev_img,-this.window_width),this._attach(b-2,this.prev_img)),this.index--):(this.cur_img=this.next_img,this.next_img=this.next_img.next(),this.next_img.length&&(this._moveLeft(this.next_img,this.window_width),this._attach(b+2,this.next_img))),this._moveLeft(this.cur_img,"0px",this.options.duration)):b==this.index-1?(d=this.prev_img,this.prev_img=this.prev_img.prev(),this.prev_img.length&&(this._moveLeft(this.prev_img,-this.window_width),this._attach(b-1,this.prev_img)),this.index--):b==this.index+1?(d=this.next_img,this.next_img=this.next_img.next(),this.next_img.length&&(this._moveLeft(this.next_img,this.window_width),this._attach(b+1,this.next_img))):d=a("div").find(".ui-gallery-bg:eq("+b+")"),this.images.splice(b,1),d.detach()},empty:function(){this.images.splice(0,this.images.length),this.container.find(".ui-gallery-bg").detach()},length:function(){return this.images.length},value:function(a){if(a===c)return this.index;this.refresh(a)}}),a(document).bind("pagecreate create",function(b){a(b.target).find(":jqmData(role='gallery')").gallery()}),a(document).bind("pageshow",function(b){a(b.target).find(":jqmData(role='gallery')").gallery("show")}),a(document).bind("pagebeforehide",function(b){a(b.target).find(":jqmData(role='gallery')").gallery("hide")})}(jQuery,this),function(a,b){var c={};a.widget("tizen.extendablelist",a.mobile.widget,{options:{theme:"s",countTheme:"c",headerTheme:"b",dividerTheme:"b",splitIcon:"arrow-r",splitTheme:"b",inset:!1,id:"",extenditems:50,childSelector:" li",dbtable:"",template:"",loadmore:"tmp_load_more",scrollview:!1,initSelector:":jqmData(role='extendablelist')"},_stylerMouseUp:function(){a(this).addClass("ui-btn-up-s"),a(this).removeClass("ui-btn-down-s")},_stylerMouseDown:function(){a(this).addClass("ui-btn-down-s"),a(this).removeClass("ui-btn-up-s")},_stylerMouseOver:function(){a(this).toggleClass("ui-btn-hover-s")},_stylerMouseOut:function(){a(this).toggleClass("ui-btn-hover-s"),a(this).addClass("ui-btn-up-s"),a(this).removeClass("ui-btn-down-s")},_pushData:function(b){var c=this.options,d=this,e=0,f=a("#"+b),g=c.extenditems>d._numItemData-d._lastIndex?d._numItemData-d.lastIndex:c.extenditems,h;for(e=0;e<g;e++)h=f.tmpl(d._itemData(e)),a(c.id).append(a(h).attr("id","li_"+e)),a(c.id+">"+c.childSelector).addClass("ui-btn-up-s").bind("mouseup",d._stylerMouseUp).bind("mousedown",d._stylerMouseDown).bind("mouseover",d._stylerMouseOver).bind("mouseout",d._stylerMouseOut),d._lastIndex+=1;a(c.id).trigger("create")},_loadmore:function(b){var c=b.data,d=c.options,e=0,f=a("#"+d.template),g=d.extenditems>c._numItemData-c._lastIndex?c._numItemData-c._lastIndex:d.extenditems,h,i,j;a("#load_more_message").remove();for(e=0;e<g;e++)h=f.tmpl(c._itemData(c._lastIndex)),a(d.id).append(a(h).attr("id","li_"+c._lastIndex)),c._lastIndex+=1;c._numItemData>c._lastIndex&&(f=a("#"+d.loadmore),i=c._numItemData-c._lastIndex,j=d.extenditems<=i?d.extenditems:i,h=f.tmpl({NUM_MORE_ITEMS:j}),a(d.id).append(a(h).attr("id","load_more_message").css("min-height","37px"))),a(d.id).trigger("create"),a(d.id).extendablelist("refresh")},recreate:function(a){this._create({itemData:function(b){return a[b]},numItemData:a.length})},_initList:function(b){var c=this,d=this.options,e,f,g,h;c._lastIndex<=0&&(c._pushData(d.template),c._numItemData>c._lastIndex?(e=a("#"+d.loadmore),f=c._numItemData-c._lastIndex,g=d.extenditems<=f?d.extenditems:f,h=e.tmpl({NUM_MORE_ITEMS:g}),a(d.id).append(a(h).attr("id","load_more_message").css("min-height","37px")),a("#load_more_message").live("click",c,c._loadmore)):(a("#load_more_message").die(),a("#load_more_message").remove())),d.childSelector==" ul"&&a(d.id+" ul").swipelist(),a(d.id).trigger("create"),c.refresh(!0)},create:function(){var a=this.options;this._create.apply(this,arguments)},_create:function(b){var c=this,d=this.options,e=this.element,f;c.destroy(),a.extend(this,{_itemData:function(a){return null},_numItemData:0,_cacheItemData:function(a,b){},_lastIndex:0}),c.element.addClass(function(a,b){return b+" ui-listview ui-extendable-list-container"+(c.options.inset?" ui-listview-inset ui-corner-all ui-shadow ":"")}),d.id="#"+e.attr("id"),e.data("extenditems")&&(d.extenditems=parseInt(e.data("extenditems"),10)),a(d.id).bind("pagehide",function(b){a(d.id).empty()}),a(".ui-scrollview-clip").size()>0?d.scrollview=!0:d.scrollview=!1;if(b){if(!c._loadData(b))return}else{console.warn("WARNING: The data interface of extendable list is changed. \nOld data interface(data-dbtable) is still supported, but will be removed in next version. \nPlease fix your code soon!");if(!a(d.id).hasClass("elLoadSuccess")){console.warn("No elLoadSuccess class");return}f=e.jqmData("dbtable"),d.dbtable=window[f],d.dbtable||(d.dbtable={}),c._itemData=function(a){return d.dbtable[a]},c._numItemData=d.dbtable.length}e.data("template")&&(d.template=e.data("template"),e.data("swipelist")==1?d.childSelector=" ul":d.shildSelector=" li"),c._initList(b)},_loadData:function(a){var b=this;if(!a.itemData||typeof a.itemData!="function")return!1;b._itemData=a.itemData;if(!a.numItemData)return!1;if(typeof a.numItemData=="function")b._numItemData=a.numItemData();else{if(typeof a.numItemData!="number")return!1;b._numItemData=a.numItemData}return!0},destroy:function(){var b=this.options,c=0,d=0;a(b.id).empty(),a("#load_more_message").die()},_itemApply:function(b,c){var d=c.find(".ui-li-count");d.length&&c.addClass("ui-li-has-count"),d.addClass("ui-btn-up-"+(b.jqmData("counttheme")||this.options.countTheme)+" ui-btn-corner-all"),c.find("h1, h2, h3, h4, h5, h6").addClass("ui-li-heading").end().find("p, dl").addClass("ui-li-desc").end().find(">img:eq(0), .ui-link-inherit>img:eq(0)").addClass("ui-li-thumb").each(function(){c.addClass(a(this).is(".ui-li-icon")?"ui-li-has-icon":"ui-li-has-thumb")}).end().find(".ui-li-aside").each(function(){var b=a(this);b.prependTo(b.parent())})},_removeCorners:function(a,b){var c="ui-corner-top ui-corner-tr ui-corner-tl",d="ui-corner-bottom ui-corner-br ui-corner-bl";a=a.add(a.find(".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb")),b==="top"?a.removeClass(c):b==="bottom"?a.removeClass(d):a.removeClass(c+" "+d)},_refreshCorners:function(a){var b,c,d,e;this.options.inset&&(b=this.element.children("li"),c=a?b.not(".ui-screen-hidden"):b.filter(":visible"),this._removeCorners(b),d=c.first().addClass("ui-corner-top"),d.add(d.find(".ui-btn-inner")).find(".ui-li-link-alt").addClass("ui-corner-tr").end().find(".ui-li-thumb").not(".ui-li-icon").addClass("ui-corner-tl"),e=c.last().addClass("ui-corner-bottom"),e.add(e.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"))},refresh:function(b){this.parentPage=this.element.closest(".ui-page"),this._createSubPages();var c=this.options,d=this.element,e=this,f=d.jqmData("dividertheme")||c.dividerTheme,g=d.jqmData("splittheme"),h=d.jqmData("spliticon"),i=d.children("li"),j=a.support.cssPseudoElement||!a.nodeName(d[0],"ol")?0:1,k,l,m,n,o,p,q,r,s,t;j&&d.find(".ui-li-dec").remove();for(s=0,t=i.length;s<t;s++){k=i.eq(s),l="ui-li";if(b||!k.hasClass("ui-li"))m=k.jqmData("theme")||c.theme,n=k.children("a"),n.length?(r=k.jqmData("icon"),k.buttonMarkup({wrapperEls:"div",shadow:!1,corners:!1,iconpos:"right",icon:!1,theme:m}),r!=0&&n.length==1&&k.addClass("ui-li-has-arrow"),n.first().addClass("ui-link-inherit"),n.length>1&&(l+=" ui-li-has-alt",o=n.last(),p=g||o.jqmData("theme")||c.splitTheme,o.appendTo(k).attr("title",o.getEncodedText()).addClass("ui-li-link-alt").empty().buttonMarkup({shadow:!1,corners:!1,theme:m,icon:!1,iconpos:!1}).find(".ui-btn-inner").append(a("<span />").buttonMarkup({shadow:!0,corners:!0,theme:p,iconpos:"notext",icon:h||o.jqmData("icon")||c.splitIcon})))):k.jqmData("role")==="list-divider"?(l+=" ui-li-divider ui-btn ui-bar-"+f,k.attr("role","heading"),j&&(j=1)):l+=" ui-li-static ui-body-"+m;j&&l.indexOf("ui-li-divider")<0&&(q=k.is(".ui-li-static:first")?k:k.find(".ui-link-inherit"),q.addClass("ui-li-jsnumbering").prepend("<span class='ui-li-dec'>"+j++ +". </span>")),k.add(k.children(".ui-btn-inner")).addClass(l),e._itemApply(d,k)}this._refreshCorners(b)},_idStringEscape:function(a){return a.replace(/\W/g,"-")},_createSubPages:function(){var b=this.element,d=b.closest(".ui-page"),e=d.jqmData("url"),f=e||d[0][a.expando],g=b.attr("id"),h=this.options,i="data-"+a.mobile.ns,j=this,k=d.find(":jqmData(role='footer')").jqmData("id"),l,m;typeof c[f]=="undefined"&&(c[f]=-1),g=g||++c[f],a(b.find("li>ul, li>ol").toArray().reverse()).each(function(c){var d=this,f=a(this),j=f.attr("id")||g+"-"+c,m=f.parent(),n,p=n.first().getEncodedText(),q=(e||"")+"&"+a.mobile.subPageUrlKey+"="+j,r=f.jqmData("theme")||h.theme,s=f.jqmData("counttheme")||b.jqmData("counttheme")||h.countTheme,t,u;n=a(f.prevAll().toArray().reverse()),n=n.length?n:a("<span>"+a.trim(m.contents()[0].nodeValue)+"</span>"),l=!0,t=f.detach().wrap("<div "+i+"role='page' "+i+"url='"+q+"' "+i+"theme='"+r+"' "+i+"count-theme='"+s+"'><div "+i+"role='content'></div></div>").parent().before("<div "+i+"role='header' "+i+"theme='"+h.headerTheme+"'><div class='ui-title'>"+p+"</div></div>").after(k?a("<div "+i+"role='footer' "+i+"id='"+k+"'>"):"").parent().appendTo(a.mobile.pageContainer),t.page(),u=m.find("a:first"),u.length||(u=a("<a/>").html(n||p).prependTo(m.empty())),u.attr("href","#"+q)}).extendablelist(),l&&d.is(":jqmData(external-page='true')")&&d.data("page").options.domCache===!1&&(m=function(b,c){var f=c.nextPage,g;c.nextPage&&(g=f.jqmData("url"),g.indexOf(e+"&"+a.mobile.subPageUrlKey)!==0&&(j.childPages().remove(),d.remove()))},d.unbind("pagehide.remove").bind("pagehide.remove",m))},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.tizen.extendablelist.prototype.options.initSelector,b.target).extendablelist()})}(jQuery),function(a,b){a.widget("tizen.fastscroll",a.mobile.widget,{options:{initSelector:":jqmData(fastscroll)"},_primaryLanguage:null,_secondLanguage:null,_create:function(){var b=this.element,c=this,d,e=b.closest(':jqmData(role="page")'),f;this.scrollview=b.closest(".ui-scrollview-clip"),this.shortcutsContainer=a('<div class="ui-fastscroll" aria-label="Fast scroll bar, double tap to fast scroll mode" tabindex="0"/>'),this.shortcutsList=a('<ul aria-hidden="true"></ul>'),this.scrollview.append(a('<div class="ui-fastscroll-popup"></div>')),d=this.scrollview.find(".ui-fastscroll-popup"),this.shortcutsContainer.append(this.shortcutsList),this.scrollview.append(this.shortcutsContainer),this.lastListItem=b.children().last(),this.scrollview.find(".ui-scrollbar").hide(),this.jumpToDivider=function(b){var d=a(b).position().top,e=c.lastListItem.outerHeight(!0)+c.lastListItem.position().top,f=c.scrollview.height(),g=e-f,h;d=d>g?g:d,d=Math.max(d,0),c.scrollview.scrollview("scrollTo",0,-d),h=c.scrollview.offset()},this.shortcutsList.bind("touchstart mousedown vmousedown touchmove vmousemove vmouseover",function(b){var d=a.mobile.tizen.targetRelativeCoordsFromEvent(b),e=c.shortcutsList.offset();b.target.tagName.toLowerCase()==="li"&&(d.x+=a(b.target).offset().left-e.left,d.y+=a(b.target).offset().top-e.top),b.target.tagName.toLowerCase()==="span"&&(d.x+=a(b.target).parent().offset().left-e.left,d.y+=a(b.target).parent().offset().top-e.top),c.shortcutsList.find("li").each(function(){var b=a(this);a(b).removeClass("ui-fastscroll-hover").removeClass("ui-fastscroll-hover-up").removeClass("ui-fastscroll-hover-down")}),c.shortcutsList.find("li").each(function(){var b=a(this),f=b.offset().left-e.left,g=b.offset().top-e.top,h=f+Math.abs(b.outerWidth(!0)),i=g+Math.abs(b.outerHeight(!0));return d.x>=f&&d.x<=h&&d.y>=g&&d.y<=i?(c._hitItem(b),!1):!0}),b.preventDefault(),b.stopPropagation()}).bind("touchend mouseup vmouseup vmouseout",function(){d.hide(),a(".ui-fastscroll-hover").removeClass("ui-fastscroll-hover"),a(".ui-fastscroll-hover-first-item").removeClass("ui-fastscroll-hover-first-item"),a(".ui-fastscroll-hover-up").removeClass("ui-fastscroll-hover-up"),a(".ui-fastscroll-hover-down").removeClass("ui-fastscroll-hover-down")}),e&&!e.is(":visible")?e.bind("pageshow",function(){c.refresh()}):c.refresh(),b.bind("updatelayout",function(){c.refresh()}),a(window).unbind(".fastscroll").bind("resize.fastscroll",function(a){c.refresh()})},_hitItem:function(b){var c=this,d=c.scrollview.find(".ui-fastscroll-popup");typeof b.data("divider")!="undefined"&&c.jumpToDivider(a(b.data("divider"))),b.text()!=="."?d.text(b.text()).css({marginLeft:-(d.width()/2),marginTop:-(d.height()/2),padding:d.css("paddingTop")}).width(d.height()).show():d.hide(),a(b).addClass("ui-fastscroll-hover"),b.index()===0&&a(b).addClass("ui-fastscroll-hover-first-item"),b.index()>0&&a(b).siblings().eq(b.index()-1).addClass("ui-fastscroll-hover-up"),a(b).siblings().eq(b.index()).addClass("ui-fastscroll-hover-down")},_focusItem:function(b){var c=this,d=c.scrollview.find(".ui-fastscroll-popup");b.focusin(function(a){c._hitItem(b)}).focusout(function(b){d.hide(),a(".ui-fastscroll-hover").removeClass("ui-fastscroll-hover"),a(".ui-fastscroll-hover-first-item").removeClass("ui-fastscroll-hover-first-item"),a(".ui-fastscroll-hover-up").removeClass("ui-fastscroll-hover-up"),a(".ui-fastscroll-hover-down").removeClass("ui-fastscroll-hover-down")})},_contentHeight:function(){var b=this,c=a(".ui-scrollview-clip"),d=null,e=null,f=0,g=a(window).height();return c.hasClass("ui-content")?(f=parseInt(c.css("padding-top"),10),g-=f||0,f=parseInt(c.css("padding-bottom"),10),g-=f||0,d=c.siblings(".ui-header:visible"),e=c.siblings(".ui-footer:visible"),d&&(d.outerHeight(!0)===null?g-=a(".ui-header").outerHeight()||0:g-=d.outerHeight(!0)),e&&(g-=e.outerHeight(!0))):g=c.height(),g},_omit:function(a,b){var c=parseInt((b-1)/2,10),d=a-b,e=[],f=[],g,h,i,j;if(b<3||a<=b)return;d>=c?(i=2,h=1,g=c):(i=b/(d+1),h=i,g=d);for(j=0;j<g;j++)e.push(parseInt(h,10)),h+=i;for(j=0;j<b;j++)f.push(1);for(j=0;j<d;j++)f[e[j%c]]++;return f},indexString:function(a){var b=this,c=[];if(typeof a==" undefined")return b._primaryLanguage+":"+b._secondLanguage;c=a.split(":"),b._primaryLanguage=c[0],c.length===2&&(b._secondLanguage=c[1])},refresh:function(){var b=this,c=b._primaryLanguage?b._primaryLanguage.replace(/,/g,""):null,d=b._secondLanguage?b._secondLanguage.replace(/,/g,""):null,e=b._contentHeight(),f=a('<li tabindex="0" aria-label="double to move Number list"><span aria-hidden="true">#</span><span aria-label="Number"/></li>'),g=0,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B;h=function(b,c){a(c).text()===w&&k.data("divider",c).bind("vclick",function(b){a(c).next().focus()})},b.shortcutsList.find("li").remove(),s=b.element.find(".ui-li-divider"),t=b.element.find("li").not(".ui-li-divider"),s=s.filter(":visible"),t=t.filter(":visible");if(s.length<2){b.shortcutsList.hide();return}b.shortcutsList.show(),b.lastListItem=t.last(),b.shortcutsList.append(f),b._focusItem(f);if(c!==null){q=parseInt(f.css("padding"),10),p=f.height()+q*2,n=parseInt(e/p-1,10),o=c.length,n=d?n-2:n;if(n<3){f.remove();return}r=b._omit(o,n);for(B=0;B<c.length;B++)w=c.charAt(B),k=a('<li tabindex="0" aria-label="double to move '+w+' list">'+w+"</li>"),b._focusItem(k),s.each(h),typeof r!="undefined"&&r[g]>1&&(k=a("<li>.</li>"),B+=r[g]-1),f.before(k),g++;if(d!==null){x=d.length-1,y=[],y.push(d.charAt(0)),y.push(d.charAt(x));for(B=0;B<y.length;B++)w=y[B],k=a('<li tabindex="0" aria-label="double to move '+w+' list">'+w+"</li>"),b._focusItem(k),s.each(h),f.before(k)}}else s.each(function(c,d){w=a(d).text(),k=a('<li tabindex="0" aria-label="double to move '+w+' list">'+w+"</li>"),k.data("divider",d),b._focusItem(k),f.before(k)});i=b.shortcutsContainer.outerHeight(),u=e-i,j=b.shortcutsList.children(),A=parseInt(u/j.length,10),v=u-j.length*A,u>0&&j.each(function(b,c){z=a(c).height()+A,v!==0&&(z+=1,v-=1),a(c).css({height:z,lineHeight:z+"px"})}),l=s.first().position().top,b.shortcutsContainer.css("top",l),m=l+b.shortcutsContainer.outerHeight()+"px",b.scrollview.css("min-height",m)}}),a(document).bind("pagecreate create",function(b){a(a.tizen.fastscroll.prototype.options.initSelector,b.target).not(":jqmData(role='none'), :jqmData(role='nojs')").fastscroll()})}(jQuery),function(a,b,c,d){a.widget("tizen.multimediaview",a.mobile.widget,{options:{theme:null,controls:!0,fullScreen:!1,initSelector:"video, audio"},_create:function(){var b=this,c=b.element,d=c[0],e=d.nodeName==="VIDEO",f=b.options,g=a.mobile.getInheritedTheme(c,"s"),h=f.theme||g,i=d.style.getPropertyValue("width")||"",j=a("<div class='ui-multimediaview-wrap ui-multimediaview-"+h+"'>"),k=null;a.extend(this,{role:null,controlTimer:null,isVolumeHide:!0,backupView:null,_reserveVolume:-1,_isVideo:e}),c.addClass("ui-multimediaview"),k=b._createControl(),k.hide(),k.find(".ui-button").each(function(b){a(this).buttonMarkup({corners:!0,theme:h,shadow:!0})}),c.wrap(j).after(k),e?k.addClass("ui-multimediaview-video"):(b.width(i),b.options.fullScreen=!1),f.controls&&c.attr("controls")&&c.removeAttr("controls"),b._addEvent()},_resize:function(){this._resizeFullscreen(this.options.fullScreen),this._resizeControl(),this._updateSeekBar(),this._updateVolumeState()},_resizeControl:function(){var a=this,b=a.element,c=b[0],d=a._isVideo,e=b.parent(".ui-multimediaview-wrap"),f=e.find(".ui-multimediaview-control"),g=f.find(".ui-button"),h=f.find(".ui-playpausebutton"),i=f.find(".ui-seekbar"),j=f.find(".ui-durationlabel"),k=f.find(".ui-timestamplabel"),l=f.find(".ui-volumecontrol"),m=l.find(".ui-volumebar"),n=d?b.width():e.width(),o=d?b.height():f.height(),p=b.offset(),q=f.height(),r=0,s=null;f&&(d&&(s=f.offset(),s.left=p.left,s.top=p.top+o-q,f.offset(s)),f.width(n)),i&&(r=f.width()-g.outerWidth(!0)*g.length,r-=(parseInt(g.eq(0).css("margin-left"),10)+parseInt(g.eq(0).css("margin-right"),10))*g.length,a.isVolumeHide||(r-=l.outerWidth(!0)),i.width(r)),j&&!isNaN(c.duration)&&j.find("p").text(a._convertTimeFormat(c.duration)),c.autoplay&&c.paused===!1&&h.removeClass("ui-play-icon").addClass("ui-pause-icon"),i.width()<m.width()+k.width()+j.width()?j.hide():j.show()},_resizeFullscreen:function(b){if(!this._isVideo)return;var c=this,d=c.element,e=d[0],f=d.parent(".ui-multimediaview-wrap"),g=f.find(".ui-multimediaview-control"),h=g.find(".ui-fullscreenbutton"),i=a(".ui-page-active"),j=g.find(".ui-playpausebutton"),k=g.find(".ui-timestamplabel"),l=g.find(".ui-seekbar"),m=l.find(".ui-duration"),n=l.find(".ui-currenttime"),o=a("body")[0],p=i.children(".ui-header"),q=i.children(".ui-footer"),r=0,s=0;if(b)c.backupView||(c.backupView={width:e.style.getPropertyValue("width")||"",height:e.style.getPropertyValue("height")||"",position:d.css("position"),zindex:d.css("z-index"),wrapHeight:f[0].style.getPropertyValue("height")||""}),r=o.clientWidth,s=o.clientHeight,p.hide(),q.hide(),d.parents().each(function(b){var c=a(this);c.addClass("ui-fullscreen-parents").siblings().addClass("ui-multimediaview-siblings-off")}),this._fitContentArea(i),h.removeClass("ui-fullscreen-on").addClass("ui-fullscreen-off"),d.width(r).height(s-1),f.height(s-1),d.offset({top:0,left:0}).addClass("ui-multimediaview-fullscreen");else{if(!c.backupView)return;p.show(),q.show(),d.parents().each(function(b){var c=a(this);c.removeClass("ui-fullscreen-parents").siblings().removeClass("ui-multimediaview-siblings-off")}),this._fitContentArea(i),h.removeClass("ui-fullscreen-off").addClass("ui-fullscreen-on"),f.css("height",c.backupView.wrapHeight),d.css({width:c.backupView.width,height:c.backupView.height,position:c.backupView.position,"z-index":c.backupView.zindex}).removeClass("ui-multimediaview-fullscreen"),c.backupView=null}},_addEvent:function(){var d=this,e=d.element,f=d.options,g=e[0],h=d._isVideo,i=e.parent(".ui-multimediaview-wrap").find(".ui-multimediaview-control"),j=i.find(".ui-playpausebutton"),k=i.find(".ui-timestamplabel"),l=i.find(".ui-durationlabel"),m=i.find(".ui-volumebutton"),n=i.find(".ui-volumecontrol"),o=n.find(".ui-volumebar"),p=n.find(".ui-guide"),q=n.find(".ui-handle"),r=i.find(".ui-fullscreenbutton"),s=i.find(".ui-seekbar"),t=s.find(".ui-duration"),u=s.find(".ui-currenttime"),v=a(b);v.unbind(".multimediaview").bind("pagechange.multimediaview",function(b){var c=a(b.target);c.find(e).length>0&&g.autoplay&&g.play(),f.controls&&d._resize()}).bind("pagebeforechange.multimediaview",function(a){f.fullScreen&&d.fullScreen(!f.fullScreen),g.played.length!==0&&g.pause()}),a(c).unbind(".multimediaview").bind("resize.multimediaview orientationchange.multimediaview",function(b){if(!f.controls)return;var c=a(b.target),g=e.parents(".ui-scrollview-clip");g.each(function(b){a.data(this,"scrollview")&&a(this).scrollview("scrollTo",0,0)}),f.fullScreen?(a(".ui-footer").hide(),d._fitContentArea(c)):a(".ui-footer:visible").show(),i.css("display")!=="none"&&d._resize()}),e.bind("loadedmetadata.multimediaview",function(a){isNaN(g.duration)||l.find("p").text(d._convertTimeFormat(g.duration)),d._resize()}).bind("timeupdate.multimediaview",function(a){d._updateSeekBar()}).bind("play.multimediaview",function(a){j.removeClass("ui-play-icon").addClass("ui-pause-icon")}).bind("pause.multimediaview",function(a){j.removeClass("ui-pause-icon").addClass("ui-play-icon")}).bind("ended.multimediaview",function(a){(typeof g.loop=="undefined"||g.loop==="")&&d.stop()}).bind("volumechange.multimediaview",function(a){g.muted&&g.volume>.1?(m.removeClass("ui-volume-icon").addClass("ui-mute-icon"),d._reserveVolume=g.volume,g.volume=0):d._reserveVolume!==-1&&!g.muted?(m.removeClass("ui-mute-icon").addClass("ui-volume-icon"),g.volume=d._reserveVolume,d._reserveVolume=-1):g.volume<.1?m.removeClass("ui-volume-icon").addClass("ui-mute-icon"):m.removeClass("ui-mute-icon").addClass("ui-volume-icon"),d.isVolumeHide||d._updateVolumeState()}).bind("durationchange.multimediaview",function(a){isNaN(g.duration)||l.find("p").text(d._convertTimeFormat(g.duration)),d._resize()}).bind("click.multimediaview",function(a){if(!d.options.controls)return;i.fadeToggle("fast"),d._resize()}).bind("multimediaviewinit",function(a){f.controls&&i.show(),d._resize()}),j.bind("click.multimediaview",function(){d._endTimer(),g.paused?g.play():g.pause(),h&&d._startTimer()}),r.bind("click.multimediaview",function(a){a.preventDefault(),d.fullScreen(!d.options.fullScreen),i.fadeIn("fast",function(){d._resize()}),d._endTimer(),a.stopPropagation()}),s.bind("vmousedown.multimediaview",function(a){var b=a.clientX,c=g.duration,e=t.offset(),f=t.width(),h=(b-e.left)/f,i=c*h;if(!g.played.length)return;g.currentTime=i,d._endTimer(),a.preventDefault(),v.bind("vmousemove.multimediaview",function(a){var b=a.clientX,d=(b-e.left)/f;g.currentTime=c*d,a.preventDefault()}).bind("vmouseup.multimediaview",function(){v.unbind("vmousemove.multimediaview vmouseup.multimediaview"),g.paused?g.pause():g.play()})}),m.bind("click.multimediaview",function(){if(d.isVolumeHide){var a=d.element,b=g.volume;d.isVolumeHide=!1,n.fadeIn("fast",function(){d._updateVolumeState(),d._updateSeekBar()}),d._resize()}else d.isVolumeHide=!0,n.fadeOut("fast",function(){d._resize()})}),o.bind("vmousedown.multimediaview",function(a){var b=a.clientX,c=p.offset().left,e=p.width(),f=c+e,g=q.offset(),h=(b-c)/e,i=(b-c)/e;d._endTimer(),d._setVolume(i.toFixed(2)),a.preventDefault(),v.bind("vmousemove.multimediaview",function(a){var b=a.clientX,f=(b-c)/e;d._setVolume(f.toFixed(2)),a.preventDefault()}).bind("vmouseup.multimediaview",function(){v.unbind("vmousemove.multimediaview vmouseup.multimediaview")})})},_removeEvent:function(){var a=this.element,b=a.parent(".ui-multimediaview-wrap").find(".ui-multimediaview-control"),c=b.find(".ui-playpausebutton"),d=b.find(".ui-fullscreenbutton"),e=b.find(".ui-seekbar"),f=b.find(".ui-volumecontrol"),g=f.find(".ui-volumebar"),h=f.find(".ui-handle");a.unbind(".multimediaview"),c.unbind(".multimediaview"),d.unbind(".multimediaview"),e.unbind(".multimediaview"),g.unbind(".multimediaview"),h.unbind(".multimediaview")},_createControl:function(){var b=this.element,c=b[0],d=a("<span></span>").addClass("ui-multimediaview-control"),e=a("<span></span>").addClass("ui-playpausebutton ui-button"),f=a("<span></span>").addClass("ui-seekbar ui-multimediaview-bar"),g=a("<span><p>00:00:00</p></span>").addClass("ui-timestamplabel"),h=a("<span><p>00:00:00</p></span>").addClass("ui-durationlabel"),i=a("<span></span>").addClass("ui-volumebutton ui-button"),j=a("<span></span>").addClass("ui-volumecontrol"),k=a("<div></div>").addClass("ui-volumebar ui-multimediaview-bar"),l=a("<span></span>").addClass("ui-guide ui-multimediaview-bar-bg"),m=a("<span></span>").addClass("ui-value ui-multimediaview-bar-highlight"),n=a("<span></span>").addClass("ui-handle"),o=a("<span></span>").addClass("ui-fullscreenbutton ui-button"),p=a("<span></span>").addClass("ui-duration ui-multimediaview-bar-bg"),q=a("<span></span>").addClass("ui-currenttime ui-multimediaview-bar-highlight");return f.append(p).append(q).append(h).append(g),e.addClass("ui-play-icon"),i.addClass(c.muted?"ui-mute-icon":"ui-volume-icon"),k.append(l).append(m).append(n),j.append(k),d.append(e).append(f).append(j).append(i),this._isVideo&&(a(o).addClass("ui-fullscreen-on"),d.append(o)),j.hide(),d},_startTimer:function(a){this._endTimer(),a||(a=3e3);var b=this,c=b.element,d=c.parent(".ui-multimediaview-wrap").find(".ui-multimediaview-control"),e=d.find(".ui-volumecontrol");b.controlTimer=setTimeout(function(){b.isVolumeHide=!0,b.controlTimer=null,e.hide(),d.fadeOut("fast")},a)},_endTimer:function(){this.controlTimer&&(clearTimeout(this.controlTimer),this.controlTimer=null)},_convertTimeFormat:function(b){if(!a.isNumeric(b))return"Playback Error";var c=parseInt(b%60,10).toString(),d=parseInt(b/60%60,10).toString(),e=parseInt(b/3600,10).toString(),f=(e.length<2?"0"+e:e)+":"+(d.length<2?"0"+d:d)+":"+(c.length<2?"0"+c:c);return f},_updateSeekBar:function(a){var b=this.element,c=b[0],d=c.duration,e=b.parent(".ui-multimediaview-wrap").find(".ui-multimediaview-control"),f=e.find(".ui-seekbar"),g=f.find(".ui-duration"),h=f.find(".ui-currenttime"),i=e.find(".ui-timestamplabel"),j=g.offset(),k=g.width(),l=g.height(),m=0;typeof a=="undefined"&&(a=c.currentTime),m=parseInt(a/d*k,10),g.offset(j),h.offset(j).width(m),i.find("p").text(this._convertTimeFormat(a))},_updateVolumeState:function(){var a=this.element,b=a.parent(".ui-multimediaview-wrap").find(".ui-multimediaview-control"),c=b.find(".ui-volumecontrol"),d=b.find(".ui-volumebutton"),e=c.find(".ui-volumebar"),f=c.find(".ui-guide"),g=c.find(".ui-value"),h=c.find(".ui-handle"),i=h.width(),j=h.height(),k=f.height(),l=f.width(),m=0,n=0,o=0,p=null,q=a[0].volume;m=parseInt(f.offset().top,10),n=parseInt(f.offset().left,10),o=n,p=h.offset(),p.top=m-parseInt((j-k)/2,10),p.left=o+parseInt(l*q,10)-parseInt(i/2,10),h.offset(p),g.offset(f.offset()).width(parseInt(l*q,10))},_setVolume:function(a){var b=this.element[0];if(a<0||a>1)return;b.volume=a},_fitContentArea:function(b,d){typeof d=="undefined"&&(d=c);var e=a(b),f=a(".ui-content:visible:first"),g=a(".ui-header:visible").outerHeight()||0,h=a(".ui-footer:visible").outerHeight()||0,i=parseFloat(f.css("padding-top")),j=parseFloat(f.css("padding-bottom")),k=d===c?c.innerHeight:a(d).height(),l=k-(g+h)-(i+j);f.offset({top:g+i}).height(l)},width:function(a){if(this.options.fullScreen)return;var b=this.element,c=b.parent(".ui-multimediaview-wrap");if(arguments.length===0)return b.width();this._isVideo||c.width(a),b.width(a),this._resize()},height:function(a){if(!this._isVideo||this.options.fullScreen)return;var b=this.element;if(arguments.length===0)return b.height();b.height(a),this._resize()},fullScreen:function(a){if(!this._isVideo)return;var b=this.element,c=this.options;if(arguments.length===0)return c.fullScreen;b.parents(".ui-scrollview-clip").scrollview("scrollTo",0,0),this.options.fullScreen=a,this._resize()},refresh:function(){this._resize()}}),a(b).bind("pagecreate create",function(b){a.tizen.multimediaview.prototype.enhanceWithin(b.target)})}(jQuery,document,window),function(a,b,c){a.mobile.defaultPageTransition="none",a.mobile.transitionHandlers.depth=a.mobile.transitionHandlers.simultaneous,a.mobile.transitionFallbacks.depth="fade",a.fn.buttonMarkup.defaults.corners=!1,a.mobile.buttonMarkup.hoverDelay=0}(jQuery,this),function(a,b){ensureNS("jQuery.mobile.tizen"),jQuery.extend(jQuery.mobile.tizen,{_widgetPrototypes:{},loadPrototype:function(c,d){function h(a){return a.replace(/\$\{FRAMEWORK_ROOT\}/g,g)}function i(a,b){var c;for(var d in a)typeof a[d]=="string"?(c=a[d],a[d]=b.find(a[d]),c.substring(0,1)==="#"&&a[d].removeAttr("id")):typeof a[d]=="object"&&(a[d]=i(a[d],b));return a}var e=b,f=a("script[data-framework-version][data-framework-root][data-framework-theme]"),g=f.attr("data-framework-root")+"/"+f.attr("data-framework-version")+"/";if(typeof c=="string"){e=a.mobile.tizen._widgetPrototypes[c];if(e===b){var j=g+"proto-html"+"/"+f.attr("data-framework-theme");a.ajax({url:j+"/"+c+".prototype.html",async:!1,dataType:"html"}).success(function(b,d,f){a.mobile.tizen._widgetPrototypes[c]=a("<div>").html(h(b)),e=a.mobile.tizen._widgetPrototypes[c].clone()})}}else c.key!==b&&(e=a.mobile.tizen._widgetPrototypes[c.key]),e===b?c.proto!==b&&(e=a("<div>").html(h(c.proto)),c.key!==b&&(a.mobile.tizen._widgetPrototypes[c.key]=e.clone())):e=e.clone();return e!=b&&d!=b&&(e=i(d,e)),e}})}(jQuery),ensureNS("jQuery.mobile.tizen.clrlib"),jQuery.extend(jQuery.mobile.tizen.clrlib,{nearestInt:function(a){var b=Math.floor(a);return a-b>.5?b+1:b},HTMLToRGB:function(a){return a="#"==a.charAt(0)?a.substring(1):a,[a.substring(0,2),a.substring(2,4),a.substring(4,6)].map(function(a){return parseInt(a,16)/255})},RGBToHTML:function(a){return"#"+a.map(function(a){var b=a*255,c=Math.floor(b);return b=b-c>.5?c+1:c,b=(b<16?"0":"")+(b&255).toString(16),b}).join("")},HSLToRGB:function(a){var b=a[0]/360,c=a[1],d=a[2];if(0===c)return[d,d,d];var e=d<.5?d*(1+c):d+c-d*c,f=2*d-e,g={r:b+1/3,g:b,b:b-1/3};return g.r=g.r<0?g.r+1:g.r>1?g.r-1:g.r,g.g=g.g<0?g.g+1:g.g>1?g.g-1:g.g,g.b=g.b<0?g.b+1:g.b>1?g.b-1:g.b,ret=[6*g.r<1?f+(e-f)*6*g.r:2*g.r<1?e:3*g.r<2?f+(e-f)*(2/3-g.r)*6:f,6*g.g<1?f+(e-f)*6*g.g:2*g.g<1?e:3*g.g<2?f+(e-f)*(2/3-g.g)*6:f,6*g.b<1?f+(e-f)*6*g.b:2*g.b<1?e:3*g.b<2?f+(e-f)*(2/3-g.b)*6:f],ret},HSVToRGB:function(a){return $.mobile.tizen.clrlib.HSLToRGB($.mobile.tizen.clrlib.HSVToHSL(a))},RGBToHSV:function(a){var b,c,d,e,f,g,h=a[0],i=a[1],j=a[2];return b=Math.min(h,Math.min(i,j)),c=Math.max(h,Math.max(i,j)),d=c-b,e=0,f=0,g=c,d>1e-5&&(f=d/c,h===c?e=(i-j)/d:i===c?e=2+(j-h)/d:e=4+(h-i)/d,e*=60,e<0&&(e+=360)),[e,f,g]},HSVToHSL:function(a){var b=a[2],c=a[1]*b,d=b-c,e=b+d,f=e/2,g=f<.5?e:2-b-d;return[a[0],0==g?0:c/g,f]},RGBToHSL:function(a){return $.mobile.tizen.clrlib.HSVToHSL($.mobile.tizen.clrlib.RGBToHSV(a))}}),function(a,b,c,d){function g(a){var c=b.FileError,d="";switch(a.code){case c.QUOTA_EXCEEDED_ERR:d="QUOTA_EXCEEDED_ERR";break;case c.NOT_FOUND_ERR:d="NOT_FOUND_ERR";break;case c.SECURITY_ERR:d="SECURITY_ERR";break;case c.INVALID_MODIFICATION_ERR:d="INVALID_MODIFICATION_ERR";break;case c.INVALID_STATE_ERR:d="INVALID_STATE_ERR";break;default:d="Unknown Error"}return d}function h(a){var b=a.replace(/\//gi,"_");return b}function i(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=a/c,k=b/d,l=Math.max(j,k);return e?(f=c,g=d):(l>1?(f=a/l,g=b/l):(f=a,g=b),h=(c-f)/2,i=(d-g)/2),{w:f,h:g,x:h,y:i}}function j(a,b,c,d){var g,h;return e.width=b,e.height=c,g=i(a.width,a.height,b,c,d),f.fillStyle="#000000",f.fillRect(0,0,b,c),f.drawImage(a,g.x,g.y,g.w,g.h),h=e.toDataURL(),h}var e=c.createElement("canvas"),f=e.getContext
-("2d");a.imageloader={_grantedBytes:1048576,getThumbnail:function(a,b){function e(a){var c=g(a);b&&b(c==="NOT_FOUND_ERR"?c:null)}var c,d;c=h(a);try{d=localStorage.getItem(c),b&&b(d===null?"NOT_FOUND_ERR":d)}catch(f){b&&b(f.type==="non_object_property_load"?"NOT_FOUND_ERR":null)}},setThumbnail:function(a,b,c,d,e){function l(a){var c=g(a);b&&b(c==="NOT_FOUND_ERR"?c:null)}var f,i,k;c=c||128,d=d||128,e=e||!0,f=new Image,f.onload=function(){i=h(a),k=j(this,c,d,e);try{localStorage.setItem(i,k),b&&b(k)}catch(f){b&&b(f.type==="non_object_property_load"?"NOT_FOUND_ERR":null)}},f.src=a},removeThumbnail:function(a){function c(a){g(a)}var b;b=h(a);try{localStorage.removeItem(b)}catch(d){throw d}}}}(jQuery,window,document),function(a,b){a.widget("tizen.listdivider",a.mobile.widget,{options:{initSelector:":jqmData(role='list-divider')",folded:!1,listDividerLine:!0},_create:function(){var c=this.element,d=!0,e,f=!0,g=c.attr("data-style");c.data("line")===!1&&(this.options.listDividerLine=!1),c.data("folded")===!0&&(this.options.folded=!0);if(g==b||g==="normal"||g==="check")this.options.folded?c.buttonMarkup():c.wrapInner("<span class='ui-btn-text'></span>"),this.options.listDividerLine&&(e="<span class='ui-divider-normal-line'></span>",this.options.folded?a(e).appendTo(c.children(".ui-btn-inner")):a(e).appendTo(c));c.bind("vclick",function(a,b){})}}),a(document).bind("pagecreate create",function(b){a(a.tizen.listdivider.prototype.options.initSelector,b.target).listdivider()})}(jQuery),function(a,b){a.webgl={},a.webgl.shader={_vertexShader:null,_fragmentShader:null,deleteShaders:function(a){a.deleteShader(this._vertexShader),a.deleteShader(this._fragmentShader)},addShaderProgram:function(a,b,c,d){var e,f={},g={};return d?(f=this.loadShaderFile(b),g=this.loadShaderFile(c)):(f.source=b,g.source=c),this._vertexShader=this.getShader(a,a.VERTEX_SHADER,f),this._fragmentShader=this.getShader(a,a.FRAGMENT_SHADER,g),e=a.createProgram(),a.attachShader(e,this._vertexShader),a.attachShader(e,this._fragmentShader),a.linkProgram(e),a.getProgramParameter(e,a.LINK_STATUS)||window.alert("Could not initialize Shaders!"),e},loadShaderFile:function(b){var c=null;return a.ajax({async:!1,url:b,success:function(a){c={source:a}}}),c},getShader:function(a,b,c){var d;return!a||!b||!c?null:(d=a.createShader(b),a.shaderSource(d,c.source),a.compileShader(d),a.getShaderParameter(d,a.COMPILE_STATUS)?d:(window.alert(a.getShaderInfoLog(d)),a.deleteShader(d),null))}},a.webgl.buffer={attribBufferData:function(a,b){var c=a.createBuffer();return a.bindBuffer(a.ARRAY_BUFFER,c),a.bufferData(a.ARRAY_BUFFER,b,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,null),c}}}(jQuery),function(a,b){a(document).bind("pagecreate create",function(b){a(":jqmData(role='label')",b.target).not(":jqmData(role='none'), :jqmData(role='nojs')").each(function(){a(this).addClass("jquery-mobile-ui-label").html(a("<span>",{"class":"jquery-mobile-ui-label-text"}).text(a(this).text()))})})}(jQuery),function(a,b,c){var d=Math.PI/2,e=.001,f={},g=b.vec3,h=function(a,b){var c=[b[0]-a[0],b[1]-a[1]],d=Math.sqrt(c[0]*c[0]+c[1]*c[1]);return d},i=function(a,b){var c=[b[0]-a[0],b[1]-a[1],b[2]-a[2]],d=Math.sqrt(c[0]*c[0]+c[1]*c[1]+c[2]*c[2]);return d};f.base=function(){},f.base.prototype={points:[],step:e,length:0,levels:[],init:function(a){},calculateLevel:function(a){},calculateTotalLength:function(){},getPosition:function(a){},getPercent:function(a,b){},getAngle:function(a){}},f.bezier2d=function(){},f.bezier2d.prototype=a.extend(!0,{},f.base.prototype,{init:function(a){this.points=a.points,this.step=a.step||e,this.length=this.calculateTotalLength(),this.levels=this.calculateLevel(a.maxLevel)||[]},calculateLevel:function(a){var b=this.length,c=b/a,d=[],e;if(!a)return null;for(e=0;e<a;e+=1)d[a-e]=this.getPercent(0,c*e);return d},calculateTotalLength:function(){var a=this.step,b=this.getPosition(0),c=b,d=0,e;for(e=a;e<=1;e+=a)b=this.getPosition(e),d+=h(c,b),c=b;return d},getPosition:function(a){var b=this.points,c=function(a,b,c,d,e){return Math.pow(1-e,3)*a+3*e*Math.pow(1-e,2)*b+3*Math.pow(e,2)*(1-e)*c+Math.pow(e,3)*d},d=[c(b[0][0],b[1][0],b[2][0],b[3][0],a),c(b[0][1],b[1][1],b[2][1],b[3][1],a)];return d},getPercent:function(a,b){var c=this.step,d=this.getPosition(a=a||0),e=d,f=a+b,g=0,i;for(i=a+c;i<=1;i+=c){d=this.getPosition(i),g+=h(e,d);if(g>=f)return i;e=d}return 1},getAngle:function(a){var b=this.points,c=function(a,b,c,d,e){return 3*e*e*(-a+3*b-3*c+d)+6*e*(a-2*b+c)+3*(-a+b)},e=c(b[0][0],b[1][0],b[2][0],b[3][0],a),f=c(b[0][1],b[1][1],b[2][1],b[3][1],a);return Math.atan2(e,f)-d}}),f.bspline=function(){},f.bspline.prototype=a.extend(!0,{},f.base.prototype,{_degree:3,_numberOfControls:0,_knotVectors:[],_numberOfKnots:0,init:function(a){this.points=a.points,this.step=a.step||e,this._numberOfPoints=this.points.length-1,this._numberOfKnots=this._numberOfPoints+this._degree+1;var b=1/(this._numberOfKnots-2*this._degree),c=b,d=0;while(d<=this._numberOfKnots)d<=this._degree?this._knotVectors.push(0):d<this._numberOfKnots-this._degree+1?(this._knotVectors.push(c),c+=b):this._knotVectors.push(1),d+=1;this.length=this.calculateTotalLength(),this.levels=this.calculateLevel(a.maxLevel)||[]},_Np:function(a,b,c){var d=this._knotVectors,e=0,f=0,g=0,h=function(a,b){return d[b]<=a&&a<d[b+1]?1:0};return c===1?(e=h(a,b),f=h(a,b+1)):(e=this._Np(a,b,c-1),f=this._Np(a,b+1,c-1)),g=d[b+c]-d[b],e*=g!==0?(a-d[b])/g:0,g=d[b+c+1]-d[b+1],f*=g!==0?(d[b+c+1]-a)/g:0,e+f},calculateLevel:function(a){var b=this.length,c=b/a,d=[],e;if(!a)return null;for(e=0;e<a;e+=1)d[a-e]=this.getPercent(0,c*e);return d},calculateTotalLength:function(){var a=this.step,b=this.getPosition(0),c=b,d=0,e;for(e=a;e<=1;e+=a)b=this.getPosition(e),d+=i(c,b),c=b;return d},getPosition:function(a){var b=[],c,d,e;a=a.toFixed(4);for(d=0;d<3;d+=1){e=0;for(c=0;c<=this._numberOfPoints;c+=1)e+=this.points[c][d]*this._Np(a,c,this._degree);b[d]=e}return b},getPercent:function(a,b){var c=this.step,d=this.getPosition(a=a||0),e=d,f=a+b,g=0,h;for(h=a+c;h<=1;h+=c){d=this.getPosition(h),g+=i(e,d);if(g>=f)return h;e=d}return 1},getAngle:function(a){var b=this.getPosition(a),c=this.getPosition(a+.001),d=g.normalize(g.direction(b,c)),e=g.dot(d,[1,0,0]);return Math.acos(e)+Math.PI}}),a.motionpath=function(a,b){var c=new f[a];return c.init(b),c}}(jQuery,window),function(a,b,c,d){a.widget("tizen.splitview",a.mobile.widget,{options:{fixed:!1,dividerVertical:!0,ratio:[],initSelector:":jqmData(role='splitview')"},_create:function(){var c=this,d=c.element,e=c.options,f=d.children(".ui-pane"),g=f.length,h=[],i=[],j=this.element.attr("data-ratio"),k=[0,0],l=null,m=0;if(g!==2){if(g<2)for(m=g;m<2;++m)c._addEmptyPanes();else f.slice(2).remove();f=d.children(".ui-pane"),g=f.length}h[0]=a("<a href='#' class='ui-spliter' aria-label='Drag scroll, double tap and move to adjust split area'></a>").insertAfter(f[0]),i[0]=a("<div class='ui-spliter-bar'></div>").appendTo(h[0]),a("<div class='ui-spliter-handle'></div>").appendTo(i[0]),a.extend(this,{moveTarget:null,moveData:{},spliters:h,spliterBars:i,panes:f,containerSize:k,touchStatus:!1,minPaneWidth:50,savedRatio:[]}),c._bindTouchEvents(),c._convertRatio(j,f.length),d.addClass("ui-splitview ui-direction-"+c._direction(e.dividerVertical)),d.parent().closest(".ui-splitview").length&&c._getContainerSize(d[0].style.width,d[0].style.height)&&c._layout(),a(b).bind("pagechange",function(a){d.parent().closest(".ui-splitview").length||c._getContainerSize(d[0].style.width,d[0].style.height)&&c._layout()}).resize(function(){l&&clearTimeout(l),l=setTimeout(function(){d.parent().closest(".ui-splitview").length||c._getContainerSize(d[0].style.width,d[0].style.height)&&c._layout()},250)})},_addEmptyPanes:function(){var b=this,c=b.element,d=b.options,e=c.children(".ui-pane"),f=a.support.scrollview?"data-scroll='y'":"",g=a("<div class='ui-pane' "+f+"></div>");f.length&&g.scrollview({direction:"y"}),e.length?e.last().after(g):c.append(g)},_direction:function(a){return a?"horizontal":"vertical"},_isStyleSpecified:function(a){return typeof a!="undefined"&&a.length},_getContainerSize:function(a,b){var c=this,d=c.element,e=c._isStyleSpecified(a),f=c._isStyleSpecified(b);return c.containerSize[0]=e?d.outerWidth(!0):c._parentWidth(),c.containerSize[1]=f?d.outerHeight(!0):c._parentHeight(),!c.containerSize[0]||!c.containerSize[1]?!1:!0},_parentWidth:function(){var c=this.element.parent();return!c&&typeof c=="undefined"&&!c.length?a(b).width():c.width()},_parentHeight:function(){var c=this.element.parent(),d="",e=!1,f=0;while(c&&typeof c!="undefined"&&c.length){if(typeof c[0].style!="undefined"){d=c[0].style.height,e=typeof d!="undefined"&&d.length;if(e){f=c.height();break}}c=c.parent()}return e||(f=a(b).height()),f},_convertRatio:function(b,c){var d=this,e=[],f=0,g=typeof b,h=null,i;for(i=0;i<c;++i)e.push(0);switch(g){case"number":c&&(e[0]=b);break;case"string":h=b.split(","),f=Math.min(h.length,c);for(i=0;i<f;++i)e[i]=parseFloat(h[i]);break;case"object":if(!a.isArray(b))break;f=Math.min(b.length,c);for(i=0;i<f;++i)g=typeof b[i],e[i]=g==="string"?parseFloat(b[i]):g==="number"?b[i]:0}d.options.ratio=e,d._adjustRatio(c)},_adjustRatio:function(a){var b=this,c=b.options.ratio,d=0,e=0,f=0,g=0,h=0,i;if(!a){b.options.ratio=[];return}for(i in c)d+=c[i];if(d!==1){e=1-d,f=e/a;for(i in c)f>=0?(c[i]+=f,e=Math.max(0,e-f)):(h+=f,g=Math.max(h,c[i]*-1),c[i]=Math.max(0,c[i]+g),e=Math.min(0,e-g),h-=g);if(e)if(e>0)c[c.length-1]+=e;else for(i=c.length-1;i>=0;--i){g=Math.max(e,c[i]*-1),c[i]=Math.max(0,c[i]+g),e=Math.min(0,e-g);if(!e)break}b.options.ratio=c}},_setOption:function(b,c){var d=this,e=d.options[b];if(e===c)return;a.Widget.prototype._setOption.apply(this,arguments);switch(b){case"fixed":d._fixed(c);break;case"dividerVertical":d._dividerVertical(c);break;case"ratio":d._ratio(c)}},_subtractDiffWidth:function(a,b){var c=this;return a<=c.minPaneWidth?{width:a,diff:b}:(a+=b,a>=c.minPaneWidth?{width:a,diff:0}:{width:c.minPaneWidth,diff:a-c.minPaneWidth})},_initRatio:function(b,c,d,e){var f=this,g=0,h=[],i=0,j=c.length,k,l;c.each(function(b){var c=a(this);h.push(d?c.width():c.height()),g+=h[b]}),i=e-g;if(!i)return h;if(i>0)h[b?0:j-1]+=i;else if(b)for(l=0;l<j;++l){k=f._subtractDiffWidth(h[l],i),h[l]=k.width,i=k.diff;if(!i)break}else for(l=j-1;l>=0;--l){i=f._subtractDiffWidth(h[l],i),h[l]=k.width,i=k.diff;if(!i)break}g=0;for(l in h)g+=h[l];for(l in f.options.ratio)f.options.ratio[l]=h[l]/g;return h},_horizontalBoundary:function(){var a=this,b=a.element;return b.outerWidth(!0)-b.width()},_verticalBoundary:function(){var a=this,b=a.element;return b.outerHeight(!0)-b.height()},_boundary:function(a){var c=this,d=c.element,e=b.getComputedStyle(d[0],null),f=parseFloat(e["margin"+a]),g=parseFloat(e["border"+a+"Width"]),h=parseFloat(e["padding"+a]);return{margin:f,border:g,padding:h}},_layout:function(b,c){var d=this,e=d.element,f=d.options,g=f.dividerVertical,h=d.panes,i=d.spliters,j=d.spliterBars,k=d.spliterBars.length?a(j[0]):null,l=k?g?k.outerWidth():k.outerHeight():0,m=k?g?k.outerWidth(!0)-k.outerWidth():k.outerHeight(!0)-k.outerHeight():0,n=h.length,o=0,p=l*(n-1),q=d.containerSize[0],r=d.containerSize[1],s=q-d._horizontalBoundary(),t=r-d._verticalBoundary(),u=g?t:s,v=g?s-p:t-p,w=[],x=0,y=null;typeof b=="undefined"&&(b=!1),b&&typeof c=="undefined"&&(c=!1),e.css({"min-width":s,"min-height":t}),b&&(w=d._initRatio(c,h,g,v)),o=v,h.each(function(c){var e=a(this),f=b?w[c]:Math.floor(v*d.options.ratio[c]),i=c?h.eq(c-1):null,j=0,k=0,m=0,p=0;o-=f,c===n-1&&(f=Math.max(Math.min(f,d.minPaneWidth),f+o)),x+=f,i?(j=parseInt(i.css(g?"left":"top"),10),j+=g?i.width():i.height(),j+=l):(p=d._boundary(g?"Left":"Top"),j=p.padding),k=g?f:u,m=g?u:f,e.css({width:k,height:m}),e.css(g?"left":"top",j)}),h.each(function(b){var c=a(this),e=g?c.width():c.height();d.options.ratio[b]=e/x}),a.each(i,function(b){var c=a(this),d=h.eq(b),e=c.children(".ui-spliter-bar"),f=e.children(".ui-spliter-handle"),i=0;g?(i=parseInt(d.css("left"),10)+d.width()-m,c.outerHeight(u).css("left",i)):(i=parseInt(d.css("top"),10)+d.height()-m,c.outerWidth(u).css("top",i)),typeof e!="undefined"&&e&&(g?e.outerHeight(u):e.outerWidth(u)),typeof f!="undefined"&&f&&(g?f.css("top",(u-l)/2):f.css("left",(u-l)/2))}),y=e.find(":jqmData(role='splitview'):first");if(!y.length)return;y=y.data("splitview"),y&&y._refresh()},_bindTouchEvents:function(){var b=this,c=b.element,d=b.panes,e=b.spliters;a.each(e,function(c){var d=a(this);b._bindSpliterTouchEvents(d)}),c.mouseleave(function(){b.touchStatus&&c.children(".ui-spliter").trigger("vmouseup")}),d.bind("vmousedown",function(){c.find(".ui-spliter").trigger("vmouseup")})},_bindSpliterTouchEvents:function(b){var d=this,e=d.element,f=d.options;b.bind("vmousedown",{e:b},function(b){if(d.options.fixed)return;var g=b.data.e,h=g.prev(),i=g.next(),j=h.find(":jqmData(role='splitview'):first"),k=i.find(":jqmData(role='splitview'):first"),l=f.dividerVertical,m=l?a(d.spliterBars[0]).outerWidth():a(d.spliterBars[0]).outerHeight();e.closest(".ui-page").find(".ui-spliter").trigger("vmouseup"),d.moveTarget=g,d.moveData={spliterWidth:m||0,prevPane:h,nextPane:i,splitviewInPrev:j,splitviewInNext:k,prevPanePos:parseInt(h.css(l?"left":"top"),10)||0,prevPaneWidth:parseInt(h.css(l?"width":"height"),10)||0,nextPanePos:parseInt(i.css(l?"left":"top"),10)||0,nextPaneWidth:parseInt(i.css(l?"width":"height"),10)||0,targetPos:parseInt(g.css(l?"left":"top"),10)||0,pagePos:l?b.pageX:b.pageY},g.addClass("ui-spliter-active"),a(c).bind("vmousemove.splitview",function(a){if(!d.touchStatus)return;d._drag(a),a.preventDefault(),a.stopPropagation()}).bind("vmouseup.splitview",function(a){if(!d.touchStatus)return;d._stop(a),a.preventDefault(),a.stopPropagation(),d.touchStatus=!1}),b.preventDefault(),b.stopPropagation(),d.touchStatus=!0})},_drag:function(a){if(!this.moveData||typeof this.moveData=="undefined")return;var b=this,c=b.element,d=b.options,e=d.dividerVertical,f=b.moveData,g=b.moveTarget,h=f.prevPane,i=f.nextPane,j=f.splitviewInPrev,k=f.splitviewInNext,l=f.spliterWidth,m=null,n=null,o=null,p=null,q=null,r=e?a.pageX:a.pageY,s=null;m=r-f.pagePos,m>0?m=Math.min(Math.max(f.nextPaneWidth-b.minPaneWidth,0),m):m=Math.max(Math.max(f.prevPaneWidth-b.minPaneWidth,0)*-1,m),o=f.nextPanePos+m,p=Math.max(f.prevPaneWidth+m,0),q=Math.max(f.nextPaneWidth-m,0),n=f.targetPos+m,g.css(e?{left:n}:{top:n}),h.css(e?{width:p}:{height:p}),i.css(e?{width:q,left:o}:{height:q,top:o}),j.length&&(s=j.data("splitview"),s._refresh(!0,!1)),k.length&&(s=k.data("splitview"),s._refresh(!0,!0))},_stop:function(b){if(!this.moveData||typeof this.moveData=="undefined")return;var d=this,e=d.element,f=d.options,g=d.panes,h=g.length,i=f.dividerVertical,j=d.moveData,k=d.moveTarget,l=j.prevPane,m=j.nextPane,n=j.splitviewInPrev,o=j.splitviewInNext,p=j.spliterWidth,q=p*(h-1),r=null,s=null,t=null,u=null,v=null,w=e.css("display"),x=d.containerSize[0],y=d.containerSize[1],z=x-d._horizontalBoundary(),A=y-d._verticalBoundary(),B=i?z-q:A-q,C=0;a(c).unbind("vmousemove.splitview vmouseup.splitview"),k.removeClass("ui-spliter-active"),g.each(function(b){var c=a(this),d=i?c.width():c.height();C+=d}),g.each(function(b){var c=a(this),e=i?c.width():c.height();d.options.ratio[b]=e/C}),d.moveData=null},_fixed:function(b){var c=this,d=c.spliters;a.each(d,function(c){var d=a(this);b?d.addClass("ui-fixed"):d.removeClass("ui-fixed")}),c._layout()},_dividerVertical:function(a){var b=this,c=b.element,d=a,e=null,f=null,g=null,h=null;e=c.children(".ui-pane"),f=c.children(".ui-spliter"),g=f.children(".ui-spliter-bar"),h=g.children(".ui-spliter-handle"),c.removeClass("ui-direction-vertical"),c.removeClass("ui-direction-horizontal"),c.addClass("ui-splitview ui-direction-"+b._direction(d)),e.css({left:"",top:"",width:"",height:""}),f.css({left:"",top:"",width:"",height:""}),g.css({width:"",height:""}),h.css({left:"",top:""}),b._getContainerSize(c[0].style.width,c[0].style.height)&&b._layout()},_ratio:function(a){var b=this,c=b.element,d=c.children(".ui-pane"),e=d.length;b._convertRatio(a,e),b._layout()},_refresh:function(a,b){var c=this,d=c.element;typeof a=="undefined"&&(a=!1),a&&typeof b=="undefined"&&(b=!1),c._getContainerSize(d[0].style.width,d[0].style.height)&&c._layout(a,b)},pane:function(a,b){if(typeof a!="string")return null;var c=this,d=c.element,e=d.children(a),f=null,g=null;if(!e.hasClass("ui-pane"))return null;if(typeof b=="undefined"||!b)return e.contents();if(e.hasClass("ui-scrollview-clip")){e.scrollview("scrollTo",0,0,0),f=e.children(".ui-scrollview-view");if(!f.length)return null}else f=e;g=b.parent();if(g.length&&g[0]===f[0])return;f.empty().append(b).trigger("create"),f.fadeIn("fast")},maximize:function(a){if(typeof a!="string")return;var b=this,c=b.element,d=b.panes,e=c.children(a);if(!e.hasClass("ui-pane"))return;b.savedRatio=b.options.ratio.slice(),b.options.ratio=[],d.each(function(a){b.options.ratio.push(this===e[0]?1:0)}),b._layout()},restore:function(){var a=this;if(a.savedRatio.length===0)return;a.options.ratio=a.savedRatio.slice(),a._adjustRatio(a.panes.length),a._layout()}}),a(c).bind("pagecreate create",function(b){a.tizen.splitview.prototype.enhanceWithin(b.target)})}(jQuery,window,document),ensureNS("jQuery.mobile.tizen"),function(){jQuery.extend(jQuery.mobile.tizen,{disableSelection:function(a){var b=this;return $(a).find("*").each(function(){$(this).get(0).tagName!=="INPUT"&&$(this).attr("type")!=="text"&&$(this).get(0).tagName!=="TEXTAREA"&&b.enableSelection(this,"none")}),!0},enableSelection:function(a,b){return $(a).each(function(){switch(b){case"text":case"auto":case"none":val=b;break;default:val="auto"}$(this).css({"user-select":val,"-moz-user-select":val,"-webkit-user-select":val,"-o-user-select":val,"-ms-transform":val})})},disableContextMenu:function(a){var b=this;$(a).find("*").each(function(){$(this).get(0).tagName!=="INPUT"&&$(this).attr("type")!=="text"&&$(this).get(0).tagName!=="TEXTAREA"&&b._disableContextMenu(this)})},_disableContextMenu:function(a){$(a).each(function(){$(this).bind("contextmenu",function(a){return!1})})},enableContextMenu:function(a){$(a).each(function(){$(this).unbind("contextmenu")})},documentRelativeCoordsFromEvent:function(a){var b=a?a:window.event,c={x:b.clientX,y:b.clientY},d={x:b.pageX,y:b.pageY},e=0,f=0;b.type.match(/^touch/)&&(d={x:b.originalEvent.targetTouches[0].pageX,y:b.originalEvent.targetTouches[0].pageY},c={x:b.originalEvent.targetTouches[0].clientX,y:b.originalEvent.targetTouches[0].clientY});if(d.x||d.y)e=d.x,f=d.y;else if(c.x||c.y)e=c.x+document.body.scrollLeft+document.documentElement.scrollLeft,f=c.y+document.body.scrollTop+document.documentElement.scrollTop;return{x:e,y:f}},targetRelativeCoordsFromEvent:function(a){var b={x:a.offsetX,y:a.offsetY};if(b.x===undefined||isNaN(b.x)||b.y===undefined||isNaN(b.y)){var c=$(a.target).offset();b=$.mobile.tizen.documentRelativeCoordsFromEvent(a),b.x-=c.left,b.y-=c.top}return b}})}(),function(a,b,c,d){function e(a,b){var c=a%b;return c<0&&(c=b+c),c}function f(b){this.options=a.extend({},b),this.easing="easeOutQuad",this.reset()}function l(){return Date.now()}var g={scrolling:0,done:1},h=0,i=1,j=-1,k=/src\s*=\s*[\"\'][\w\/.]+.[A-z]+[\"\']/;a.extend(f.prototype,{start:function(a,b,c){this.state=b!==0?g.scrolling:g.done,this.pos=a,this.speed=b,this.duration=c,this.fromPos=0,this.toPos=0,this.startTime=l()},reset:function(){this.state=g.done,this.pos=0,this.speed=0,this.duration=0},update:function(){var b=this.state,c,d,e,f;return b==g.done?this.pos:(c=this.duration,d=l()-this.startTime,d=d>c?c:d,e=this.speed*(1-a.easing[this.easing](d/c,d,0,1,c)),f=this.pos+e/2,this.pos=f,d>=c&&(this.state=g.done),this.pos)},done:function(){return this.state==g.done},getPosition:function(){return this.pos}}),jQuery.widget("mobile.virtualgrid",jQuery.mobile.widget,{options:{template:"",direction:"y",rotation:!1},create:function(){this._create.apply(this,arguments)},_create:function(b){a.extend(this,{_$view:null,_$clip:null,_$rows:null,_tracker:null,_viewSize:0,_clipSize:0,_cellSize:d,_currentItemCount:0,_itemCount:1,_inheritedSize:null,_timerInterval:0,_timerID:0,_timerCB:null,_lastMove:null,_itemData:function(a){return null},_numItemData:0,_cacheItemData:function(a,b){},_totalRowCnt:0,_templateText:null,_maxViewSize:0,_modifyViewPos:0,_maxSizeExceptClip:0,_maxSize:0,_direction:!1,_didDrag:!0,_reservedPos:0,_scalableSize:0,_eventPos:0,_nextPos:0,_movePos:0,_lastY:0,_speedY:0,_lastX:0,_speedX:0,_rowsPerView:0,_fragment:null,_filterRatio:.9,_overflowStartPos:0,_overflowDir:0,_overflowMaxDragDist:100});var e=this,f=a(e.element),g=e.options,h=null;if(!b)return;if(!e._loadData(b))return;e._fragment=c.createDocumentFragment(),e._inheritedSize=e._getinheritedSize(e.element),e._direction=g.direction==="x"?!0:!1,e._$clip=f.addClass("ui-scrollview-clip").addClass("ui-virtualgrid-view"),h=a(c.createElement("div")).addClass("ui-scrollview-view"),e._clipSize=e._calculateClipSize(),e._$clip.append(h),e._$view=h,e._$clip.css("overflow","hidden"),e._$view.css("overflow","hidden"),e._scrollView=a.tizen.scrollview.prototype,e._initScrollView(),e._createTracker(),e._makePositioned(e._$clip),e._timerInterval=1e3/e.options.fps,e._timerID=0,e._timerCB=function(){e._handleMomentumScroll()},f.closest(".ui-content").addClass("ui-virtualgrid-content").css("overflow","hidden"),e._addBehaviors(),e._currentItemCount=0,e._createOverflowArea(),e._createScrollBar(),e.refresh()},_loadData:function(a){var b=this;if(!a.itemData||typeof a.itemData!="function")return!1;b._itemData=a.itemData;if(!a.numItemData)return!1;if(typeof a.numItemData=="function")b._numItemData=a.numItemData();else{if(typeof a.numItemData!="number")return!1;b._numItemData=a.numItemData}return b._getObjectNames(b._itemData(0)),!0},_initLayout:function(){var a=this,b=a.options,c,d;for(c=-1;c<a._rowsPerView+1;c+=1)d=a._$rows[e(c,a._$rows.length)],a._$view.append(d);a._setElementTransform(-a._cellSize),a._replaceRow(a._$view[0].firstChild,a._totalRowCnt-1),b.rotation&&a._rowsPerView>=a._totalRowCnt&&a._replaceRow(a._$view[0].lastChild,0),a._setViewSize()},_setViewSize:function(){var a=this,b=0,c=0;a._direction?(c=a._cellSize*(a._rowsPerView+2),c=parseInt(c,10)+1,a._$view.width(c),a._viewSize=a._$view.width()):(a._$view.height(a._cellSize*(a._rowsPerView+2)),a._$clip.height(a._clipSize),a._viewSize=a._$view.height())},_getViewWidth:function(){var a=this;return a._maxSize},_getViewHeight:function(){var a=this;return a._maxSize},refresh:function(){var b=this,c=b.options,d=0,e=0,f=null;f=a("#"+c.template);if(!f)return;b._templateText=b._insertAriaAttrToTmpl(f.text()),d=b._calculateClipWidth(),e=b._calculateClipHeight(),b._$view.width(d).height(e),b._$clip.width(d).height(e),b._clipSize=b._calculateClipSize(),b._calculateColumnSize(),b._initPageProperty(),b._setScrollBarSize()},_initPageProperty:function(){var b=this,c=0,d,e=0,f=0,g=b._direction?"width":"height";e=b._calculateColumnCount(),f=parseInt(b._numItemData/e,10),b._totalRowCnt=b._numItemData%e===0?f:f+1,b._itemCount=e;if(b._cellSize<=0)return;c=b._clipSize/b._cellSize,c=Math.ceil(c),b._rowsPerView=parseInt(c,10),d=a(b._makeRows(c+2)),b._$view.append(d.children()),b._$view.children().css(g,b._cellSize+"px"),b._$rows=b._$view.children().detach(),b._reservedPos=-b._cellSize,b._scalableSize=-b._cellSize,b._initLayout(),b._blockScroll=b._rowsPerView>b._totalRowCnt,b._maxSizeExceptClip=(b._totalRowCnt-b._rowsPerView)*b._cellSize,b._maxSize=b._totalRowCnt*b._cellSize,b._maxViewSize=b._rowsPerView*b._cellSize,b._modifyViewPos=-b._cellSize,b._clipSize<b._maxViewSize&&(b._modifyViewPos=-b._cellSize+(b._clipSize-b._maxViewSize))},_getinheritedSize:function(b){var c=a(b),d,e,f={ELEMENT_NODE:1,TEXT_NODE:3},g={isDefinedWidth:!1,isDefinedHeight:!1,width:0,height:0};while(c[0].nodeType===f.ELEMENT_NODE&&(g.isDefinedWidth===!1||g.isHeightDefined===!1)){d=c[0].style.height,e=c[0].style.width,g.isDefinedHeight===!1&&d!==""&&(g.isDefinedHeight=!0,g.height=parseInt(d,10)),g.isDefinedWidth===!1&&e!==""&&(g.isDefinedWidth=!0,g.width=parseInt(e,10)),c=c.parent();if(c.hasClass("ui-content"))break}return g},resize:function(){var a=this,b=null,c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=a._calculateColumnCount(),d!=a._itemCount&&(e=parseInt(a._numItemData/d,10),a._totalRowCnt=a._numItemData%d===0?e:e+1,h=a._itemCount,a._itemCount=d,i=a._getClipPosition(),a._$view.hide(),f=a._replaceRows(d,h,a._totalRowCnt,i),a._maxSizeExceptClip=(a._totalRowCnt-a._rowsPerView)*a._cellSize,a._maxSize=a._totalRowCnt*a._cellSize,a._scalableSize+=-f*a._cellSize,a._reservedPos+=-f*a._cellSize,a._setScrollBarSize(),a._setScrollBarPosition(f),a._$view.show()),g=a._calculateClipSize(),g!==a._clipSize&&(c=g/a._cellSize,c=parseInt(Math.ceil(c),10),c>a._rowsPerView?a._increaseRow(c-a._rowsPerView):c<a._rowsPerView&&a._decreaseRow(a._rowsPerView-c),a._rowsPerView=c,a._clipSize=g,a._blockScroll=a._rowsPerView>a._totalRowCnt,a._maxSizeExceptClip=(a._totalRowCnt-a._rowsPerView)*a._cellSize,a._maxSize=a._totalRowCnt*a._cellSize,a._maxViewSize=a._rowsPerView*a._cellSize,a._clipSize<a._maxViewSize&&(a._modifyViewPos=-a._cellSize+(a._clipSize-a._maxViewSize)),a._direction?a._$clip.width(a._clipSize):a._$clip.height(a._clipSize),a._setScrollBarSize(),a._setScrollBarPosition(0),a._setViewSize())},_initScrollView:function(){var b=this;a.extend(b.options,b._scrollView.options),b.options.moveThreshold=10,b.options.showScrollBars=!1,b._getScrollHierarchy=b._scrollView._getScrollHierarchy,b._makePositioned=b._scrollView._makePositioned,b._set_scrollbar_size=b._scrollView._set_scrollbar_size,b._setStyleTransform=b._scrollView._setElementTransform,b._hideOverflowIndicator=b._scrollView._hideOverflowIndicator,b._showOverflowIndicator=b._scrollView._showOverflowIndicator,b._setGestureScroll=b._scrollView._setGestureScroll},_createTracker:function(){var a=this;a._tracker=new f(a.options),a._direction?(a._hTracker=a._tracker,a._$clip.width(a._clipSize)):(a._vTracker=a._tracker,a._$clip.height(a._clipSize))},_createOverflowArea:function(){var b=this,c='<div class="ui-virtualgrid-overflow-indicator-',d='-top"></div>',e='-bottom"></div>';if(b.options.rotation)return;b._direction?(b._overflowTop=a(c+"x"+d),b._overflowBottom=a(c+"x"+e)):(b._overflowTop=a(c+"y"+d),b._overflowBottom=a(c+"y"+e)),b._$clip.append(b._overflowTop),b._$clip.append(b._overflowBottom),b._overflowDisplayed=!1},_hideVGOverflowIndicator:function(){if(this._overflowDisplayed===!1)return;this._overflowTop.animate({opacity:0},300),this._overflowBottom.animate({opacity:0},300),this._overflowDisplayed=!1},_createScrollBar:function(){var a=this,b='<div class="ui-scrollbar ui-scrollbar-',c='"><div class="ui-scrollbar-track"><div class="ui-scrollbar-thumb"></div></div></div>';if(a.options.rotation)return;a._direction?(a._$clip.append(b+"x"+c),a._hScrollBar=a._$clip.children(".ui-scrollbar-x"),a._hScrollBar.find(".ui-scrollbar-thumb").addClass("ui-scrollbar-thumb-x")):(a._$clip.append(b+"y"+c),a._vScrollBar=a._$clip.children(".ui-scrollbar-y"),a._vScrollBar.find(".ui-scrollbar-thumb").addClass("ui-scrollbar-thumb-y"))},_setScrollBarSize:function(){var a=this,b=0,c=0,d,e,f;if(a.options.rotation)return;b=parseInt(a._maxViewSize/a._clipSize,10),a._direction?(d=a._hScrollBar.find(".ui-scrollbar-thumb"),e="width",c=d.width(),f="ui-scrollbar-thumb-x",a._hScrollBar.css("width",a._clipSize)):(d=a._vScrollBar.find(".ui-scrollbar-thumb"),e="height",f="ui-scrollbar-thumb-y",c=d.height(),a._vScrollBar.css("height",a._clipSize)),b>c?(d.removeClass(f),d.css(e,b)):b=c,a._itemScrollSize=parseFloat((a._clipSize-b)/(a._totalRowCnt-a._rowsPerView)),a._itemScrollSize=Math.round(a._itemScrollSize*100)/100},_setScrollBarPosition:function(a,b){var c=this,d=null,e="0px",f="0px",g;if(c.options.rotation)return;c._currentItemCount=c._currentItemCount+a,c._vScrollBar?(d=c._vScrollBar.find(".ui-scrollbar-thumb"),f=c._currentItemCount*c._itemScrollSize+"px"):(d=c._hScrollBar.find(".ui-scrollbar-thumb"),e=c._currentItemCount*c._itemScrollSize+"px"),c._setStyleTransform(d,e,f,b)},_hideScrollBars:function(){var a=this,b="ui-scrollbar-visible";if(a.options.rotation)return;a._vScrollBar?a._vScrollBar.removeClass(b):a._hScrollBar.removeClass(b)},_showScrollBars:function(){var a=this,b="ui-scrollbar-visible";if(a.options.rotation)return;a._vScrollBar?a._vScrollBar.addClass(b):a._hScrollBar.addClass(b)},centerTo:function(b){var c=this,d,e=0,f=0;if(!c.options.rotation)return;for(d=0;d<c._$rows.length;d++)if(a(c._$rows[d]).hasClass(b)){c._direction?e=-(d*c._cellSize-c._clipSize/2+c._cellSize*2):f=-(d*c._cellSize-c._clipSize/2+c._cellSize*2),c.scrollTo(e,f);return}},scrollTo:function(a,b,c){var d=this;d._direction?(a-=d._cellSize,d._sx=d._reservedPos,d._reservedPos=a):(b-=d._cellSize,d._sy=d._reservedPos,d._reservedPos=b),d._scrollView.scrollTo.apply(this,[a,b,c])},getScrollPosition:function(){return this.direction?{x:-this._ry,y:0}:{x:0,y:-this._ry}},_setScrollPosition:function(a,b){var c=this,d=c._scalableSize,f=c._direction?a:b,g=f-d,k=parseInt(g/c._cellSize,10),l=0,m=0,n=0,o=c._rowsPerView+2,p=c._$view[0];if(c._blockScroll){g>0&&f>=-c._cellSize&&c._scalableSize>=-c._cellSize&&(c._overflowDir=i),g<0&&c._scalableSize<=-(c._maxSizeExceptClip+c._cellSize)&&(c._overflowDir=j);return}if(!c.options.rotation){if(g>0&&f>=-c._cellSize&&c._scalableSize>=-c._cellSize){c._stopMScroll(),c._scalableSize=-c._cellSize,c._setElementTransform(-c._cellSize),c._overflowDir===h&&(c._overflowDir=i);return}if(g<0&&c._scalableSize<=-(c._maxSizeExceptClip+c._cellSize)){c._stopMScroll(),c._scalableSize=-(c._maxSizeExceptClip+c._cellSize),c._setElementTransform(c._modifyViewPos),c._overflowDir===h&&(c._overflowDir=j);return}}n=Math.abs(k)<o?0:k>0?k-o:k+o;if(k>0)for(l=n;l<k;l++)m=-parseInt(d/c._cellSize+l+3,10),c._replaceRow(p.lastChild,e(m,c._totalRowCnt)),p.insertBefore(p.lastChild,p.firstChild);else if(k<0)for(l=n;l>k;l--)m=c._rowsPerView-parseInt(d/c._cellSize+l,10),c._replaceRow(p.firstChild,e(m,c._totalRowCnt)),p.insertBefore(p.firstChild,p.lastChild.nextSibling);c._setScrollBarPosition(-k),c._scalableSize+=k*c._cellSize,c._setElementTransform(f-c._scalableSize-c._cellSize)},_setElementTransform:function(a){var b=this,c=0,d=0;b._direction?c=a+"px":d=a+"px",b._setStyleTransform(b._$view,c,d)},_handleMomentumScroll:function(){var a=this,b=a.options,c=!1,d=this._$view,e=0,f=0,g=a._tracker;g&&(g.update(),a._direction?e=g.getPosition():f=g.getPosition(),c=!g.done()),a._setScrollPosition(e,f),b.rotation?a._reservedPos=a._direction?e:f:(c=!g.done(),a._reservedPos=a._direction?e:f,a._reservedPos=a._reservedPos<=-(a._maxSizeExceptClip-a._modifyViewPos)?-(a._maxSizeExceptClip+a._cellSize):a._reservedPos,a._reservedPos=a._reservedPos>-a._cellSize?-a._cellSize:a._reservedPos),a._$clip.trigger(a.options.updateEventName,[{x:e,y:f}]),c?a._timerID=setTimeout(a._timerCB,a._timerInterval):a._stopMScroll()},_startMScroll:function(a,b){var c=this;c._direction?c._sx=c._reservedPos:c._sy=c._reservedPos,c._scrollView._startMScroll.apply(c,[a,b])},_stopMScroll:function(){this._scrollView._stopMScroll.apply(this)},_enableTracking:function(){var a=this;a._$view.bind(a._dragMoveEvt,a._dragMoveCB),a._$view.bind(a._dragStopEvt,a._dragStopCB),a._scrollView._enableTracking.apply(a)},_disableTracking:function(){var a=this;a._$view.unbind(a._dragMoveEvt,a._dragMoveCB),a._$view.unbind(a._dragStopEvt,a._dragStopCB),a._scrollView._disableTracking.apply(a)},_handleDragStart:function(a,b,c){var d=this;d._scrollView._handleDragStart.apply(this,[a,b,c]),d._eventPos=d._direction?b:c,d._nextPos=d._reservedPos},_handleDragMove:function(a,b,c){var d=this,e=b-d._lastX,f=c-d._lastY,g=0,j=0,k=0,m=0,n=0,o=0,p=null;return d._lastMove=l(),d._speedX=e,d._speedY=f,d._didDrag=!0,d._lastX=b,d._lastY=c,d._direction?(d._movePos=b-d._eventPos,g=d._nextPos+d._movePos,o=b):(d._movePos=c-d._eventPos,j=d._nextPos+d._movePos,o=c),d._showScrollBars(),d._setScrollPosition(g,j),d._overflowDir!==h&&(p=d._overflowDir===i?d._overflowTop:d._overflowBottom,d._overflowDisplayed||(d._overflowDisplayed=!0,d._overflowStartPos=o),k=(o-d._overflowStartPos)*d._overflowDir,n=k<0?0:k>d._overflowMaxDragDist?1:k/d._overflowMaxDragDist,p.css("opacity",n)),!1},_handleDragStop:function(a){var b=this;return b._reservedPos=b._movePos?b._nextPos+b._movePos:b._reservedPos,b._scrollView._handleDragStop.apply(this,[a]),b._overflowDir!==h&&(b._overflowDir=h,b._hideVGOverflowIndicator()),b._didDrag?!1:d},_addBehaviors:function(){var d=this;d.options.eventType==="mouse"?(d._dragStartEvt="mousedown",d._dragStartCB=function(a){return d._handleDragStart(a,a.clientX,a.clientY)},d._dragMoveEvt="mousemove",d._dragMoveCB=function(a){return d._handleDragMove(a,a.clientX,a.clientY)},d._dragStopEvt="mouseup",d._dragStopCB=function(a){return d._handleDragStop(a,a.clientX,a.clientY)},d._$view.bind("vclick",function(a){return!d._didDrag})):(d._dragStartEvt="touchstart"
-,d._dragStartCB=function(a){var b=a.originalEvent.targetTouches[0];return d._handleDragStart(a,b.pageX,b.pageY)},d._dragMoveEvt="touchmove",d._dragMoveCB=function(a){var b=a.originalEvent.targetTouches[0];return d._handleDragMove(a,b.pageX,b.pageY)},d._dragStopEvt="touchend",d._dragStopCB=function(a){return d._handleDragStop(a)}),d._$view.bind(d._dragStartEvt,d._dragStartCB),d._$view.delegate(".virtualgrid-item","click",function(b){var c=a(this);c.trigger("select",this)}),a(b).bind("resize",function(b){var c=0,e=a(".ui-virtualgrid-view");e.length!==0&&(d._direction?(c=d._calculateClipHeight(),d._$view.height(c),d._$clip.height(c)):(c=d._calculateClipWidth(),d._$view.width(c),d._$clip.width(c)),d.resize())}),a(c).one("pageshow",function(c){var e=a(d.element).parents(".ui-page"),f=e.find(":jqmData(role='header')"),g=e.find(":jqmData(role='footer')"),h=e.find(":jqmData(role='content')"),i=g?g.height():0,j=f?f.height():0;e&&h&&(h.height(b.innerHeight-j-i).css("overflow","hidden"),h.addClass("ui-virtualgrid-content"))})},_calculateClipSize:function(){var a=this,b=0;return a._direction?b=a._calculateClipWidth():b=a._calculateClipHeight(),b},_calculateClipWidth:function(){var c=this,d=c._$clip.parent(),e=0,f=a(b).width();return c._inheritedSize.isDefinedWidth?c._inheritedSize.width:(d.hasClass("ui-content")?(e=parseInt(d.css("padding-left"),10),f-=e||0,e=parseInt(d.css("padding-right"),10),f-=e||0):f=c._$clip.width(),f)},_calculateClipHeight:function(){var c=this,d=c._$clip.parent(),e=null,f=null,g=0,h=a(b).height();return c._inheritedSize.isDefinedHeight?c._inheritedSize.height:(d.hasClass("ui-content")?(g=parseInt(d.css("padding-top"),10),h-=g||0,g=parseInt(d.css("padding-bottom"),10),h-=g||0,e=d.siblings(".ui-header"),f=d.siblings(".ui-footer"),e&&(e.outerHeight(!0)===null?h-=a(".ui-header").outerHeight()||0:h-=e.outerHeight(!0)),f&&(h-=f.outerHeight(!0))):h=c._$clip.height(),h)},_calculateColumnSize:function(){var b=this,c,d;c=a(b._makeRows(1)),b._$view.append(c.children().first()),b._direction?(b._viewSize=b._$view.width(),d=b._$view.children().first().children().first(),b._cellSize=d.outerWidth(!0),b._cellOtherSize=d.outerHeight(!0)):(b._viewSize=b._$view.height(),d=b._$view.children().first().children().first(),b._cellSize=d.outerHeight(!0),b._cellOtherSize=d.outerWidth(!0)),c.remove(),b._$view.children().remove()},_calculateColumnCount:function(){var a=this,b=a._$clip,c=a._direction?b.innerHeight():b.innerWidth(),d=0;return a._direction?c-=parseInt(b.css("padding-top"),10)+parseInt(b.css("padding-bottom"),10):c-=parseInt(b.css("padding-left"),10)+parseInt(b.css("padding-right"),10),d=parseInt(c/a._cellOtherSize,10),d>0?d:1},_getClipPosition:function(){var a=this,b=null,c=null,d=-a._cellSize,e=a._$view.closest(".ui-scrollview-view");return e&&(b=e.css("-webkit-transform"),c=b.substr(7),c=c.substr(0,c.length-1),c=c.split(", "),d=Math.abs(c[5])),d},_makeRows:function(a){var b=this,c=0,d=null,e=null;e=b._createElement("div"),e.setAttribute("class","ui-scrollview-view");for(c=0;c<a;c+=1)d=b._makeRow(c),b._direction&&(d.style.top=0,d.style.left=c*b._cellSize),e.appendChild(d);return e},_makeRow:function(a){var b=this,c=a*b._itemCount,d=0,e=b._direction?"ui-virtualgrid-wrapblock-x":"ui-virtualgrid-wrapblock-y",f=b._createElement("div"),g="",h=b._direction?"top":"left";for(d=0;d<b._itemCount;d++)g+=b._makeHtmlData(c,d,h),c+=1;return f.innerHTML=g,f.setAttribute("class",e),f.setAttribute("row-index",String(a)),b._fragment.appendChild(f),f},_makeHtmlData:function(a,b,c){var d=this,e="",f=null;return f=d._itemData(a),f&&(e=d._getConvertedTmplStr(f),e=d._insertPosToTmplStr(e,c,b*d._cellOtherSize)),e},_insertPosToTmplStr:function(a,b,c){var d=a.indexOf(">"),e=-1,f,g,h,i=!1,j=0,k,l=0;if(d===-1)return;f=a.slice(0,d),g=a.slice(d,a.length),e=f.indexOf("class");if(e!==-1){k=f.length;for(l=e+6;l<k;l++)if(f.charAt(l)==='"'||f.charAt(l)==="'"){if(i!==!1){j=l;break}i=!0}h=f.slice(0,j)+" virtualgrid-item"+f.slice(j,k)+g}else h=f+' class="virtualgrid-item"'+g;return isNaN(c)||(h=h.replace(">",' style="'+b+": "+String(c)+'px">')),h},_increaseRow:function(b){var c=this,d=c.options.rotation,e=null,f=0,g=0,h=0,i=c._scalableSize,j=0;f=parseInt(a(c._$view.children().first()).attr("row-index"),10)-1,g=parseInt(a(c._$view.children()[c._rowsPerView]).attr("row-index"),10)+1;for(j=1;j<=b;j++)g+j>=c._totalRowCnt?(e=a(c._makeRow(f)),c._$view.prepend(e),f-=1):(e=a(c._makeRow(g+j)),c._$view.append(e)),c._direction?e.width(c._cellSize):e.height(c._cellSize)},_decreaseRow:function(a){var b=this,c=0;for(c=0;c<a;c++)b._$view.children().last().remove()},_replaceRows:function(b,c,d,f){var g=this,h=g._$view.children(),i=0,j=0,k=0,l=1,m=g._filterRatio*g._cellSize+g._cellSize,n=0;m<f&&(l+=1),i=parseInt(a(h[l]).attr("row-index"),10),i===0?j=d-l:(j=Math.round(i*c/b),j+g._rowsPerView>=d&&(j=d-g._rowsPerView),k=i-j,j-=l);for(n=0;n<h.length;n+=1)g._replaceRow(h[n],e(j,g._totalRowCnt)),j++;return-k},_replaceRow:function(a,b){var c=this,d=null;while(a.hasChildNodes())a.removeChild(a.lastChild);d=c._makeRow(b);while(d.children.length)a.appendChild(d.children[0]);d.parentNode.removeChild(d)},_createElement:function(a){var b=c.createElement(a);return this._fragment.appendChild(b),b},_getObjectNames:function(a){var b=[],c="";for(c in a)b.push(c);this._properties=b},_getConvertedTmplStr:function(a){var b=this,c=b._properties,d=0,e,f="";if(!a)return;e=b._templateText;for(d=0;d<c.length;d++)e=b._strReplace(e,"${"+c[d]+"}",a[c[d]]);return e=b._changeImgSrcAriaAttrFromTmpl(e),e},_changeImgSrcAriaAttrFromTmpl:function(a){var b=this,c="",d,e="",f="",g,h,i,j;i=a,d=i.indexOf("$ARIA-IMG-SRC-ALT$");while(d!==-1)g="",e+=i.slice(0,d+19),f=i.slice(d+19,i.length),j=f.match(k),j&&(h=j[0].lastIndexOf("/"),h!==-1&&(g=j[0].slice(h+1,-1))),e=e.replace("$ARIA-IMG-SRC-ALT$",g),i=f,d=i.indexOf("$ARIA-IMG-SRC-ALT$"),c=e+f;return c===""&&(c=a),c},_insertAriaAttrToTmpl:function(a){var b="",c,d="",e="",f;f=a.replace("<div",'<div tabindex="0" aria-selected="true"'),c=f.indexOf("<img");if(c!==-1){while(c!==-1)d+=f.slice(0,c+4),e=f.slice(c+4,f.length),d+=' role="img" alt="$ARIA-IMG-SRC-ALT$"',f=e,c=f.indexOf("<img"),b=d+e;f=b,c=f.indexOf("<span"),d="";while(c!==-1)d+=f.slice(0,c+5),e=f.slice(c+5,f.length),d+=' aria-hidden="true" tabindex="-1"',f=e,c=f.indexOf("<span"),b=d+e}return b===""&&(b=a),b},_strReplace:function(a,b,c){var d=a,e=a.indexOf(b);while(e!==-1)d=d.replace(b,c),e=d.indexOf(b);return d}}),a(c).bind("pagecreate create",function(b){a(":jqmData(role='virtualgrid')").virtualgrid()})}(jQuery,window,document),function(a,b){var c={},d=0,e=1,f=-1;a.widget("tizen.virtuallistview",a.mobile.widget,{options:{theme:"s",countTheme:"s",headerTheme:"s",dividerTheme:"s",splitIcon:"arrow-r",splitTheme:"s",inset:!1,id:"",childSelector:" li",dbtable:"",template:"",dbkey:!1,scrollview:!1,row:100,page_buf:30,initSelector:":jqmData(role='virtuallistview')"},_stylerMouseUp:function(){a(this).addClass("ui-btn-up-s"),a(this).removeClass("ui-btn-down-s")},_stylerMouseDown:function(){a(this).addClass("ui-btn-down-s"),a(this).removeClass("ui-btn-up-s")},_stylerMouseOver:function(){a(this).toggleClass("ui-btn-hover-s")},_stylerMouseOut:function(){a(this).toggleClass("ui-btn-hover-s"),a(this).addClass("ui-btn-up-s"),a(this).removeClass("ui-btn-down-s")},_pushData:function(b){var c=this.options,d,e=a("#"+b),f=c.row>this._numItemData?this._numItemData:c.row,g;for(d=0;d<f;d++)g=e.tmpl(this._itemData(d)),a(c.id).append(a(g).attr("id",c.itemIDPrefix+d));a(c.id).trigger("create")},_reposition:function(b){var c,d=this,e,f;b.data?c=b.data:c=b,a(c.id+c.childSelector).size()>0&&(d._title_h=a(c.id+c.childSelector+":first").position().top,d._line_h=a(c.id+c.childSelector+":first").outerHeight(),d._container_w=a(c.id).innerWidth(),e=parseInt(a(c.id+c.childSelector).css("padding-left"),10)+parseInt(a(c.id+c.childSelector).css("padding-right"),10),a(c.id+">"+c.childSelector).addClass("position_absolute").addClass("ui-btn-up-s").bind("mouseup",d._stylerMouseUp).bind("mousedown",d._stylerMouseDown).bind("mouseover",d._stylerMouseOver).bind("mouseout",d._stylerMouseOut)),a(c.id+">"+c.childSelector).each(function(b){f=parseInt(a(this).css("margin-left"),10)+parseInt(a(this).css("margin-right"),10),a(this).css("top",d._title_h+d._line_h*b+"px").css("width",d._container_w-e-f)}),a(c.id).height(d._numItemData*d._line_h)},_resize:function(b){var c,d=this,e,f;b.data?c=b.data:c=b,d._container_w=a(c.id).innerWidth(),e=parseInt(a(c.id+c.childSelector).css("padding-left"),10)+parseInt(a(c.id+c.childSelector).css("padding-right"),10),a(c.id+c.childSelector).each(function(b){f=parseInt(a(this).css("margin-left"),10)+parseInt(a(this).css("margin-right"),10),a(this).css("width",d._container_w-e-f)})},_scrollmove:function(b){function j(){return d.scrollview?h.viewTop():i.viewTop()}function k(a){var b=!1;b&&console.log(">>virtualllist: "+a)}function l(b,c){function t(b,c,d){var e={ELEMENT_NODE:1,TEXT_NODE:3},f,g,h,i,j;a(c).find(".ui-li-text-main",".ui-li-text-sub",".ui-li-text-sub2","ui-btn-text").each(function(b){f=a(this),h=a(d).find(".ui-li-text-main",".ui-li-text-sub","ui-btn-text").eq(b).text(),a(f).contents().filter(function(){return this.nodeType==e.TEXT_NODE}).get(0).data=h}),a(c).find("img").each(function(b){var c=a(this);i=a(d).find("img").eq(b).attr("src"),a(c).attr("src",i)}),a(c).removeData()}function u(b,c,d){var e,f,g,h;return k(">> move item: "+c+" --> "+d),f=a("#"+b.options.itemIDPrefix+c),!f||!f.length?!1:(h=a("#"+b.options.template),h&&(g=h.tmpl(b._itemData(d)),t(b,f,g),g.remove()),f.css("top",d*b._line_h).attr("id",b.options.itemIDPrefix+d),!0)}var d,e,g,h=b._first_index,i=b._last_index,m,n,o,p,q=b.options.row,r,s;d=j(),r=Math.ceil(q/3),e=Math.floor(d/b._line_h)-r,g=e+q-1,e<0?(g+=-e,e=0):g>b._numItemData-1&&(e-=g-(b._numItemData-1),g=b._numItemData-1),m=e-h,k("cy="+d+", oti="+h+", obi="+i+", cti="+e+", cbi="+g+", dti="+m);if(0==m){b.timerStillCount+=1;if(b.timerStillCount<12){k("dti=0 "+b.timerStillCount+" times"),b.timerMoveID=setTimeout(l,f,b);return}k("dti=0 "+b.timerStillCount+" times. End timer."),b.timerStillCount=0,b.timerMoveID&&(clearTimeout(b.timerMoveID),b.timerMoveID=null)}else{b.timerStillCount=0,Math.abs(m)>=q?(n=h,o=i,p=m,k(">>> WHOLE CHANGE! delta="+p)):(m>0?(n=h,o=h+m-1,p=q):(n=i+m+1,o=i,p=-q),k(">>> partial change. delta="+p));for(s=n;s<=o;s++)u(b,s,s+p);b._first_index=e,b._last_index=g,b.timerMoveID=setTimeout(l,f,b)}return}var c=b.data,d=c.options,e=c._num_top_items,f=100,g,h,i;h={viewTop:function(){var b=a(d.id).parentsUntil(".ui-page").find(".ui-scrollview-view"),c=b.css("-webkit-transform"),e="0,0,0,0,0,0";return c&&(e=c.replace(/matrix\s*\((.*)\)/,"$1")),-parseInt(e.split(",")[5],10)}},i={viewTop:function(){return a(window).scrollTop()}},c.timerStillCount=0,c.timerMoveID&&(clearTimeout(c.timerMoveID),c.timerMoveID=null),l(c)},_recreate:function(b){var c=this,e=this.options;a(e.id).empty(),c._numItemData=b.length,c._direction=d,c._first_index=0,c._last_index=e.row-1,c._pushData(e.template),e.childSelector==" ul"&&a(e.id+" ul").swipelist(),a(e.id).virtuallistview(),c.refresh(!0),c._reposition(e)},_initList:function(){var b=this,c=this.options;b._pushData(c.template),a(c.id).parentsUntil(".ui-page").parent().one("pageshow",function(){setTimeout(function(){b._reposition(c)},0)}),a(document).bind("scrollstart.virtuallist scrollstop.vrituallist",b,b._scrollmove),a(window).bind("resize.virtuallist",b._resize),c.childSelector==" ul"&&a(c.id+" ul").swipelist(),b.refresh(!0)},create:function(){var a=this.options;this._create.apply(this,arguments),this._reposition(a)},_create:function(b){a.extend(this,{_itemData:function(a){return null},_numItemData:0,_cacheItemData:function(a,b){},_title_h:0,_container_w:0,_minimum_row:100,_direction:d,_first_index:0,_last_index:0,_num_top_items:0});var c=this,e=this.options,f=this.element,g=a('<div class="ui-virtuallist"/>'),h=a("<ul></ul>"),i=f.find(':jqmData(role="virtuallistview" )'),j=null,k=this,l,m;f.addClass(function(a,b){return b+" ui-listview ui-virtual-list-container"+(c.options.inset?" ui-listview-inset ui-corner-all ui-shadow ":"")}),e.itemIDPrefix=f.attr("id")+"_",e.id="#"+f.attr("id"),a(e.id).bind("pagehide",function(b){a(e.id).empty()}),a(".ui-scrollview-clip").size()>0?e.scrollview=!0:e.scrollview=!1,f.data("row")&&(e.row=f.data("row"),e.row<c._minimum_row&&(e.row=c._minimum_row),e.page_buf=parseInt(e.row/2,10));if(b){if(!b.itemData||typeof b.itemData!="function")return;c._itemData=b.itemData;if(!b.numItemData)return;if(typeof b.numItemData=="function")c._numItemData=b.numItemData();else{if(typeof b.numItemData!="number")return;c._numItemData=b.numItemData}}else{console.warn("WARNING: The data interface of virtuallist is changed. \nOld data interface(data-dbtable) is still supported, but will be removed in next version. \nPlease fix your code soon!");if(!a(e.id).hasClass("vlLoadSuccess"))return;l=f.jqmData("dbtable"),m=window[l],a(e.id).empty(),m||(m={}),c._itemData=function(a){return m[a]},c._numItemData=m.length}f.data("template")&&(e.template=f.data("template"),f.data("swipelist")==1?e.childSelector=" ul":e.childSelector=" li"),f.data("dbkey")&&(e.dbkey=f.data("dbkey")),c._first_index=0,c._last_index=e.row-1,c._initList()},destroy:function(){var b=this.options;a(document).unbind("scrollstop"),a(window).unbind("resize.virtuallist"),a(b.id).empty(),this.timerMoveID&&(clearTimeout(this.timerMoveID),this.timerMoveID=null)},_itemApply:function(b,c){var d=c.find(".ui-li-count");d.length&&c.addClass("ui-li-has-count"),d.addClass("ui-btn-up-"+(b.jqmData("counttheme")||this.options.countTheme)+" ui-btn-corner-all"),c.find("h1, h2, h3, h4, h5, h6").addClass("ui-li-heading").end().find("p, dl").addClass("ui-li-desc").end().find(">img:eq(0), .ui-link-inherit>img:eq(0)").addClass("ui-li-thumb").each(function(){c.addClass(a(this).is(".ui-li-icon")?"ui-li-has-icon":"ui-li-has-thumb")}).end().find(".ui-li-aside").each(function(){var b=a(this);b.prependTo(b.parent())})},_removeCorners:function(a,b){var c="ui-corner-top ui-corner-tr ui-corner-tl",d="ui-corner-bottom ui-corner-br ui-corner-bl";a=a.add(a.find(".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb")),b==="top"?a.removeClass(c):b==="bottom"?a.removeClass(d):a.removeClass(c+" "+d)},_refreshCorners:function(a){var b,c,d,e;this.options.inset&&(b=this.element.children("li"),c=a?b.not(".ui-screen-hidden"):b.filter(":visible"),this._removeCorners(b),d=c.first().addClass("ui-corner-top"),d.add(d.find(".ui-btn-inner")).find(".ui-li-link-alt").addClass("ui-corner-tr").end().find(".ui-li-thumb").not(".ui-li-icon").addClass("ui-corner-tl"),e=c.last().addClass("ui-corner-bottom"),e.add(e.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"))},refresh:function(b){this.parentPage=this.element.closest(".ui-page"),this._createSubPages();var c=this.options,d=this.element,e=this,f=d.jqmData("dividertheme")||c.dividerTheme,g=d.jqmData("splittheme"),h=d.jqmData("spliticon"),i=d.children("li"),j=a.support.cssPseudoElement||!a.nodeName(d[0],"ol")?0:1,k,l,m,n,o,p,q,r,s,t,u;j&&d.find(".ui-li-dec").remove();for(s=0,t=i.length;s<t;s++){k=i.eq(s),l="ui-li";if(b||!k.hasClass("ui-li"))u=k.jqmData("theme")||c.theme,n=k.children("a"),n.length?(r=k.jqmData("icon"),k.buttonMarkup({wrapperEls:"div",shadow:!1,corners:!1,iconpos:"right",icon:!1,theme:u}),r!=0&&n.length==1&&k.addClass("ui-li-has-arrow"),n.first().addClass("ui-link-inherit"),n.length>1&&(l+=" ui-li-has-alt",o=n.last(),p=g||o.jqmData("theme")||c.splitTheme,o.appendTo(k).attr("title",o.getEncodedText()).addClass("ui-li-link-alt").empty().buttonMarkup({shadow:!1,corners:!1,theme:u,icon:!1,iconpos:!1}).find(".ui-btn-inner").append(a("<span />").buttonMarkup({shadow:!0,corners:!0,theme:p,iconpos:"notext",icon:h||o.jqmData("icon")||c.splitIcon})))):k.jqmData("role")==="list-divider"?(l+=" ui-li-divider ui-btn ui-bar-"+f,k.attr("role","heading"),j&&(j=1)):l+=" ui-li-static ui-body-"+u;j&&l.indexOf("ui-li-divider")<0&&(q=k.is(".ui-li-static:first")?k:k.find(".ui-link-inherit"),q.addClass("ui-li-jsnumbering").prepend("<span class='ui-li-dec'>"+j++ +". </span>")),k.add(k.children(".ui-btn-inner")).addClass(l),e._itemApply(d,k)}this._refreshCorners(b)},_idStringEscape:function(a){return a.replace(/\W/g,"-")},_createSubPages:function(){var b=this.element,d=b.closest(".ui-page"),e=d.jqmData("url"),f=e||d[0][a.expando],g=b.attr("id"),h=this.options,i="data-"+a.mobile.ns,j=this,k=d.find(":jqmData(role='footer')").jqmData("id"),l,m;typeof c[f]=="undefined"&&(c[f]=-1),g=g||++c[f],a(b.find("li>ul, li>ol").toArray().reverse()).each(function(c){var d=this,f=a(this),j=f.attr("id")||g+"-"+c,m=f.parent(),n,p=n.first().getEncodedText(),q=(e||"")+"&"+a.mobile.subPageUrlKey+"="+j,r=f.jqmData("theme")||h.theme,s=f.jqmData("counttheme")||b.jqmData("counttheme")||h.countTheme,t,u;n=a(f.prevAll().toArray().reverse()),n=n.length?n:a("<span>"+a.trim(m.contents()[0].nodeValue)+"</span>"),l=!0,t=f.detach().wrap("<div "+i+"role='page' "+i+"url='"+q+"' "+i+"theme='"+r+"' "+i+"count-theme='"+s+"'><div "+i+"role='content'></div></div>").parent().before("<div "+i+"role='header' "+i+"theme='"+h.headerTheme+"'><div class='ui-title'>"+p+"</div></div>").after(k?a("<div "+i+"role='footer' "+i+"id='"+k+"'>"):"").parent().appendTo(a.mobile.pageContainer),t.page(),u=m.find("a:first"),u.length||(u=a("<a/>").html(n||p).prependTo(m.empty())),u.attr("href","#"+q)}).virtuallistview(),l&&d.is(":jqmData(external-page='true')")&&d.data("page").options.domCache===!1&&(m=function(b,c){var f=c.nextPage,g;c.nextPage&&(g=f.jqmData("url"),g.indexOf(e+"&"+a.mobile.subPageUrlKey)!==0&&(j.childPages().remove(),d.remove()))},d.unbind("pagehide.remove").bind("pagehide.remove",m))},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.tizen.virtuallistview.prototype.options.initSelector,b.target).virtuallistview()})}(jQuery),function(a,b,c){a.widget("tizen.progress",a.mobile.widget,{options:{style:"circle",running:!1},show:function(){a(this.element).show()},hide:function(){a(this.element).hide()},_start:function(){this.init||(a(this.element).append(this.html),this.init=!0),this.show(),a(this.element).find(".ui-progress-"+this.options.style).addClass(this.runningClass)},_stop:function(){a(this.element).find(".ui-progress-"+this.options.style).removeClass(this.runningClass)},running:function(a){if(a===c)return this.options.running;this._setOption("running",a)},_setOption:function(a,c){if(a==="running"){if(typeof c!="boolean"){b.alert("running value MUST be boolean type!");return}this.options.running=c,this._refresh()}},_refresh:function(){this.options.running?this._start():this._stop()},_create:function(){var b=this,c=this.element,d=c.jqmData("style"),e,f;d?this.options.style=d:d=this.options.style,d=="circle"?(a(this.element).addClass("ui-progress-container-circle"),e='<div class="ui-progress-circle"></div>'):d==="pending"&&(a(this.element).addClass("ui-progressbar"),e='<div class="ui-progressbar-bg"><div class="ui-progress-pending"></div></div>'),this.html=a(e),f="ui-progress-"+d+"-running",a.extend(this,{init:!1,runningClass:f}),d==="pending"&&(a(this.element).append(this.html),this.init=!0),this._refresh()}}),a(document).bind("pagecreate create",function(b){a(b.target).find(":jqmData(role='progress')").progress()})}(jQuery,this),function(a,b,c,d){a.widget("tizen.tokentextarea",a.mobile.widget,{_focusStatus:null,_items:null,_viewWidth:0,_reservedWidth:0,_currentWidth:0,_fontSize:0,_anchorWidth:0,_labelWidth:0,_marginWidth:0,options:{label:"To : ",link:null,description:"+ {0}"},_create:function(){var b=this,d=this.element,e=d.jqmData("role"),f=this.options,g="ui-tokentextarea-link",h=a(c.createElement("input")),i=a(c.createElement("span")),j=a(c.createElement("a"));d.hide().empty().addClass("ui-"+e),a(i).text(f.label).addClass("ui-tokentextarea-label").attr("tabindex",0),d.append(i),a(h).addClass("ui-tokentextarea-input ui-tokentextarea-input-visible ui-input-text ui-body-s").attr("role","textbox"),d.append(h);if(f.link===null||a.trim(f.link).length<1||a(f.link).length===0)g+="-dim";a(j).attr("data-role","button").buttonMarkup({inline:!0,icon:"plus",style:"circle"}).attr({href:a.trim(f.link),tabindex:0}).addClass("ui-tokentextarea-link-base").addClass(g).find("span.ui-btn-text").text("Add recipient"),d.append(j),this._bindEvents(),b._focusStatus="init",d.show(),b._viewWidth=d.innerWidth(),b._reservedWidth+=b._calcBlockWidth(j),b._reservedWidth+=b._calcBlockWidth(i),b._fontSize=parseInt(a(j).css("font-size"),10),b._currentWidth=b._reservedWidth,b._modifyInputBoxWidth()},_bindEvents:function(){var b=this,d=b.element,e=b.options,f=d.find(".ui-tokentextarea-input"),g=d.find(".ui-tokentextarea-link-base"),h=!1;d.delegate("div","click",function(c){a(this).hasClass("ui-tokentextarea-sblock")&&b._removeTextBlock();var e=d.find("div.ui-tokentextarea-sblock");typeof e!="undefined"&&e.removeClass("ui-tokentextarea-sblock").addClass("ui-tokentextarea-block"),a(this).removeClass("ui-tokentextarea-block").addClass("ui-tokentextarea-sblock"),d.trigger("select")}),f.bind("keyup",function(c){var d=c.keyCode,e=a(f).val(),g=[],i;if(d===8)e.length===0&&b._validateTargetBlock();else if(d===13||d===186||d===188){if(e.length!==0){g=e.split(/[,;]/);for(i=0;i<g.length;i++)g[i].length!==0&&g[i].replace(/\s/g,"").length!==0&&b._addTextBlock(g[i])}f.val(""),h=!0}else b._unlockTextBlock();return!h}),g.click(function(){if(a(g).hasClass("ui-tokentextarea-link-dim"))return;a(f).removeClass("ui-tokentextarea-input-visible").addClass("ui-tokentextarea-input-invisible"),a.mobile.changePage(e.link,{transition:"slide",reverse:!1,changeHash:!1})}),a(c).bind("pagechange.mbe",function(c){if(d.innerWidth()===0)return;b._modifyInputBoxWidth(),a(f).removeClass("ui-tokentextarea-input-invisible").addClass("ui-tokentextarea-input-visible")}),d.bind("click",function(a){b._focusStatus==="focusOut"&&b.focusIn()})},_addTextBlock:function(b,d){if(arguments.length===0)return;if(!b)return;var e=this,f=e.element,g=b,h=d,i=null,j=null;e._viewWidth===0&&(e._viewWidth=f.innerWidth()),j=a(c.createElement("div")),j.text(g).addClass("ui-tokentextarea-block").attr({"aria-label":"double tap to edit",tabindex:0}),j.css({visibility:"hidden"}),i=f.find("div"),h!==null&&h<=i.length?a(i[h]).before(j):f.find(".ui-tokentextarea-input").before(j),j=e._ellipsisTextBlock(j),j.css({visibility:"visible"}),e._modifyInputBoxWidth(),j.hide(),j.fadeIn("fast",function(){e._currentWidth+=e._calcBlockWidth(j),f.trigger("add")})},_removeTextBlock:function(){var a=this,b=this.element,c=b.find("div.ui-tokentextarea-sblock"),d=null,e=function(){};c!==null&&c.length>0?(a._currentWidth-=a._calcBlockWidth(c),c.fadeOut("fast",function(){c.remove(),a._modifyInputBoxWidth()}),this._eventRemoveCall=!0,b[0].remove&&(d=b[0].remove,b[0].remove=e),b.triggerHandler("remove"),d&&(b[0].remove=d),this._eventRemoveCall=!1):b.find("div:last").removeClass("ui-tokentextarea-block").addClass("ui-tokentextarea-sblock")},_calcBlockWidth:function(b){return a(b).outerWidth(!0)},_unlockTextBlock:function(){var a=this.element,b=a.find("div.ui-tokentextarea-sblock");b&&b.removeClass("ui-tokentextarea-sblock").addClass("ui-tokentextarea-block")},_validateTargetBlock:function(){var a=this,b=a.element,c=b.find("div:last"),d=null;c.hasClass("ui-tokentextarea-sblock")?a._removeTextBlock():(d=b.find("div.ui-tokentextarea-sblock"),d.removeClass("ui-tokentextarea-sblock").addClass("ui-tokentextarea-block"),c.removeClass("ui-tokentextarea-block").addClass("ui-tokentextarea-sblock"))},_ellipsisTextBlock:function(b){var c=this,d=c.element,e=c._viewWidth/2;return c._calcBlockWidth(b)>e&&a(b).width(e-c._marginWidth),b},_modifyInputBoxWidth:function(){var b=this,c=b.element,d=0,e=0,f=0,g=0,h=c.find("div"),i=0,j=0,k=10,l=c.find(".ui-tokentextarea-input");if(c.width()===0)return;b._labelWidth===0&&(b._labelWidth=c.find(".ui-tokentextarea-label").outerWidth(!0),b._anchorWidth=c.find(".ui-tokentextarea-link-base").outerWidth(!0),b._marginWidth=parseInt(a(l).css("margin-left"),10),b._marginWidth+=parseInt(a(l).css("margin-right"),10),b._viewWidth=c.innerWidth()),d=b._marginWidth,e=b._labelWidth,f=b._anchorWidth,g=b._viewWidth-e;for(j=0;j<h.length;j+=1)i=b._calcBlockWidth(h[j]),i>=g+f?i>=g?g=b._viewWidth-i:g=b._viewWidth:i>g?g=b._viewWidth-i:g-=i;g-=d,g<f*2&&(g=b._viewWidth-d),a(l).width(g-f-k)},_stringFormat:function(a){var b=null,c=a,d=0;for(d=1;d<arguments.length;d+=1)b="{"+(d-1)+"}",c=c.replace(b,arguments[d]);return c},_resizeBlocks:function(){var b=this,c=b.element,d=c.find("div"),e=0;for(e=0;e<d.length;e+=1)a(d[e]).css("width","auto"),d[e]=b._ellipsisTextBlock(d[e])},focusIn:function(){if(this._focusStatus==="focusIn")return;var a=this.element;a.find(".ui-tokentextarea-label").attr("tabindex",0).show(),a.find(".ui-tokentextarea-desclabel").remove(),a.find("div.ui-tokentextarea-sblock").removeClass("ui-tokentextarea-sblock").addClass("ui-tokentextarea-block"),a.find("div").attr({"aria-label":"double tap to edit",tabindex:0}).show(),a.find(".ui-tokentextarea-input").removeClass("ui-tokentextarea-input-invisible").addClass("ui-tokentextarea-input-visible").attr("tabindex",0),a.find("a").attr("tabindex",0).show(),this._modifyInputBoxWidth(),this._focusStatus="focusIn",a.removeClass("ui-tokentextarea-focusout").addClass("ui-tokentextarea-focusin").removeAttr("tabindex"),a.find(".ui-tokentextarea-input").focus()},focusOut:function(){if(this._focusStatus==="focusOut")return;var b=this,d=b.element,e=null,f=null,g=null,h="",i=0,j=10,k=d.find(".ui-tokentextarea-label"),l=d.find("span"),m=d.find("div"),n=d.outerWidth(!0)-l.outerWidth(!0)-k.outerWidth(!0),o=0;k.removeAttr("tabindex"),d.find(".ui-tokentextarea-input").removeClass("ui-tokentextarea-input-visible").addClass("ui-tokentextarea-input-invisible").removeAttr("tabindex"),d.find("a").removeAttr("tabindex").hide(),m.removeAttr("aria-label").removeAttr("tabindex").hide(),n-=b._reservedWidth;for(i=0;i<m.length;i++){o=a(m[i]).outerWidth(!0);if(n-o<=0){j=i-1;break}a(m[i]).show(),n-=o}j!==m.length&&(h=b._stringFormat(b.options.description,m.length-j-1),e=a(c.createElement("span")),e.addClass("ui-tokentextarea-desclabel").attr({"aria-label":"more, double tap to edit",tabindex:"-1"}),f=a(c.createElement("span")).text(h).attr("aria-hidden","true"),g=a(c.createElement("span")).text(m.length-j-1).attr("aria-label","and").css("visibility","hidden"),e.append(f),e.append(g),a(m[j]).after(e)),this._focusStatus="focusOut",d.removeClass("ui-tokentextarea-focusin").addClass("ui-tokentextarea-focusout").attr("tabindex",0)},inputText:function(a){var b=this.element;return arguments.length===0?b.find(".ui-tokentextarea-input").val():(b.find(".ui-tokentextarea-input").val(a),a)},select:function(b){var c=this.element,d=null,e=null;if(this._focusStatus==="focusOut")return;return arguments.length===0?(d=c.find("div.ui-tokentextarea-sblock"),d?d.text():null):(this._unlockTextBlock(),e=c.find("div"),e.length>b&&(a(e[b]).removeClass("ui-tokentextarea-block").addClass("ui-tokentextarea-sblock"),c.trigger("select")),null)},add:function(a,b){if(this._focusStatus==="focusOut")return;this._addTextBlock(a,b)},remove:function(b){var c=this,d=this.element,e=d.find("div"),f=0,g=null,h=function(){};if(this._focusStatus==="focusOut")return;arguments.length===0?e.fadeOut("fast",function(){e.remove(),c._modifyInputBoxWidth(),c._trigger("clear")}):isNaN(b)||(f=b<e.length?b:e.length-1,a(e[f]).fadeOut("fast",function(){a(e[f]).remove(),c._modifyInputBoxWidth()}),this._eventRemoveCall=!0,d[0].remove&&(g=d[0].remove,d[0].remove=h),d.triggerHandler("remove"),g&&(d[0].remove=g),this._eventRemoveCall=!1)},length:function(){return this.element.find("div").length},refresh:function(){var a=this,b=this.element;a._viewWidth=b.innerWidth(),a._resizeBlocks(),a._modifyInputBoxWidth()},destroy:function(){var a=this.element,b=null,c=function(){};if(this._eventRemoveCall)return;a.find(".ui-tokentextarea-label").remove(),a.find("div").undelegate("click").remove(),a.find("a").remove(),a.find(".ui-tokentextarea-input").unbind("keyup").remove(),this._eventRemoveCall=!0,a[0].remove&&(b=a[0].remove,a[0].remove=c),a.remove(),b&&(a[0].remove=b),this._eventRemoveCall=!1,this._trigger("destroy")}}),a(c).bind("pagecreate create",function(){a(":jqmData(role='tokentextarea')").tokentextarea()}),a(b).bind("resize",function(){a(":jqmData(role='tokentextarea')").tokentextarea("refresh")})}(jQuery,window,document),function(a,b){function c(){var b=a("script[data-framework-version][data-framework-root][data-framework-theme]");return b.attr("data-framework-root")+"/"+b.attr("data-framework-version")+"/themes/"+b.attr("data-framework-theme")+"/proto-html"}a.widget("tizen.widgetex",a.mobile.widget,{_createWidget:function(){a.tizen.widgetex.loadPrototype.call(this,this.namespace+"."+this.widgetName),a.mobile.widget.prototype._createWidget.apply(this,arguments)},_init:function(){if(this.element===b)return;var c=this.element.closest(".ui-page"),d=this,e={};c.is(":visible")?this._realize():c.bind("pageshow",function(){d._realize()}),a.extend(e,this.options),this.options={},this._setOptions(e)},_getCreateOptions:function(){if(this.element.is("input")&&this._value!==b){var c=this.element.attr("type")==="checkbox"||this.element.attr("type")==="radio"?this.element.is(":checked"):this.element.is("[value]")?this.element.attr("value"):b;c!=b&&this.element.attr(this._value.attr,c)}return a.mobile.widget.prototype._getCreateOptions.apply(this,arguments)},_setOption:function(c,d){var e="_set"+c.replace(/^[a-z]/,function(a){return a.toUpperCase()});this[e]!==b?this[e](d):a.mobile.widget.prototype._setOption.apply(this,arguments)},_setDisabled:function(b){a.Widget.prototype._setOption.call(this,"disabled",b),this.element.is("input")&&this.element.attr("disabled",b)},_setValue:function(b){a.tizen.widgetex.setValue(this,b)},_realize:function(){}}),a.tizen.widgetex.setValue=function(a,c){if(a._value!==b){var d=a._value.makeString?a._value.makeString(c):c,e;a.element.attr(a._value.attr,d),a._value.signal!==b&&a.element.triggerHandler(a._value.signal,c),a.element.is("input")&&(e=a.element.attr("type"),e==="checkbox"||e==="radio"?c?a.element.attr("checked",!0):a.element.removeAttr("checked"):a.element.attr("value",d),a.element.trigger("change"))}},a.tizen.widgetex.assignElements=function(b,c){var d={},e;for(e in c)typeof c[e]=="string"?(d[e]=b.find(c[e]),c[e].match(/^#/)&&d[e].removeAttr("id")):typeof c[e]=="object"&&(d[e]=a.tizen.widgetex.assignElements(b,c[e]));return d},a.tizen.widgetex.loadPrototype=function(d,e){var f=d.split("."),g,h,i,j=!1,k,l;f.length==2&&(g=f[0],h=f[1],a[g][h].prototype._htmlProto!==b&&(i=a[g][h].prototype._htmlProto.source,i===b&&(i=h,j=!0),typeof i=="string"?j?(d=i,l=c(),a.ajax({url:l+"/"+d+".prototype.html",async:!1,dataType:"html"}).success(function(b,c,d){i=a("<div></div>").html(b).jqmData("tizen.widgetex.ajax.fail",!1)}),i=a("<div></div>").text("Failed to load proto for widget "+g+"."+h+"!").css({background:"red",color:"blue",border:"1px solid black"}).jqmData("tizen.widgetex.ajax.fail",!0)):i=a(i).jqmData("tizen.widgetex.ajax.fail",!1):i.jqmData("tizen.widgetex.ajax.fail",!1),k=i,a[g][h].prototype._htmlProto.source=i,a[g][h].prototype._htmlProto.ui!==b&&a.extend(this,{_ui:a.tizen.widgetex.assignElements(k.clone(),a[g][h].prototype._htmlProto.ui)})))}}(jQuery),function(a,b,c){a.widget("tizen.tizenslider",a.mobile.widget,{options:{popup:!0},popup:null,handle:null,handleText:null,_create:function(){this.currentValue=null,this.popupVisible=!1;var b=this,d=a(this.element),e,f,g,h,i,j,k,l,m,n,o;d.slider(),d.hide(),b.popup=a('<div class="ui-slider-popup"></div>'),g=d.jqmData("popup"),g!==c&&(b.options.popup=g==1),e=d.next(".ui-slider"),h=d.attr("data-icon"),e.wrap('<div class="ui-slider-container"></div>'),b.handle=e.find(".ui-slider-handle"),e.removeClass("ui-btn-corner-all"),e.find("*").removeClass("ui-btn-corner-all");switch(h){case"bright":case"volume":l=a('<div class="ui-slider-left-'+h+'"></div>'),m=a('<div class="ui-slider-right-'+h+'"></div>'),e.before(l),e.after(m),n=l.width()+16,o=m.width()+16;break;case"text":j=d.attr("data-text-left")===c?"":d.attr("data-text-left").substring(0,3),i=d.attr("data-text-right")===c?"":d.attr("data-text-right").substring(0,3),k=Math.max(j.length,i.length)+1,n=k+"rem",o=k+"rem",l=a('<div class="ui-slider-left-text" style="left:'+ -k+"rem; width:"+k+'rem;">'+'<span style="position:relative;top:0.4em;">'+j+"</span></div>"),m=a('<div class="ui-slider-right-text" style="right:'+ -k+"rem; width:"+k+'rem;">'+'<span style="position:relative;top:0.4em;">'+i+"</span></div>"),e.before(l),e.after
-(m)}h&&e.parent(".ui-slider-container").css({"margin-left":n,"margin-right":o}),e.append(a('<div class="ui-slider-handle-press"></div>')),b.handle_press=e.find(".ui-slider-handle-press"),b.handle_press.css("display","none"),e.parents(".ui-page").append(b.popup),b.popup.hide(),b.handleText=e.find(".ui-btn-text"),b.updateSlider(),this.element.bind("change",function(){b.updateSlider()}),b.handle.bind("vmousedown",function(){b.showPopup()}),e.add(document).bind("vmouseup",function(){b.hidePopup()})},_handle_press_show:function(){this.handle_press.css("display","")},_handle_press_hide:function(){this.handle_press.css("display","none")},positionPopup:function(){var a=this.handle.offset();this.popup.offset({left:a.left+(this.handle.width()-this.popup.width())/2,top:a.top-this.popup.height()}),this.handle_press.offset({left:a.left,top:a.top})},updateSlider:function(){var a,b,c,d,e,f=function(a){var b=Math.abs(a),c;return b>999?c=4:b>99?c=3:b>9?c=2:c=1,a<0&&c++,c};this.handle.removeAttr("title"),e=this.element.val(),b=f(e);if(this.popupVisible){this.positionPopup();switch(b){case 1:case 2:a="1.5rem",d="0.15rem";break;case 3:a="1rem",d="0.5rem";break;default:a="0.8rem",d="0.5rem"}this.popup.css({"font-size":a,"padding-top":d})}if(e===this.currentValue)return;switch(b){case 1:a="0.95rem",c="0";break;case 2:a="0.85rem",c="-0.01rem";break;case 3:a="0.65rem",c="-0.05rem";break;default:a="0.45rem",c="-0.15rem"}a!=this.handleText.css("font-size")&&this.handleText.css({"font-size":a,top:c}),this.currentValue=e,this.handleText.text(e),this.popup.html(e),this.element.trigger("update",e)},showPopup:function(){if(!this.options.popup||this.popupVisible)return;this.popup.show(),this.popupVisible=!0,this._handle_press_show()},hidePopup:function(){if(!this.options.popup||!this.popupVisible)return;this.popup.hide(),this.popupVisible=!1,this._handle_press_hide()},_setOption:function(a,b){var c=b!==this.options[a];if(!c)return;switch(a){case"popup":this.options.popup=b,this.options.popup?this.updateSlider():this.hidePopup()}}}),a(document).bind("pagebeforecreate",function(d){a.data(b,"jqmSliderInitSelector")===c&&(a.data(b,"jqmSliderInitSelector",a.mobile.slider.prototype.options.initSelector),a.mobile.slider.prototype.options.initSelector=null)}),a(document).bind("pagecreate create",function(c){var d=a.data(b,"jqmSliderInitSelector");a(c.target).find(d).not("select").tizenslider(),a(c.target).find(d).filter("select").slider()})}(jQuery,this),function(a,b,c){a.widget("tizen.progressbar",a.mobile.widget,{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=a("<div class='ui-progressbar-value'></div>").appendTo(this.element),this.valueDiv.wrap("<div class='ui-progressbar-bg'></div>"),this.oldValue=this._value(),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(a){return a===c?this._value():(this._setOption("value",a),this)},_setOption:function(a,b){a==="value"&&(this.options.value=b,this._refreshValue(),this._value()===this.options.max&&this.element.trigger("complete"))},_value:function(){var a=this.options.value;return typeof a!="number"&&(a=0),Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this.element.trigger("change")),this.valueDiv.toggle(a>this.min).width(b.toFixed(0)+"%"),this.element.attr("aria-valuenow",a)}}),a(document).bind("pagecreate",function(b){a(b.target).find(":jqmData(role='progressbar')").progressbar()})}(jQuery,this),function(a,b){a.widget("tizen.popupwindow",a.tizen.widgetex,{options:{theme:null,overlayTheme:"s",style:"custom",disabled:!1,shadow:!0,corners:!0,fade:!1,opacity:.7,widthRatio:.8612,transition:a.mobile.defaultDialogTransition,initSelector:":jqmData(role='popupwindow')"},_htmlProto:{source:["<div><div>","    <div id='popupwindow-screen' class='ui-selectmenu-screen ui-screen-hidden ui-popupwindow-screen'></div>","    <div id='popupwindow-container' class='ui-popupwindow ui-popupwindow-padding ui-selectmenu-hidden ui-overlay-shadow ui-corner-all'></div>","</div>","</div>"].join(""),ui:{screen:"#popupwindow-screen",container:"#popupwindow-container"}},_setStyle:function(){var a=this.element,b=a.attr("data-style");b&&(this.options.style=b),a.addClass(this.options.style),a.find(":jqmData(role='title')").wrapAll("<div class='popup-title'></div>"),a.find(":jqmData(role='text')").wrapAll("<div class='popup-text'></div>"),a.find(":jqmData(role='button-bg')").wrapAll("<div class='popup-button-bg'></div>"),a.find(":jqmData(role='check-bg')").wrapAll("<div class='popup-check-bg'></div>"),a.find(":jqmData(role='scroller-bg')").addClass("popup-scroller-bg"),a.find(":jqmData(role='text-bottom-bg')").wrapAll("<div class='popup-text-bottom-bg'></div>"),a.find(":jqmData(role='text-left')").wrapAll("<div class='popup-text-left'></div>"),a.find(":jqmData(role='text-right')").wrapAll("<div class='popup-text-right'></div>"),a.find(":jqmData(role='progress-bg')").wrapAll("<div class='popup-progress-bg'></div>")},_create:function(){console.warn("popupwindow() was deprecated. use popup() instead.");var b=this.element.closest(":jqmData(role='page')"),c=this;b.length===0&&(b=a("body")),this._ui.placeholder=a("<div><!-- placeholder for "+this.element.attr("id")+" --></div>").css("display","none").insertBefore(this.element),b.append(this._ui.screen),this._ui.container.insertAfter(this._ui.screen),this._ui.container.append(this.element),this._setStyle(),this._isOpen=!1,this._ui.screen.bind("vclick",function(a){return c.close(),!1}),this.element.bind("vclick",function(b){a(b.target).is("ui-btn-ctxpopup-close")&&c.close()})},destroy:function(){this.element.insertBefore(this._ui.placeholder),this._ui.placeholder.remove(),this._ui.container.remove(),this._ui.screen.remove(),this.element.triggerHandler("destroyed"),a.Widget.prototype.destroy.call(this)},_placementCoords:function(b,c,d,e){var f=a(window).height(),g=a(window).width(),h=e/2,i=parseFloat(this._ui.container.css("max-width")),j=c,k=f-c,l,m;return j>e/2&&k>e/2?l=c-h:l=j>k?f-e-30:30,d<i?m=(g-d)/2:(m=b-d/2,m<10?m=10:m+d>g&&(m=g-d-10)),{x:m,y:l}},_setPosition:function(c,d){var e=b===c?a(window).width()/2:c,f=b===d?a(window).height()/2:d,g,h=this.element.data("ctxpopup"),i,j,k,l,m,n,o,p,q,r,s;h||(i=a(window).width()*this.options.widthRatio,this._ui.container.css("width",i),this._ui.container.outerWidth()>a(window).width()&&this._ui.container.css({"max-width":a(window).width()-30})),g=this._placementCoords(e,f,this._ui.container.outerWidth(),this._ui.container.outerHeight()),j=this._ui.container.innerHeight(),k=this._ui.container.innerWidth(),l=a(window).height(),m=a(window).width(),n=f,o=l-f,p=j/2,q=parseFloat(this._ui.container.css("max-width")),r=(l-j)/2,!q||k<q?s=(m-k)/2:(s=e-k/2,s<30?s=30:s+k>m&&(s=m-k-30)),h&&(r=g.y,s=g.x),this._ui.container.css({top:r,left:s}),this._ui.screen.css("height",l)},open:function(b,c,d){var e=this,f=0;if(this._isOpen||this.options.disabled)return;a(document).find("*").each(function(){var b=a(this),c=parseInt(b.css("z-index"),10);b.is(e._ui.container)||b.is(e._ui.screen)||isNaN(c)||(f=Math.max(f,c))}),this._ui.screen.css("height",a(window).height()),d?this._ui.screen.css("opacity",0).removeClass("ui-screen-hidden"):(this._ui.removeClass("ui-screen-hidden"),this.options.fade?this._ui.screen.animate({opacity:this.options.opacity},"fast"):this._ui.screen.css({opacity:this.options.opacity})),this._setPosition(b,c),this.element.trigger("popupbeforeposition"),this._ui.container.removeClass("ui-selectmenu-hidden").addClass("in").animationComplete(function(){e.element.trigger("popupafteropen")}),this._isOpen=!0,this._reflow||(this._reflow=function(){if(!e._isOpen)return;e._setPosition(b,c)},a(window).bind("resize",this._reflow))},close:function(){if(!this._isOpen)return;this._reflow&&(a(window).unbind("resize",this._reflow),this._reflow=null);var b=this,c=function(){b._ui.screen.addClass("ui-screen-hidden"),b._isOpen=!1};this._ui.container.removeClass("in").addClass("reverse out"),this.options.transition==="none"?(this._ui.container.addClass("ui-selectmenu-hidden").removeAttr("style"),this.element.trigger("popupafterclose")):this._ui.container.animationComplete(function(){b._ui.container.removeClass("reverse out").addClass("ui-selectmenu-hidden").removeAttr("style"),b.element.trigger("popupafterclose")}),this.options.fade?this._ui.screen.animate({opacity:0},"fast",c):c()},_realSetTheme:function(a,b){var c=(a.attr("class")||"").split(" "),d=!0,e=null,f;while(c.length>0){e=c.pop(),f=e.match(/^ui-body-([a-z])$/);if(f&&f.length>1){e=f[1];break}e=null}a.removeClass("ui-body-"+e),(b||"").match(/[a-z]/)&&a.addClass("ui-body-"+b)},_setTheme:function(b){this._realSetTheme(this.element,b),this.options.theme=b,this.element.attr("data-"+(a.mobile.ns||"")+"theme",b)},_setOverlayTheme:function(b){this._realSetTheme(this._ui.container,b),this.options.overlayTheme=b,this.element.attr("data-"+(a.mobile.ns||"")+"overlay-theme",b)},_setShadow:function(b){this.options.shadow=b,this.element.attr("data-"+(a.mobile.ns||"")+"shadow",b),this._ui.container[b?"addClass":"removeClass"]("ui-overlay-shadow")},_setCorners:function(b){this.options.corners=b,this.element.attr("data-"+(a.mobile.ns||"")+"corners",b),this._ui.container[b?"addClass":"removeClass"]("ui-corner-all")},_setFade:function(b){this.options.fade=b,this.element.attr("data-"+(a.mobile.ns||"")+"fade",b)},_setTransition:function(b){this._ui.container.removeClass(this.options.transition||"").addClass(b),this.options.transition=b,this.element.attr("data-"+(a.mobile.ns||"")+"transition",b)},_setDisabled:function(b){a.Widget.prototype._setOption.call(this,"disabled",b),b&&this.close()}}),a.tizen.popupwindow.bindPopupToButton=function(a,b){if(a.length===0||b.length===0)return;var c=function(c){return b.jqmData("overlay-theme-set")||b.popupwindow("option","overlayTheme",a.jqmData("theme")),b.popupwindow("open",a.offset().left+a.outerWidth()/2,a.offset().top+a.outerHeight()/2),!1};(b.popupwindow("option","overlayTheme")||"").match(/[a-z]/)&&b.jqmData("overlay-theme-set",!0),a.attr({"aria-haspopup":!0,"aria-owns":a.attr("href")}).removeAttr("href").bind("vclick",c),b.bind("destroyed",function(){a.unbind("vclick",c)})},a(document).bind("pagecreate create",function(b){a(a.tizen.popupwindow.prototype.options.initSelector,b.target).not(":jqmData(role='none'), :jqmData(role='nojs')").popupwindow(),a("a[href^='#']:jqmData(rel='popupwindow')",b.target).each(function(){a.tizen.popupwindow.bindPopupToButton(a(this),a(a(this).attr("href")))})})}(jQuery),function(a,b,c,d){function f(a,b){a.tizen||(a.tizen={}),a.tizen.frameworkData=b.frameworkData,a.tizen.loadCustomGlobalizeCulture=b.loadCustomGlobalizeCulture,a.tizen.loadTheme=b.loadTheme,a.tizen.__tizen__=b}var e={libFileName:"tizen-web-ui-fw(.min)?.js",frameworkData:{rootDir:"/usr/lib/tizen-web-ui-fw",version:"0.1",theme:"tizen-white",viewportWidth:"device-width",viewportScale:!1,defaultFontSize:22,minified:!1,debug:!1},log:{debug:function(a){e.frameworkData.debug&&console.log(a)},warn:function(a){console.warn(a)},error:function(a){console.error(a)},alert:function(a){c.alert(a)}},util:{loadScriptSync:function(b,c,d){a.ajax({url:b,dataType:"script",async:!1,crossDomain:!1,success:c,error:function(c,f,g){if(d)d(c,f,g);else{var h=[404],i="Error while loading "+b+"\n"+c.status+":"+c.statusText;-1==a.inArray(c.status,h)?e.log.alert(i):e.log.warn(i)}}})},isMobileBrowser:function(){var a=c.navigator.appVersion.indexOf("Mobile"),b=-1<a;return b}},css:{cacheBust:document.location.href.match(/debug=true/)?"?cacheBust="+(new Date).getTime():"",addElementToHead:function(b){var c=document.getElementsByTagName("head")[0];c&&a(c).prepend(b)},makeLink:function(a){var b=document.createElement("link");return b.setAttribute("rel","stylesheet"),b.setAttribute("href",a),b.setAttribute("name","tizen-theme"),b},load:function(a){var b=document.getElementsByTagName("head")[0],c=b.getElementsByTagName("link"),d,f=null;for(d=0;d<c.length;d++){if(c[d].getAttribute("rel")!="stylesheet")continue;if(c[d].getAttribute("name")=="tizen-theme"||c[d].getAttribute("href")==a){f=c[d];break}}f?f.getAttribute("href")==a?e.log.warn("Theme is already loaded. Skip theme loading in the framework."):f.setAttribute("href",a):this.addElementToHead(this.makeLink(a))}},getParams:function(){function j(){var a=navigator.theme?navigator.theme.split(":")[0]:null;return a&&(a=a.replace("-hd",""),a.match(/^tizen-/)||(a="tizen-"+a)),a}var a=document.getElementsByTagName("script"),b=null,c=!1,e,f,g,h,i;for(e in a){f=a[e],g=f.src?f.getAttribute("src"):d;if(g&&g.match(this.libFileName)){h=g.split(/[\/\\]/),i=-3,this.frameworkData.rootDir=(f.getAttribute("data-framework-root")||h.slice(0,h.length+i).join("/")||this.frameworkData.rootDir).replace(/^file:(\/\/)?/,""),this.frameworkData.version=f.getAttribute("data-framework-version")||h[h.length+i]||this.frameworkData.version,this.frameworkData.theme=f.getAttribute("data-framework-theme")||j()||this.frameworkData.theme,this.frameworkData.viewportWidth=f.getAttribute("data-framework-viewport-width")||this.frameworkData.viewportWidth,this.frameworkData.viewportScale="true"===f.getAttribute("data-framework-viewport-scale")?!0:this.frameworkData.viewportScale,this.frameworkData.minified=g.search(/\.min\.js$/)>-1?!0:!1,this.frameworkData.debug="true"===f.getAttribute("data-framework-debug")?!0:this.frameworkData.debug,c=!0;break}}return c},loadTheme:function(a){var b,c,d;a||(a=e.frameworkData.theme),b=[e.frameworkData.rootDir,e.frameworkData.version,"themes",a].join("/"),d=[b,"theme.js"].join("/"),e.frameworkData.minified?c=[b,"tizen-web-ui-fw-theme.min.css"].join("/"):c=[b,"tizen-web-ui-fw-theme.css"].join("/"),e.css.load(c),e.util.loadScriptSync(d)},loadGlobalizeCulture:function(b,d){function j(b){var d=b||a("html").attr("lang")||c.navigator.language.split(".")[0]||c.navigator.userLanguage||"en",e=null,f=d.lastIndexOf("-"),g=["Cyrl","Latn","Mong"];return f!=-1&&(e=d.substr(f+1),g.join("-").indexOf(e)<0&&(d=[d.substr(0,f),e.toUpperCase()].join("-"))),d=d=="en"?"en-US":d,d}function k(a){var b=a.lastIndexOf("-"),c;return b!=-1&&(c=a.substr(0,b)),c}function l(a,b){var c=null;return"string"!=typeof a?null:(b&&b[a]?c=b[a]:c=[f.frameworkData.rootDir,f.frameworkData.version,"js","cultures",["globalize.culture.",a,".js"].join("")].join("/"),c)}function m(a,b){e.log.error("Error "+b.status+": "+b.statusText+"::Culture file ("+a+") is failed to load.")}function n(b,c){function d(){e.log.debug("Culture file ("+b+") is loaded successfully.")}function f(a,d,e){c?c(a,d,e):m(b,a)}b?a.ajax({url:b,dataType:"script",cache:!0,async:!1,success:d,error:f}):(i={status:404,statusText:"Not Found"},f(i,null,null))}var f=this,g,h,i;return h=j(b),g=l(h,d),n(g,function(a,b,c){if(a.status==404){var e=k(h),f=l(e,d);n(f,null)}else m(g,a)}),h},setGlobalize:function(){var a=this.loadGlobalizeCulture();b.culture(a)},loadCustomGlobalizeCulture:function(a){e.loadGlobalizeCulture(null,a)},setViewport:function(b){var c=null,d,f;return a("meta[name=viewport]").each(function(){c=this;return}),c?(f=a(c).prop("content"),b=f.replace(/.*width=(device-width|\d+)\s*,?.*$/gi,"$1"),e.log.warn("Viewport is set to '"+b+"' in a meta tag. Framework skips viewport setting.")):(c=document.createElement("meta"),c&&(c.name="viewport",f=["width=",b,", user-scalable=no"].join(""),!!isNaN(b),c.content=f,e.log.debug(f),d=document.getElementsByTagName("head").item(0),d.insertBefore(c,d.firstChild))),b},scaleBaseFontSize:function(b,c){e.log.debug("themedefaultfont size: "+b+", ratio: "+c);var d=Math.max(Math.floor(b*c),4);a("html.ui-mobile").css({"font-size":d+"px"}),e.log.debug("html:font size is set to "+d),a(document).ready(function(){a(".ui-mobile").children("body").css({"font-size":d+"px"})})},setScaling:function(){var b=this.frameworkData.viewportWidth,c=this.frameworkData.defaultFontSize,d=1;a("body").attr("data-tizen-theme-default-font-size",c);if(!e.util.isMobileBrowser())return;this.frameworkData.viewportScale==1&&(b="screen-width"),"screen-width"==b&&(b=document.documentElement.clientWidth),b=this.setViewport(b),isNaN(b)?document.documentElement.clientWidth<this.frameworkData.defaultViewportWidth&&(d=parseFloat(document.documentElement.clientWidth/this.frameworkData.defaultViewportWidth)):d=parseFloat(b/this.frameworkData.defaultViewportWidth),this.scaleBaseFontSize(c,d)}};f(a,e),e.getParams(),e.loadTheme(),e.setScaling(),e.setGlobalize(),a.mobile.autoInitializePage=!1,a(document).ready(function(){a.mobile.initializePage()})}(jQuery,window.Globalize,window),function(a,b,c,d){function m(){this.vertices=[-1,-1,0,1,-1,0,1,1,0,-1,1,0],this.textureCoords=[1,0,0,0,0,1,1,1],this.normalVectors=[0,0,1,0,0,1,0,0,1,0,0,1],this.texture=null,this.textureBuffer=null,this.textureBufferItemSize=0,this.mashOrder=[],this.mvMatrix=null,this.level=-1,this.targetLevel=0,this.drawable=!1,this.image=null,this.imageID=0}c.requestAnimationFrame=function(){return function(a){var b=c.setTimeout(a,1e3/60);return b}}(),c.cancelAnimationFrame=function(){return function(a){c.clearTimeout(a)}}();var e=c.vec3,f=c.mat3,g=c.mat4,h=typeof c.Float32Array!="undefined"?c.Float32Array:typeof c.WebGLFloatArray!="undefined"?c.WebGLFloatArray:Array,i=typeof c.Uint16Array!="undefined"?c.Uint16Array:Array,j=function(a){var b,d,e=["experimental-webgl","webkit-3d","webgl","moz-webgl"];for(d=0;d<e.length;d+=1)try{b=a.getContext(e[d]);if(b)break}catch(f){c.alert("Unfortunately, there's a WebGL compatibility problem. </br> You may want to check your system settings.");return}return b},k=["attribute vec3 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec3 aVertexNormal;","uniform mat4 uMoveMatrix;","uniform mat4 uPerspectiveMatrix;","uniform mat3 nNormalMatrix;","uniform vec3 uAmbientColor;","uniform vec3 uLightDirection;","uniform vec3 uDirectionColor;","uniform vec3 uLightDirection_first;","uniform vec3 uLightDirection_second;","varying vec2 vTextureCoord;","varying vec3 vLightWeight;","varying vec4 vFogWeight;","void main(void) {","\tvec4 v_Position = uMoveMatrix * vec4(aVertexPosition, 1.0);","\tgl_Position = uPerspectiveMatrix * v_Position;","\tvTextureCoord = aTextureCoord;","\tfloat fog = 1.0 - ((gl_Position.z + 1.5) / 60.0);","\tvFogWeight = clamp( vec4( fog, fog, fog, 1.0), 0.0, 1.0);","\tvec3 transNormalVector = nNormalMatrix * aVertexNormal;","\tfloat vLightWeightFirst = 0.0;","\tfloat vLightWeightSecond = max( dot(transNormalVector, uLightDirection_second), 0.0 );","\tvLightWeight = uAmbientColor + uDirectionColor * vLightWeightSecond;","}"].join("\n"),l=["precision mediump float;","varying vec2 vTextureCoord;","varying vec3 vLightWeight;","uniform sampler2D uSampler;","varying vec4 vFogWeight;","void main(void) {","\tvec4 TextureColor = (texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t))) * vFogWeight;","\tgl_FragColor = vec4(TextureColor.rgb * vLightWeight, TextureColor.a);","}"].join("\n");a.widget("tizen.gallery3d",a.mobile.widget,{options:{thumbnailCache:!1},_MAX_ITEM_COUNT:28,_ANIMATION_END:999,_DURATION_DEFAULT:300,_DURATION_FIRST:1600,_VIEWPORT_WIDTH:1024,_VIEWPORT_HEIGHT:456,_DIRECTION_LEFT:-1,_DIRECTION_RIGHT:1,_gl:null,_shaderProgram:null,_positionBuffer:null,_textureCoordBuffer:null,_normalVectorBuffer:null,_nodes:null,_pMatrix:null,_animationID:0,_dragInterval:0,_startTime:0,_sumTime:0,_lightsPositionStack:[[0,0,-1],[-0.2,0,.7]],_path:null,_swipeThresholdOfBasetimeGap:a.support.touch?30:70,_swipeThresholdOfSensitivity:a.support.touch?2:10,_canvas:null,_imageList:[],_maxDrawLength:0,_firstImageNumber:0,_lastImageNumber:0,_create:function(){var b=this,c=b.element,e=b.options;b._canvas=a("<canvas class='ui-gallery3d-canvas'></canvas>"),c.addClass("ui-gallery3d").append(b._canvas),b._addBehavier(),b._dragInterval=1e3/30,a.each(b.options,function(a,c){b.options[a]=d,b._setOption(a,c)})},_setOption:function(b,c){switch(b){case"thumbnailCache":typeof c=="string"?c=c==="true"?!0:!1:c=!!c,this._reset()}a.mobile.widget.prototype._setOption.call(this,b,c)},_init:function(b){var c=this,d=[[40,0,-48],[-12,0,-40],[24,0,-9],[-5,0,-5]],e;b=b||c._canvas;if(!b)return;c._gl=c._gl||c._initGL(b[0]);if(!c._gl)return;if(!c._imageList)return;c._shaderProgram=c._shaderProgram||c._initShader(c._gl);if(!c._shaderProgram)return;c._imageList.length>c._MAX_ITEM_COUNT&&(c._firstImageNumber=c._imageList.length-1,c._lastImageNumber=c._MAX_ITEM_COUNT-1),c._nodes=c._initBuffers(c._gl,c._shaderProgram),c._initTextures(c._gl,c._nodes),c._path=a.motionpath("bspline",{points:d,maxLevel:c._MAX_ITEM_COUNT});for(e=0;e<c._nodes.length;e+=1)c._path.levels[e]=c._path.levels[e+1]||0,c._nodes[e].level=e},_final:function(b){var c=this,d=c._gl;if(!d)return;b=b||c._canvas,a(c._nodes).each(function(a){var b=c._nodes[a];d.deleteTexture(b.texture),b.texture=null}),c._nodes=null,d.deleteBuffer(c._positionBuffer),c._positionBuffer=null,d.deleteBuffer(c._textureCoordBuffer),c._textureCoordBuffer=null,d.deleteBuffer(c._normalVectorBuffer),c._normalVectorBuffer=null,a.webgl.shader.deleteShaders(d),d.deleteProgram(c._shaderProgram),c._shaderProgram=null,c._gl=d=null},_addBehavier:function(){var d=this,e=d.element,f=d._canvas,g=a.support.touch?"touchstart":"mousedown",h=(a.support.touch?"touchmove":"mousemove")+".gallery3d",i=(a.support.touch?"touchend":"mouseup")+".gallery3d",j=(a.support.touch?"touchleave":"mouseout")+".gallery3d";a(b).unbind(".gallery3d").bind("pagechange.gallery3d",function(b){a(b.target).find(".ui-gallery3d").gallery3d("refresh")}).bind("pageremove.gallery3d",function(b){a(b.target).find(".ui-gallery3d").trigger("_destory")}),a(c).unbind(".gallery3d").bind("resize.gallery3d orientationchange.gallery3d",function(b){a(".ui-page-active").find(".ui-gallery3d").gallery3d("refresh")}).bind("unload.gallery3d",function(b){a(b.target).find(".ui-gallery3d").trigger("_destory")}),e.bind("_destory",function(a){d._final()}),f.bind("webglcontextlost",function(a){a.preventDefault()}).bind("webglcontextrestored",function(a){d._init()}).bind(g,function(b){var c=0,f=0,g=20,k=[g],l=[g],m=0,n=0,o=!1,p=0;b.preventDefault(),b.stopPropagation();if(d._imageList.length<=1)return;d._stop(),f=a.support.touch?b.originalEvent.changedTouches[0].pageX:b.pageX,p=a.now();for(c=0;c<g;c+=1)k[c]=f,l[c]=a.now();m+=1,e.bind(h,function(b){var c,e,h;b.preventDefault(),b.stopPropagation(),c=a.support.touch?b.originalEvent.changedTouches[0].pageX:b.pageX,e=f-c,k[m]=c,l[m]=a.now(),h=l[m]-p,m=(m+1)%g,Math.abs(e)>=10&&h>=d._dragInterval&&(o!==(e<0?d._DIRECTION_RIGHT:d._DIRECTION_LEFT)&&(n=0,o=e<0?d._DIRECTION_RIGHT:d._DIRECTION_LEFT),n+=Math.abs(e)/100,n>=1?(d._setPosition(d._ANIMATION_END,o),n=0):d._setPosition(n,o),d._drawScene(),f=c,p=a.now())}).bind(i,function(b){var h=0,i=-1,j=0,p=0,q=0,r=0,s=0,t=0,u=0,v=!0,w;b.preventDefault(),b.stopPropagation(),h=a.now()-d._swipeThresholdOfBasetimeGap,s=a.support.touch?b.originalEvent.changedTouches[0].pageX:b.pageX,u=f-s,f=0;for(c=0;c<g;c+=1){j=(m+c)%g;if(l[j]>h){i=j;break}}i<0&&(v=!1);if(v){p=i;for(c=0;c<g;c+=1){p=(p-1+g)%g;if(l[p]<l[i])break}if(c===g||h<l[p])v=!1}v&&(q=(h-l[p])/(l[i]-l[p]),r=(1-q)*k[p]+q*k[i],Math.abs(r-s)<d._swipeThresholdOfSensitivity&&(r=s),t=parseInt((s-r)/(a.now()-h),10)),v&&t?(w=t<0?d._DIRECTION_LEFT:d._DIRECTION_RIGHT,d._run(w,Math.abs(t),n)):o!==0&&n&&d._animate(null,d._DURATION_DEFAULT*(1-n),o,0,n),e.unbind(".gallery3d")}).bind(j,function(a){e.trigger(i)})})},_loadData:function(b,c){var d=this;a.ajax({async:!1,url:b,dataType:"json",success:function(b){d._imageList=a.extend([],b[c])}})},_initGL:function(a){var b=this,d;return d=j(a),d?(d.enable(d.BLEND),d.blendFunc(d.SRC_ALPHA,d.ONE_MINUS_SRC_ALPHA),d.enable(d.DEPTH_TEST),d.depthFunc(d.LEQUAL),a.width=b._VIEWPORT_WIDTH,a.height=b._VIEWPORT_HEIGHT,d.viewportWidth=a.width,d.viewportHeight=a.height,d.viewport(0,0,d.viewportWidth,d.viewportHeight),b._pMatrix=g.create(),g.perspective(40,d.viewportWidth/d.viewportHeight,.1,1e4,b._pMatrix),d.clearColor(0,0,0,1),d.clear(d.COLOR_BUFFER_BIT|d.DEPTH_BUFFER_BIT),d):(c.alert("There's no WebGL context available!!!"),null)},_initShader:function(b){var c=this,d;return d=a.webgl.shader.addShaderProgram(c._gl,k,l),b.useProgram(d),d.vertexPositionAttr=b.getAttribLocation(d,"aVertexPosition"),b.enableVertexAttribArray(d.vertexPositionAttr),d.textureCoordAttr=b.getAttribLocation(d,"aTextureCoord"),b.enableVertexAttribArray(d.textureCoordAttr),d.vertexNormalAttr=b.getAttribLocation(d,"aVertexNormal"),b.enableVertexAttribArray(d.vertexNormalAttr),d.perspectiveMU=b.getUniformLocation(d,"uPerspectiveMatrix"),d.transformMU=b.getUniformLocation(d,"uMoveMatrix"),d.sampleUniform=b.getUniformLocation(d,"uSampler"),d.normalMU=b.getUniformLocation(d,"nNormalMatrix"),d.ambientColorU=b.getUniformLocation(d,"uAmbientColor"),d.lightDirU_first=b.getUniformLocation(d,"uLightDirection_first"),d.lightDirU_second=b.getUniformLocation(d,"uLightDirection_second"),d.directionColorU=b.getUniformLocation(d,"uDirectionColor"),d},_initBuffers:function(b,c){var d=this,e=0,f=0,g=[],j=[],k=[],l=[],n=d._MAX_ITEM_COUNT;for(e=0;e<d._imageList.length+1;e+=1)l[e]=new m,a.merge(g,l[e].vertices),a.merge(j,l[e].textureCoords),a.merge(k,l[e].normalVectors),l[e].textureBuffer=b.createBuffer(),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,l[e].textureBuffer),f=e*4,l[e].meshOrder=[f,f+1,f+2,f+2,f+3,f],b.bufferData(b.ELEMENT_ARRAY_BUFFER,new i(l[e].meshOrder),b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,null),l[e].textureBufferItemSize=6;return d._positionBuffer=a.webgl.buffer.attribBufferData(b,new h(g)),d._positionBuffer.itemSize=3,d._textureCoordBuffer=a.webgl.buffer.attribBufferData(b,new h(j)),d._textureCoordBuffer.itemSize=2,d._normalVectorBuffer=a.webgl.buffer.attribBufferData(b,new h(k)),d._normalVectorBuffer.itemSize=3,b.uniform3f(c.ambientColorU,.1,.1,.1),b.uniform3f(c.directionColorU,1,1,1),l},_initTextures:function(b,c){var d=this;a(c).each(function(a){var e=c[a],f;if(!d._imageList[a])return!1;f=d._imageList[a].src,e.texture=b.createTexture(),d._loadImage(f,a,a,b,c)})},_loadImage:function(b,c,d,e,f){var g=this,h=!1,i,j;e=e||g._gl,f=f||g._nodes,h=h||!1,j=f[c],j.image=j.image||new Image,a(j.image).one("load",function(a){g._bindTexture(e,j,this,h),j.imageID=d,g._animationID||g._setPosition(0,0)}),g.options.thumbnailCache?a.imageloader.getThumbnail(b,function(c){c==="NOT_FOUND_ERR"?a.imageloader.setThumbnail(b,function(a){a&&a.length>30?(j.image.src=a,h=!0):j.image.src=b}):c&&c.length>30?(j.image.src=c,h=!0):j.image.src=b}):j.image.src=b},_bindTexture:function(a,b,c,d){if(!b||!b.texture)return;a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!0),a.bindTexture(a.TEXTURE_2D,b.texture),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,c),d?(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR_MIPMAP_NEAREST),a.generateMipmap(a.TEXTURE_2D)):(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR)),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),b.texture.loaded=!0,a.bindTexture(a.TEXTURE_2D,null)},_setPosition:function(a,b){var c=this,d=c._nodes,e=c._imageList,f=e.length,h=c._MAX_ITEM_COUNT,i=f>h?h:f,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=c._path,s=0;j=b>=0?i+1:i,d[k].level||(d[k].level=i);for(k=0;k<i;k+=1)d[k].mvMatrix||(d[k].mvMatrix=g.create()),b>0&&d[k].level>=i&&(d[k].level=0),o=r.levels[d[k].level],q=(d[k].level+j+b)%j,p=r.levels[q],f>h&&(b>0&&q===1&&c._firstImageNumber!==d[k].imageID?c._loadImage(e[c._firstImageNumber].src,k,c._firstImageNumber):b<0&&q===j-1&&c._lastImageNumber!==d[k].imageID&&c._loadImage(e[c._lastImageNumber].src,k,c._lastImageNumber)),g.identity(d[k].mvMatrix),g.translate(d[k].mvMatrix,[-2,-2,1]),g.rotate(d[k].mvMatrix,c._degreeToRadian(19),[1,0,0]),l=o+(p-o)*(a>1?1:a),a>=c._ANIMATION_END&&(d[k].level=q||i,l=r.levels[d[k].level]),a<c._ANIMATION_END&&b<=0&&d[k].level<1?d[k].drawable=!1:d[k].drawable=!0,a===c._ANIMATION_END&&d[k].level===1&&c.element.trigger("select",e[d[k].imageID],d[k].imageID),m=r.getPosition(l),n=r.getAngle(l),g.translate(d[k].mvMatrix,m),g.rotate(d[k].mvMatrix,n,[0,1,0]);f>h&&a>=c._ANIMATION_END&&(c._firstImageNumber=(c._firstImageNumber-b)%f,c._firstImageNumber<0&&(c._firstImageNumber=f-1),c._lastImageNumber=(c._lastImageNumber-b)%f,c._lastImageNumber<0&&(c._lastImageNumber=f-1)),c._drawScene()},_drawScene:function(){if(!this._gl||!this._shaderProgram)return;var a=this,b=a._gl,c=a._shaderProgram,d=a._nodes,e=d.length,f;b.clear(b.COLOR_BUFFER_BIT|b.DEPTH_BUFFER_BIT),b.bindBuffer(b.ARRAY_BUFFER,a._positionBuffer),b.vertexAttribPointer(c.vertexPositionAttr,a._positionBuffer.itemSize,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,a._textureCoordBuffer),b.vertexAttribPointer(c.textureCoordAttr,a._textureCoordBuffer.itemSize,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,a._normalVectorBuffer),b.vertexAttribPointer(c.vertexNormalAttr,a._normalVectorBuffer.itemSize,b.FLOAT,!1,0,0);for(f=0;f<e;f+=1)d[f].drawable&&a._drawElement(a._pMatrix,d[f])},_drawElement:function(a,b){var c=this,d=c._gl,h=c._shaderProgram,i=b.mvMatrix,j=b.texture,k=b.textureBuffer,l=b.textureBufferItemSize,m=c._lightsPositionStack,n,o;if(!i)return;d.activeTexture(d.TEXTURE0),j&&j.loaded&&d.bindTexture(d.TEXTURE_2D,j),d.uniform1i(h.sampleUniform,0),n=e.create(),e.normalize(m[0],n),e.scale(n,-8),d.uniform3fv(h.lightDirU_first,n),e.normalize(m[1],n),e.scale(n,-1),d.uniform3fv(h.lightDirU_second,n),d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,k),d.uniformMatrix4fv(h.perspectiveMU,!1,a),d.uniformMatrix4fv(h.transformMU,!1,i),o=f.create(),g.toInverseMat3(i,o),f.transpose(o),d.uniformMatrix3fv(h.normalMU,!1,o),d.drawElements(d.TRIANGLES,l,d.UNSIGNED_SHORT,0),d.bindBuffer(d.ARRAY_BUFFER,null),d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,null),d.bindTexture(d.TEXTURE_2D,null)},_animate:function(b,d,e,f,g,h){var i=this,j=a.now(),k,l=0;b=b||"linear",g=g||0,h=h||0;if(i._sumTime>=d){i._setPosition(i._ANIMATION_END,e),i._stop();return}if(i._startTime===0)i._startTime=j;else{i._sumTime=j-i._startTime,k=a.easing[b](i._sumTime/d,i._sumTime,g,f+1,d),l=parseInt(Math.abs(k),10);if(h!==l){i._setPosition(i._ANIMATION_END,e),h=l,f-h>=0?i._animate(b,d,e,f,g,h):i._stop();return}i._setPosition(k-h,e)}i._animationID=c.requestAnimationFrame(function(){i._animate(b,d,e,f,g,h)})},_run:function(a,b,c){var d=this,e=b||0,f=d._DURATION_DEFAULT*(e+1);if(d._imageList.length<=1)return;c=c||0,f=f>=0?f:0,d._animationID&&(d._setPosition(d._ANIMATION_END,a),d._stop()),d._animate("easeOutExpo",f,a,e,c)},_reset:function(){if(!this._canvas||!this._gl)return;this._final(),this._init(),this.refresh()},_stop:function(){this._animationID&&c.cancelAnimationFrame(this._animationID),this._animationID=0,this._startTime=0,this._sumTime=0},_degreeToRadian:function(a){return a*Math.PI/180},next:function(){this._run(this._DIRECTION_LEFT,0)},prev:function(){this._run(this._DIRECTION_RIGHT,0)},refresh:function(){var a=this.element,b=a.find("canvas.ui-gallery3d-canvas");b.width()!==a.width()&&b.width(a.width()),this._animationID||this._setPosition(0,0)},select:function(a){var b=this._nodes,c,d,e,f=null,g=0,h=0;a&&this._animationID&&this._stop();for(d in b)if(b[d].level===1){f=this._imageList[b[d].imageID],e=b[d].imageID;break}if(!a)return f;if(a<0&&a>=this._imageList.length)return;g=a-e,h=g>0?this._DIRECTION_LEFT:g<0?this._DIRECTION_RIGHT:0,h&&this._run(h,Math.abs(g)-1)},add:function(a,b){if(!a)return;typeof a=="string"&&(a={src:a}),b=b||0;if(typeof b!="number"&&b<0&&b>=this._imageList.length)return;this._imageList.splice(b,0,a),this._gl&&this._reset()},remove:function(a){a=a||0;if(typeof a!="number"&&a<0&&a>=this._imageList.length)return;this._imageList.splice(a,1),this._gl&&this._reset()},clearThumbnailCache:function(){if(!this._nodes||this._nodes.length<=0)return;var b,c;for(b=0;b<this._imageList.length;b+=1)c=this._imageList[b].src,a.imageloader.removeThumbnail(c)},empty:function(){this._imageList=[],this._reset()},length:function(){return this._imageList.length}}),a(b).bind("pagecreate create",function(b){a(":jqmData(role='gallery3d')").gallery3d()})}(jQuery,document,window),function(a,b){a.widget("tizen.notification",a.mobile.widget,{btn:null,text_bg:[],icon_img:[],interval:null,seconds:null,running:!1,_get_text:function(){var b=new Array(2);return this.type==="ticker"?(b[0]=a(this.text_bg[0]).text(),b[1]=a(this.text_bg[1]).text
-()):b[0]=a(this.text_bg[0]).text(),b},_set_text:function(b,c){var d=function(a,b){if(!b)return;a.text(b)};this.type==="ticker"?(d(a(this.text_bg[0]),b),d(a(this.text_bg[1]),c)):d(a(this.text_bg[0]),b)},text:function(a,b){if(a===undefined&&b===undefined)return this._get_text();this._set_text(a,b)},icon:function(b){if(b===undefined)return;this.icon_img.detach(),this.icon_img=a("<img src='"+b+"' class='ui-ticker-icon'>"),a(this.element).find(".ui-ticker").append(this.icon_img)},_refresh:function(){var b=this._get_container();a(b).addClass("fix").removeClass("show").removeClass("hide"),this._set_interval()},open:function(){var b=this._get_container();if(this.running){this._refresh();return}a(b).addClass("show").removeClass("hide").removeClass("fix"),this.running=!0,this.type==="popup"&&this._set_position(),this._set_interval()},close:function(){var b=this._get_container();if(!this.running)return;a(b).addClass("hide").removeClass("show").removeClass("fix"),this.running=!1,clearInterval(this.interval)},destroy:function(){var b=this._get_container();a(b).removeClass("show").removeClass("hide").removeClass("fix"),this._del_event(),this.running=!1},_get_container:function(){return this.type==="ticker"?a(this.element).find(".ui-ticker"):a(this.element).find(".ui-smallpopup")},_set_interval:function(){var a=this;clearInterval(this.interval),this.seconds!==undefined&&this.second!==0&&(this.interval=setInterval(function(){a.close()},this.seconds))},_add_event:function(){var a=this,b=this._get_container();this.type==="ticker"&&(b.find(".ui-ticker-btn").append(this.btn).trigger("create"),this.btn.bind("vmouseup",function(){a.close()})),b.bind("vmouseup",function(){a.close()})},_del_event:function(){var a=this._get_container();this.type==="ticker"&&this.btn.unbind("vmouseup"),a.unbind("vmouseup"),clearInterval(this.interval)},_set_position:function(){var b=this._get_container(),c=a(".ui-page-active").children(".ui-footer"),d=c.outerHeight()||0;b.css("bottom",d)},_create:function(){var c=this,d=a(this.element),e;this.btn=a('<div data-role="button" data-inline="true">Close</div>'),this.seconds=d.jqmData("interval"),this.type=d.jqmData("type")||"popup";if(this.type==="ticker"){d.wrapInner("<div class='ui-ticker'></div>"),d.find(".ui-ticker").append("<div class='ui-ticker-body'></div><div class='ui-ticker-btn'></div>"),this.text_bg=d.find("p");if(this.text_bg.length<2)d.find(".ui-ticker").append("<p></p><p></p>"),this.text_bg=d.find("p");else if(this.text_bg.length>2)for(e=2;e<this.text_bg.length;e++)a(this.text_bg[e]).css("display","none");a(this.text_bg[0]).addClass("ui-ticker-text1-bg"),a(this.text_bg[1]).addClass("ui-ticker-text2-bg"),this.icon_img=d.find("img");if(this.icon_img.length){a(this.icon_img).addClass("ui-ticker-icon");for(e=1;e<this.icon_img.length;e++)a(this.icon_img[e]).css("display","none")}}else{d.wrapInner("<div class='ui-smallpopup'></div>"),this.text_bg=d.find("p").addClass("ui-smallpopup-text-bg");if(this.text_bg.length<1)d.find(".ui-smallpopup").append("<p class='ui-smallpopup-text-bg'></p>"),this.text_bg=d.find("p");else if(this.text_bg.length>1)for(e=1;e<this.text_bg.length;e++)a(this.text_bg[e]).css("display","none");this._set_position()}this._add_event(),a(b).bind("resize",function(){if(!c.running)return;c._refresh(),c.type==="popup"&&c._set_position()})}}),a(document).bind("pagecreate create",function(b){a(b.target).find(":jqmData(role='notification')").notification()}),a(document).bind("pagebeforehide",function(b){a(b.target).find(":jqmData(role='notification')").notification("destroy")})}(jQuery,this),function(a){a.widget("tizen.swipe",a.mobile.widget,{options:{theme:null},_create:function(){var a=this.element.jqmData("theme")||this.options.theme||this.element.parent().jqmData("theme")||"s";this.options.theme=a,this._isopen=!1,this.refresh()},refresh:function(){this._cleanupDom();var b=this,c,d,e,f,g;c="ui-body-"+this.options.theme,this.element.parent().hasClass("ui-listview")||this.element.parent().listview(),this.element.addClass("ui-swipe"),d=this.element.find(':jqmData(role="swipe-item-cover")'),f=this.element.find(':jqmData(role="swipe-item")'),this._covers=d,this._item=f,f.addClass("ui-swipe-item"),e=c,g=f.parent().attr("class").match(/ui\-body\-[a-z]|ui\-bar\-[a-z]/),d.each(function(){var c=a(this);g&&(e=g[0]),c.addClass("ui-swipe-item-cover"),c.addClass(e),c.has(".ui-swipe-item-cover-inner").length===0&&c.wrapInner(a("<span/>").addClass("ui-swipe-item-cover-inner"));if(!c.data("animateRight")||!c.data("animateLeft"))c.data("animateRight",function(){b._animateCover(c,110,f)}),c.data("animateLeft",function(){b._animateCover(c,0,f)});f.bind("swipeleft",c.data("animateLeft")),c.bind("swiperight",c.data("animateRight")),f.find(".ui-btn").bind("vclick",c.data("animateLeft"))})},_cleanupDom:function(){var a=this,b,c,d=b,e,f,g,h,i;b="ui-body-"+this.options.theme,this.element.removeClass("ui-swipe"),c=this.element.find(':jqmData(role="swipe-item-cover")'),e=this.element.find(':jqmData(role="swipe-item")'),e.removeClass("ui-swipe-item"),c.removeClass("ui-swipe-item-cover"),f=e.attr("class"),g=f&&f.match(/ui\-body\-[a-z]|ui\-bar\-[a-z]/),g&&(d=g[0]),c.removeClass(d),i=c.find(".ui-swipe-item-cover-inner"),i.children().unwrap(),h=i.text(),h&&(c.append(h),i.remove()),c.data("animateRight")&&c.data("animateLeft")&&(c.unbind("swiperight",c.data("animateRight")),e.unbind("swipeleft",c.data("animateLeft")),e.find(".ui-btn").unbind("vclick",c.data("animateLeft")),c.data("animateRight",null),c.data("animateLeft",null))},_animateCover:function(b,c,d){var e=this,f={easing:"linear",duration:"normal",queue:!0,complete:function(){b.trigger("animationend")}};a(this.element.parent()).find(":jqmData(role='swipe')").each(function(){this!==e.element.get(0)&&a(this).swipe("opened")&&a(this).swipe("close")}),c==110?this._isopen=!0:this._isopen=!1,b.stop(),b.clearQueue(),b.trigger("animationstart"),b.animate({left:c+"%"},f),c==0?d.animate({opacity:0},"slow"):d.animate({opacity:1},"slow")},destroy:function(){this._cleanupDom()},open:function(){var b=this;a(b._covers).each(function(){var c=a(this);b._animateCover(c,110,b._item)})},opened:function(){return this._isopen},close:function(){var b=this;a(b._covers).each(function(){var c=a(this);b._animateCover(c,0,b._item)})}}),a(document).bind("pagecreate",function(b){a(b.target).find(":jqmData(role='swipe')").swipe()})}(jQuery),function(a,b,c){a.tizen.scrollview.prototype.options.handler=!1,a.tizen.scrollview.prototype.options.handlerTheme="s";var d=a.tizen.scrollview.prototype._setOption,e=function(d){var e=d,f='<div class="ui-handler ui-handler-direction-',g='"><div class="ui-handler-track"><div class="ui-handler-thumb"></div></div></div>',h=e.data("scrollview"),i=h.options,j=i.direction,k=a.mobile.getInheritedTheme(h,"s"),l=i.theme||k,m=h.options.direction==="x",n=h._$view,o=h._$clip,p=e.find(".ui-scrollbar"),q=null,r=null,s=0,t=0,u=0,v=0,w=0,x,y=a.support.touch,z=(y?"touchstart":"mousedown")+".handler",A=(y?"touchmove":"mousemove")+".handler",B=(y?"touchend":"mouseup")+".handler",C=(y?" touchleave":" mouseleave")+".handler",D=function(){t=m?o.width():o.height(),s=(m?n.width():n.height())-t,w=t-u-v*2},E=function(a){var b=Math.round((m?a.x:a.y)/s*w);r[0].style[m?"left":"top"]=b+"px"},F=function(){a(b).unbind(".handler"),e.moveData=null,n.trigger("scrollstop")};if(e.find(".ui-handler-thumb").length!==0||typeof j!="string")return;q=a([f,j,g].join("")).appendTo(e.addClass(" ui-handler-"+l)),r=e.find(".ui-handler-thumb").attr({tabindex:"0","aria-label":m?"Horizontal handler, double tap and move to scroll":"Verticalhandler, double tap and move to scroll"}).hide(),u=m?r.width():r.height(),v=m?parseInt(q.css("right"),10):parseInt(q.css("bottom"),10),a.extend(e,{moveData:null}),r.bind(z,{e:r[0]},function(c){h._stopMScroll();var d=c.data.e,f=y?c.originalEvent.targetTouches[0]:c;d.style.opacity=1,e.moveData={target:d,X:parseInt(d.style.left,10)||0,Y:parseInt(d.style.top,10)||0,pX:f.pageX,pY:f.pageY},D(),n.trigger("scrollstart"),y||c.preventDefault(),a(b).bind(A,function(a){var b=e.moveData,c=b.target,d=0,f=0,g=y?a.originalEvent.targetTouches[0]:a;d=m?b.X+g.pageX-b.pX:b.Y+g.pageY-b.pY,d<0&&(d=0),d>w&&(d=w),f=-Math.round(d/w*s),m?(h._setScrollPosition(f,0),c.style.left=d+"px"):(h._setScrollPosition(0,f),c.style.top=d+"px"),a.preventDefault()}).bind(B+C,function(a){F()})}),n.bind(B,function(a){F()}),e.bind("scrollstart",function(a){if(!h.enableHandler())return;D();if(s<0||t<u){p.is(":hidden")&&p.show();return}p.is(":visible")&&p.hide(),x&&(clearInterval(x),x=c),q.addClass("ui-handler-visible"),r.stop(!0,!0).fadeIn()}).bind("scrollupdate",function(a,b){if(!h.enableHandler()||s<0||t<u)return;E(h.getScrollPosition())}).bind("scrollstop",function(a){if(!h.enableHandler()||s<0||t<u)return;x=setInterval(function(){E(h.getScrollPosition()),h._gesture_timer||(clearInterval(x),x=c)},10),h._handlerTimer&&(clearTimeout(h._handlerTimer),h._handlerTimer=0),h._handlerTimer=setTimeout(function(){h._timerID===0&&e.moveData===null&&(r.stop(!0,!0).css("opacity",1).fadeOut(function(){q.removeClass("ui-handler-visible")}),h._handlerTimer=0)},1e3)}).bind("mousewheel",function(a){q.removeClass("ui-handler-visible"),E(h.getScrollPosition())})};a.extend(a.tizen.scrollview.prototype,{enableHandler:function(a){if(typeof a=="undefined")return this.options.handler;this.options.handler=!!a;var b=this.element;this.options.handler?(b.find(".ui-handler").length===0&&e(b),b.find(".ui-scrollbar").hide(),b.find(".ui-handler").show()):(b.find(".ui-handler").removeClass("ui-handler-visible").hide(),b.find(".ui-scrollbar").show())},_setHandlerTheme:function(a){if(!a)return;var b="ui-handler-"+this.options.handlerTheme,c="ui-handler-"+a;this.element.removeClass(b).addClass(c),this.options.handlerTheme=a},_setOption:function(a,b){switch(a){case"handler":this.enableHandler(b);break;case"handlerTheme":this._setHandlerTheme(b);break;default:d.call(this,a,b)}},_handlerTimer:0}),a(b).delegate(":jqmData(scroll)","scrollviewcreate",function(){var b=a(this);if(b.attr("data-"+a.mobile.ns+"scroll")==="none"||b.attr("data-"+a.mobile.ns+"handler")!=="true")return;b.scrollview("enableHandler","true")})}(jQuery,document),function(a,b){a.widget("mobile.pagelayout",a.mobile.widget,{options:{visibleOnPageShow:!0,disablePageZoom:!0,transition:"slide",fullscreen:!1,tapToggle:!0,tapToggleBlacklist:"a, input, select, textarea, .ui-header-fixed, .ui-footer-fixed",hideDuringFocus:"input, textarea, select",updatePagePadding:!0,supportBlacklist:function(){var a=window,c=navigator.userAgent,d=navigator.platform,e=c.match(/AppleWebKit\/([0-9]+)/),f=!!e&&e[1],g=c.match(/Fennec\/([0-9]+)/),h=!!g&&g[1],i=c.match(/Opera Mobi\/([0-9]+)/),j=!!i&&i[1];return(d.indexOf("iPhone")>-1||d.indexOf("iPad")>-1||d.indexOf("iPod")>-1)&&f&&f<534||a.operamini&&{}.toString.call(a.operamini)==="[object OperaMini]"||i&&j<7458||c.indexOf("Android")>-1&&f&&f<533||h&&h<6||window.palmGetResource!==b&&f&&f<534||c.indexOf("MeeGo")>-1&&c.indexOf("NokiaBrowser/8.5.0")>-1?!0:!1},initSelector:":jqmData(role='content')"},_create:function(){var a=this,b=a.options,c=a.element;if(b.supportBlacklist()){a.destroy();return}a._addFixedClass(),a._addTransitionClass(),a._bindPageEvents(),a._bindContentControlEvents()},_addFixedClass:function(){var a=this,b=a.options,c=a.element,d=c.siblings(":jqmData(role='header')"),e=c.siblings(":jqmData(role='footer')"),f=c.closest(".ui-page");d.addClass("ui-header-fixed"),e.addClass("ui-footer-fixed"),b.fullscreen?(d.addClass("ui-header-fullscreen"),e.addClass("ui-footer-fullscreen"),f.addClass("ui-page-header-fullscreen").addClass("ui-page-footer-fullscreen")):f.addClass("ui-page-header-fixed").addClass("ui-page-footer-fixed")},_addTransitionClass:function(){var a=this.options.transition;a&&a!=="none"&&(a==="slide"&&(a=this.element.is(".ui-header")?"slidedown":"slideup"),this.element.addClass(a))},setHeaderFooter:function(b){var c=a(b),d=c.find(":jqmData(role='header')").length?c.find(":jqmData(role='header')"):c.siblings(":jqmData(role='header')"),e=c.find(".ui-content"),f=c.find(":jqmData(role='footer')"),g=f.find(":jqmData(role='fieldcontain')"),h=f.find(".ui-controlgroup");c.is(".ui-dialog")||(d.jqmData("position")=="fixed"||a.support.scrollview&&a.tizen.frameworkData.theme.match(/tizen/)?d.css("position","fixed").css("top","0px"):!a.support.scrollview&&d.jqmData("position")!="fixed"&&d.css("position","relative")),d.find("span.ui-title-text-sub").length&&d.addClass("ui-title-multiline"),g.find("div").is(".ui-controlgroup-label")&&g.find("div.ui-controlgroup-label").remove();if(h.length){var i=100/h.find("a").length;h.find("a").each(function(a){h.find("a").eq(a).width(i+"%")})}},_bindPageEvents:function(){var b=this,c=b.options,d=b.element,e;d.closest(".ui-page").bind("pagebeforeshow",function(d){var e=this;c.disablePageZoom&&a.mobile.zoom.disable(!0),c.visibleOnPageShow||b.hide(!0),b.setHeaderFooter(e),b._setContentMinHeight(e)}).bind("webkitAnimationStart animationstart updatelayout",function(a,d){var e=this;c.updatePagePadding&&(b.updatePagePadding(e),b.updatePageLayout(e,d))}).bind("pageshow",function(d){var e=this;b._setContentMinHeight(e),b.updatePagePadding(e),b._updateHeaderArea(e),c.updatePagePadding&&a(window).bind("throttledresize."+b.widgetName,function(){b.updatePagePadding(e),b.updatePageLayout(e,!1),b._updateHeaderArea(e),b._setContentMinHeight(e)})}).bind("pagebeforehide",function(d,e){c.disablePageZoom&&a.mobile.zoom.enable(!0),c.updatePagePadding&&a(window).unbind("throttledresize."+b.widgetName)}),window.addEventListener("softkeyboardchange",function(b){var c=a("<div class='ui-btn-footer-down'></div>"),d=a(".ui-page-active"),e="footer";d.data("addBackBtn")&&(d.data("addBackBtn")=="header"?e="header":e="footer",b.state=="on"?(d.find(".ui-"+e+" .ui-btn-footer-down").length||(c.buttonMarkup({icon:"down"}).appendTo(d.find(".ui-"+e)),a(".ui-btn-footer-down").bind("vclick",function(){d.find("input").blur()})),a(".ui-page-active .ui-btn-back").remove()):b.state=="off"&&(d.page("addBackBtn",e),a(".ui-btn-footer-down").remove()))})},_bindContentControlEvents:function(){var a=this,b=a.options,c=a.element;c.closest(".ui-page").bind("pagebeforeshow",function(a){})},_setContentMinHeight:function(b){var c=a(b),d=c.find(":jqmData(role='header')"),e=c.find(":jqmData(role='footer')"),f=c.find(":jqmData(role='content')"),g;g=window.innerHeight-d.height()-e.height(),f.css("min-height",g-parseFloat(f.css("padding-top"))-parseFloat(f.css("padding-bottom"))+"px")},_updateHeaderArea:function(b){var c=a(b),d=c.find(":jqmData(role='header')").length?c.find(":jqmData(role='header')"):c.siblings(":jqmData(role='header')"),e=d.children("a").length,f=d.children("img").length;c.is(".ui-dialog")||d.find("h1").css("width",window.innerWidth-parseInt(d.find("h1").css("margin-left"),10)*2-d.children("a").width()*e-d.children("a").width()/4-d.children("img").width()*f*4)},_visible:!0,updatePagePadding:function(b){var c=this.element,d=c.siblings(".ui-header").length,e=c.siblings(".ui-footer").length;if(this.options.fullscreen)return;b=b||c.closest(".ui-page"),(c.siblings(".ui-header").jqmData("position")=="fixed"||a.support.scrollview)&&a(b).css("padding-top",d?c.siblings(".ui-header").outerHeight():0),a(b).css("padding-bottom",e?c.siblings(".ui-footer").outerHeight():0)},updatePageLayout:function(b,c){var d,e=a(b),f=e.find(":jqmData(role='header')"),g=e.find(":jqmData(role='content')"),h=0,i=0,j=0;e.length?d=e.find(":jqmData(role='footer')"):d=a(document).find(":jqmData(role='footer')").eq(0),i=d.css("display")=="none"||d.length==0?0:d.height(),j=f.css("display")=="none"||f.length==0?0:f.height(),i!=0&&d.css("bottom",0),h=window.innerHeight-i-j,a.support.scrollview&&g.height(h-parseFloat(g.css("padding-top"))-parseFloat(g.css("padding-bottom"))),c&&e.css("min-height",h).css("padding-top",j).css("padding-bottom",i)},show:function(a){},hide:function(a){},toggle:function(){this[this._visible?"hide":"show"]()},destroy:function(){this.element.removeClass("ui-header-fixed ui-footer-fixed ui-header-fullscreen ui-footer-fullscreen in out fade slidedown slideup ui-fixed-hidden"),this.element.closest(".ui-page").removeClass("ui-page-header-fixed ui-page-footer-fixed ui-page-header-fullscreen ui-page-footer-fullscreen")},refresh:function(){var b=a(".ui-page-active");this.setHeaderFooter(b),this._updateHeaderArea(b)}}),a(document).bind("pagecreate create",function(b){a(b.target).jqmData("fullscreen")&&a(a.mobile.pagelayout.prototype.options.initSelector,b.target).not(":jqmData(fullscreen)").jqmData("fullscreen",!0),a.mobile.pagelayout.prototype.enhanceWithin(b.target)})}(jQuery),function(a,b){a.widget("tizen.triangle",a.tizen.widgetex,{options:{extraClass:"",offset:null,color:null,location:"top",initSelector:":jqmData(role='triangle')"},_create:function(){var b=a("<div></div>",{"class":"ui-triangle"});a.extend(this,{_triangle:b}),this.element.addClass("ui-triangle-container").append(b)},_doCSS:function(){var b=this.options.location||"top",c=a.inArray(b,["top","bottom"])===-1?"top":"left",d={"border-bottom-color":"top"===b?this.options.color:"transparent","border-top-color":"bottom"===b?this.options.color:"transparent","border-left-color":"right"===b?this.options.color:"transparent","border-right-color":"left"===b?this.options.color:"transparent"};d[c]=this.options.offset,this._triangle.removeAttr("style").css(d)},_setOffset:function(b){this.options.offset=b,this.element.attr("data-"+(a.mobile.ns||"")+"offset",b),this._doCSS()},_setExtraClass:function(b){this._triangle.addClass(b),this.options.extraClass=b,this.element.attr("data-"+(a.mobile.ns||"")+"extra-class",b)},_setColor:function(b){this.options.color=b,this.element.attr("data-"+(a.mobile.ns||"")+"color",b),this._doCSS()},_setLocation:function(b){this.element.removeClass("ui-triangle-container-"+this.options.location).addClass("ui-triangle-container-"+b),this._triangle.removeClass("ui-triangle-"+this.options.location).addClass("ui-triangle-"+b),this.options.location=b,this.element.attr("data-"+(a.mobile.ns||"")+"location",b),this._doCSS()}}),a(document).bind("pagecreate create",function(b){a(a.tizen.triangle.prototype.options.initSelector,b.target).not(":jqmData(role='none'), :jqmData(role='nojs')").triangle()})}(jQuery),function(a,b){a.widget("tizen.tabbar",a.mobile.widget,{options:{iconpos:"top",grid:null,defaultList:4,initSelector:":jqmData(role='tabbar')"},_create:function(){var c=this.element,d,e,f,g=a.mobile.listview.prototype.options.theme,h=window.innerWidth||a(window).width(),i=window.innerHeight||a(window).height(),j="<div class='ui-tabbar-divider ui-tabbar-divider-left'></div>",k="<div class='ui-tabbar-divider ui-tabbar-divider-right'></div>",l;l=h>i&&h-i,l?c.removeClass("ui-portrait-tabbar").addClass("ui-landscape-tabbar"):c.removeClass("ui-landscape-tabbar").addClass("ui-portrait-tabbar"),c.find("a").length&&(d=c.find("a"),f=d.filter(":jqmData(icon)").length?this.options.iconpos:b,e=d.html().length?!0:!1),c.parents(".ui-header").length&&c.parents(".ui-scrollview-view").length?(c.find("li").addClass("tabbar-scroll-li"),c.find("ul").addClass("tabbar-scroll-ul"),a(j).appendTo(c.parents(".ui-scrollview-clip")),a(k).appendTo(c.parents(".ui-scrollview-clip")),a(".ui-tabbar-divider-left").hide(),a(".ui-tabbar-divider-right").hide(),c.parents(".ui-scrollview-view").data("default-list")&&(this.options.defaultList=c.parents(".ui-scrollview-view").data("default-list")),c.find("li").css("width",window.innerWidth/this.options.defaultList+"px")):c.find("ul").children().length&&c.addClass("ui-navbar").find("ul").grid({grid:this.options.grid}),c.parents(".ui-footer").length&&c.find("li").addClass("ui-tab-btn-style"),c.siblings(".ui-title").length&&c.parents(".ui-header").addClass("ui-title-tabbar"),f||c.addClass("ui-tabbar-noicons"),e||c.addClass("ui-tabbar-notext"),e&&f&&c.parents(".ui-header").addClass("ui-title-tabbar-multiline"),c.find("a").length&&d.buttonMarkup({corners:!1,shadow:!1,iconpos:f}),c.find(".ui-state-persist").length&&c.addClass("ui-tabbar-persist"),c.delegate("a","vclick",function(b){d.not(".ui-state-persist").removeClass(a.mobile.activeBtnClass),a(this).addClass(a.mobile.activeBtnClass)}),c.addClass("ui-tabbar"),a(document).bind("pagebeforeshow",function(b,c){var d=a(b.target).find(":jqmData(role='footer')"),e=d.find(":jqmData(role='tabbar')"),f=e.siblings(":jqmData(icon='naviframe-more')"),g=e.siblings(".ui-btn-back");d.css("position","fixed").css("bottom",0).css("height",e.height()),f.length&&e.addClass("ui-tabbar-margin-more"),g.length&&e.addClass("ui-tabbar-margin-back")}),c.bind("touchstart vmousedown",function(b){var c=a(b.target).parents(".ui-scrollview-view");c.offset()&&(c.offset().left<0?a(".ui-tabbar-divider-left").show():a(".ui-tabbar-divider-left").hide(),c.width()-c.parents(".ui-scrollview-clip").width()==Math.abs(c.offset().left)?a(".ui-tabbar-divider-right").hide():a(".ui-tabbar-divider-right").show())}),this._bindTabbarEvents(),this._initTabbarAnimation()},_initTabbarAnimation:function(){var b=!1,c=!1;a(document).bind("scrollstart.tabbar",function(d){a(d.target).find(".ui-tabbar").length&&(b=!0,c=!1)}),a(document).bind("scrollstop.tabbar",function(d){var e=a(d.target),f=a(d.target).find(".ui-tabbar"),g=a(d.target).find(".ui-tabbar li"),h=g.eq(0),i,j=-1;c=!0,f.length&&b==1&&(i=Math.abs(g.eq(0).offset().left),g.each(function(a){var b=g.eq(a).offset();Math.abs(b.left)<i&&(i=Math.abs(b.left),j=a,h=g.eq(a))}),e.length&&b==c&&j!=-1&&(b=!1,e.scrollview("scrollTo",-(window.innerWidth/f.data("defaultList")*j),0,357))),a(".ui-tabbar-divider-left").hide(),a(".ui-tabbar-divider-right").hide()})},_bindTabbarEvents:function(){var b=this.element;a(window).bind("orientationchange",function(c,d){var e=window.innerWidth||a(window).width(),f=window.innerHeight||a(window).height(),g=e>f&&e-f;g?b.removeClass("ui-portrait-tabbar").addClass("ui-landscape-tabbar"):b.removeClass("ui-landscape-tabbar").addClass("ui-portrait-tabbar")})},_setDisabled:function(a,b){this.element.find("li").eq(b).attr("disabled",a),this.element.find("li").eq(b).attr("aria-disabled",a)},disable:function(a){this._setDisabled(!0,a),this.element.find("li").eq(a).addClass("ui-disabled")},enable:function(a){this._setDisabled(!1,a),this.element.find("li").eq(a).removeClass("ui-disabled")}}),a(document).bind("pagecreate create",function(b){a(a.tizen.tabbar.prototype.options.initSelector,b.target).tabbar()})}(jQuery),function(a,b){a.widget("tizen.searchbar",a.mobile.widget,{options:{theme:null,initSelector:"input[type='search'],:jqmData(type='search'), input[type='tizen-search'],:jqmData(type='tizen-search')"},_create:function(){function t(){setTimeout(function(){h.toggleClass("ui-input-clear-hidden",!c.val())},0)}function u(){g.addClass("ui-input-search-default").removeClass("ui-input-search-wide"),i.addClass("ui-btn-cancel-show").removeClass("ui-btn-cancel-hide")}function v(){g.addClass("ui-input-search-wide").removeClass("ui-input-search-default"),i.addClass("ui-btn-cancel-hide").removeClass("ui-btn-cancel-show"),t()}function w(){var b=a(c).jqmData("icon"),d=a("<div data-role='button' data-style='circle'></div>");d.appendTo(g.parent()).buttonMarkup({icon:b,corners:!0,shadow:!0}),d.addClass("ui-btn-search-front-icon")}var c=this.element,d=this.options,e=d.theme||a.mobile.getInheritedTheme(this.element,"c"),f=" ui-body-"+e,g,h,i,j,k,l,m,n,o,p,q,r=!1,s=!1;a("label[for='"+c.attr("id")+"']").addClass("ui-input-text"),typeof c[0].autocorrect!="undefined"&&!a.support.touchOverflow&&(c[0].setAttribute("autocorrect","off"),c[0].setAttribute("autocomplete","off")),g=c.wrap("<div class='ui-input-search ui-shadow-inset ui-corner-all ui-btn-shadow"+f+"'></div>").parent(),a(this.element).data("cancel-btn")===!0&&(r=!0,g.addClass("ui-input-search-default")),a(this.element).data("icon")!=b&&(s=!0,g.addClass("ui-search-bar-icon")),h=a("<a href='#' class='ui-input-clear' title='clear text'>clear text</a>").bind("click",function(a){if(c.attr("disabled")=="disabled")return!1;c.val("").focus().trigger("change"),h.addClass("ui-input-clear-hidden"),a.preventDefault()}).appendTo(g).buttonMarkup({icon:"deleteSearch",iconpos:"notext",corners:!0,shadow:!0}),t(),c.bind("paste cut keyup focus change blur",t),g.wrapAll("<div class='input-search-bar'></div>"),p=a("<div class='ui-image-search'></div>").appendTo(g),s&&w(),r&&(i=a("<div data-role='button' class='ui-input-cancel' title='clear text'>Cancel</div>").bind("click",function(a){if(c.attr("disabled")=="disabled")return!1;a.preventDefault(),a.stopPropagation(),c.val("").blur().trigger("change"),r&&v()}).appendTo(g.parent()).buttonMarkup({iconpos:"cancel",corners:!0,shadow:!0})),c.focus(function(){if(c.attr("disabled")=="disabled")return!1;r&&u(),g.addClass(a.mobile.focusClass)}).blur(function(){g.removeClass(a.mobile.focusClass)}),j=c.jqmData("default-text"),j!=b&&j.length>0&&(k="ui-input-default-text",l=j.replace(/\s/g,""),m=k+"-"+l,n=a("<style>."+m+":after"+"{content:"+"'"+j+"'"+"}"+"</style>"),a("html > head").append(n),o=a("<div></div>"),o.addClass(k),o.addClass(m),o.tap(function(a){c.blur(),c.focus()}),c.parent().append(o),c.focus(function(){c.parent().find("div.ui-input-default-text").addClass("ui-input-default-hidden")}).blur(function(){var a=c.val();a.length>0?c.parent().find("div.ui-input-default-text").addClass("ui-input-default-hidden"):c.parent().find("div.ui-input-default-text").removeClass("ui-input-default-hidden")})),c.attr("placeholder")||c.attr("placeholder","Search")},disable:function(){this.element.attr("disabled",!0),this.element.parent().addClass("ui-disabled"),a(this.element).blur(),this.element.parent().parent().find(".ui-input-cancel").addClass("ui-disabled")},enable:function(){this.element.attr("disabled",!1),this.element.parent().removeClass("ui-disabled"),this.element.parent().parent().find(".ui-input-cancel").removeClass("ui-disabled"),a(this.element).focus()}}),a(document).bind("pagecreate create",function(b){a.tizen.searchbar.prototype.enhanceWithin(b.target)})}(jQuery),function(a,b){a.widget("tizen.ctxpopup",a.tizen.widgetex,{options:a.extend({},a.tizen.popupwindow.prototype.options,{initSelector:":jqmData(show-arrow)"}),_htmlProto:{source:["<div><div id='outer' class='ui-ctxpopup'>","    <div id='top' class='ui-ctxpopup-row' data-role='triangle' data-location='top'></div>","    <div class='ui-ctxpopup-row'>","        <div id='left' class='ui-ctxpopup-cell' data-role='triangle' data-location='left'></div>","        <div id='container' class='ui-ctxpopup-cell'></div>","        <div id='right' class='ui-ctxpopup-cell' data-role='triangle' data-location='right'></div>","    </div>","    <div id='bottom' class='ui-ctxpopup-row' data-role='triangle' data-location='bottom'></div>","</div>","</div>"].join(""),ui:{outer:"#outer",container:"#container",arrow:{all:":jqmData(role='triangle')",l:"#left",t:"#top",r:"#right",b:"#bottom"}}},_create:function(){console.warn("ctxpopup() was deprecated. use popup() instead."),this.element.data("popupwindow")||this.element.popupwindow(),this.element.data("popupwindow")._ui.container.removeClass("ui-popupwindow-padding").append(this._ui.outer),this._ui.outer.trigger("create"),this._ui.container.addClass("ui-popupwindow-padding").append(this.element)},_setOption:function(b,c){a.tizen.popupwindow.prototype._setOption.apply(this.element.data("popupwindow"),arguments),this.options[b]=c}});var c=a.tizen.popupwindow.prototype.open,d=a.tizen.popupwindow.prototype._setOption,e=a.tizen.popupwindow.prototype._placementCoords;a.tizen.popupwindow.prototype._setOption=function(a,b){var c=this.element.data("ctxpopup"),e=!0,f;if(c){if("shadow"===a||"overlayTheme"===a||"corners"===a)f=this._ui.container,this._ui.container=c._ui.container,d.apply(this,arguments),this._ui.container=f,e=!1;c.options[a]=b}e&&d.apply(this,arguments)},a.tizen.popupwindow.prototype._placementCoords=function(c,d,f,g){function m(a,b,f){h._ui.arrow.all.hide(),h._ui.arrow[a].show();var g="b"===a||"t"===a,j=g?{point:"x",size:"cx",beg:"left",outerSize:"outerWidth",niceSize:"width",triangleSize:"height"}:{point:"y",size:"cy",beg:"top",outerSize:"outerHeight",niceSize:"height",triangleSize:"width"},k={cx:i._ui.container.width(),cy:i._ui.container.height()},l={cx:k.cx/2,cy:k.cy/2},m={x:c+l.cx*b,y:d+l.cy*f},n=e.call(i,m.x,m.y,k.cx,k.cy),o=h._ui.arrow[a].offset()[j.beg],p=h._ui.arrow[a][j.outerSize](!0),q=i.element.offset()[j.beg],r=i.element[j.outerSize](!0),s=h._ui.arrow[a][j.triangleSize](),t=Math.max(s+Math.max(0,q-o),Math.min(p-s-Math.max(0,o+p-(q+r)),p/2+m[j.point]-n[j.point]-l[j.size])),u={x:n.x+(g?t:0)+("r"===a?k.cx:0),y:n.y+(g?0:t)+("b"===a?k.cy:0)},v={actual:n,triangleOffset:t,absDiff:Math.abs(c-u.x)+Math.abs(d-u.y)};return h._ui.arrow[a].hide(),v}var h=this.element.data("ctxpopup"),i=this,j={},k,l;return h?(j={l:m("l",1,0),r:m("r",-1,0),t:m("t",0,1),b:m("b",0,-1)},a.each(j,function(a,c){if(k===b||c.absDiff<k)k=c.absDiff,l=a}),h._ui.arrow[l].show().triangle("option","offset",j[l].triangleOffset),j[l].actual):e.call(this,c,d,f,g)},a.tizen.popupwindow.prototype.open=function(b,d){var e=this.element.data("ctxpopup");e&&(this._setFade(!1),this._setShadow(!1),this._setCorners(!1),this._setOverlayTheme(null),this._setOption("overlayTheme",e.options.overlayTheme),e._ui.arrow.all.triangle("option","color",e._ui.container.css("background-color")),a(".ui-popupwindow").css("background","none")),c.call(this,b,d,!0)},a(document).bind("pagecreate create",function(b){var c=a(a.tizen.ctxpopup.prototype.options.initSelector,b.target);a.tizen.ctxpopup.prototype.enhanceWithin(b.target)})}(jQuery),function(a,b,c){a.widget("tizen.datetimepicker",a.tizen.widgetex,{options:{type:null,format:null,date:null,initSelector:"input[type='date'], input[type='datetime'], input[type='time'], :jqmData(role='datetimepicker')"},_calendar:function(){return b.Globalize.culture().calendars.standard},_value:{attr:"data-"+(a.mobile.ns||"")+"date",signal:"date-changed"},_daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],_isLeapYear:function(a){return a%4?0:a%100?1:a%400?0:1},_makeTwoDigits:function(a){var b=a.toString(10);return a<10&&(b="0"+b),b},_setType:function(b){switch(b){case"datetime":case"date":case"time":this.options.type=b;break;default:this.options.type="datetime"}return this.element.attr("data-"+(a.mobile.ns?a.mobile.ns+"-":"")+"type",this.options.type),this.options.type},_setFormat:function(b){if(this.options.format==b)return;this.options.format=b,this.ui.children().remove();var c=this._parsePattern(b),d=document.createElement("div"),e,f,g,h,i=this;while(c.length>0){e=c.shift(),f='<span class="ui-datefield-%1" data-pat="'+e+'">%2</span>';switch(e){case"H":case"HH":case"h":case"hh":a(d).append(f.replace("%1","hour"));break;case"mm":case"m":this.options.type=="date"?a(d).append(f.replace("%1","month")):a(d).append(f.replace("%1","min"));break;case"ss":case"s":a(d).append(f.replace("%1","sec"));break;case"d":case"dd":a(d).append(f.replace("%1","day"));break;case"M":case"MM":case"MMM":case"MMMM":a(d).append(f.replace("%1","month"));break;case"yy":case"yyyy":a(d).append(f.replace("%1","year"));break;case"t":case"tt":h='<a href="#" class="ui-datefield-period" data-role="button" data-inline="true">period</a>',a(d).append(h);break;case"g":case"gg":a(d).append(f.replace("%1","era").replace("%2",this._calendar().eras.name));break;case"\t":a(d).append(f.replace("%1","tab").replace("%2",e));break;default:a(d).append(f.replace("%1","seperator").replace("%2",e))}}return this.ui.append(d),this.options.date&&this._setDate(this.options.date),this.ui.find(".ui-datefield-period").buttonMarkup().bind("vclick",function(a){i._switchAmPm(i)}),this.element.attr("data-"+(a.mobile.ns?a.mobile.ns+"-":"")+"format",this.options.format),this.options.format},_setDate:function(b){function i(){return b.getMonth()+1}typeof b=="string"&&(b=new Date(b));var c=a("span,a",this.ui),d,e,f,g,h;for(h=0;h<c.length;h++){f=a(c[h]),d=f.attr("class").match(/ui-datefield-([\w]*)/),d||(d="");switch(d[1]){case"hour":e=b.getHours;break;case"min":e=b.getMinutes;break;case"sec":e=b.getSeconds;break;case"year":e=b.getFullYear;break;case"month":e=i;break;case"day":e=b.getDate;break;case"period":e=b.getHours()<12?this._calendar().AM[0]:this._calendar().PM[0],g=f.find(".ui-btn-text"),g.length==0?f.text(e):g.text()!=e&&g.text(e),e=null;break;default:e=null}e&&this._updateField(f,e.call(b))}return this.options.date=b,this._setValue(b),this.element.attr("data-"+(a.mobile.ns?a.mobile.ns+"-":"")+"date",this.options.date),this.options.date},destroy:function(){this.ui&&this.ui.remove(),this.element&&this.element.show()},value:function(a){function b(a,b){return b._makeTwoDigits(a.getHours())+":"+b._makeTwoDigits(a.getMinutes())+":"+b._makeTwoDigits(a.getSeconds())}function c(a,b){return(a.getFullYear()%1e4+1e4).toString
-().substr(1)+"-"+b._makeTwoDigits(a.getMonth()+1)+"-"+b._makeTwoDigits(a.getDate())}var d=null;if(a)d=this._setDate(a);else switch(this.options.type){case"time":d=b(this.options.date,this);break;case"date":d=c(this.options.date,this);break;default:d=c(this.options.date,this)+"T"+b(this.options.date,this)}return d},setValue:function(a){return console.warn("setValue was deprecated. use datetimepicker('option', 'date', value) instead."),this.value(a)},getValue:function(){return console.warn("getValue() was deprecated. use datetimepicker('value') instead."),this.value()},_updateField:function(a,b){if(!a||a.length==0)return;b==0&&(b="0");var c=a.jqmData("pat"),d,e,f=this;switch(c){case"H":case"HH":case"h":case"hh":d=b,c.charAt(0)=="h"&&(d>12?d-=12:d==0&&(d=12)),d=this._makeTwoDigits(d),e=d;break;case"m":case"M":case"d":case"s":e=b;break;case"mm":case"dd":case"MM":case"ss":e=this._makeTwoDigits(b);break;case"MMM":e=this._calendar().months.namesAbbr[b-1];break;case"MMMM":e=this._calendar().months.names[b-1];break;case"yy":e=this._makeTwoDigits(b%100);break;case"yyyy":b<10?b="000"+b:b<100?b="00"+b:b<1e3&&(b="0"+b),e=b}a.text()!=e&&(a.hasClass("ui-datefield-selected")?(a.addClass("out"),this._new_value=e,a.animationComplete(function(){a.text(f._new_value),a.addClass("in").removeClass("out"),a.animationComplete(function(){a.removeClass("in").removeClass("ui-datefield-selected")})})):a.text(e))},_switchAmPm:function(a){if(this._calendar().AM!=null){var b=new Date(this.options.date),c,d=432e5;b.getHours()>11&&(d=-d),b.setTime(b.getTime()+d),this._setDate(b)}},_parsePattern:function(a){var b=/\/|\s|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|f|gg|g|\'[\w\W]*\'$|[\w\W]/g,c,d;c=a.match(b);for(d=0;d<c.length;d++)c[d].charAt(0)=="'"&&(c[d]=c[d].substr(1,c[d].length-2));return c},changeTypeFormat:function(a,b){console.warn('changeTypeFormat() was deprecated. use datetimepicker("option", "type"|"format", value) instead'),a&&this._setType(a),b&&this._setFormat(b)},_create:function(){var b=this;this.element.is("input")&&function(a){var b,c,d;b=a.element.get(0).getAttribute("type"),a.options.type=b,c=a.element.get(0).getAttribute("value"),c&&(a.options.date=new Date(c))}(this);if(!this.options.format)switch(this.options.type){case"datetime":this.options.format=this._calendar().patterns.d+"\t"+this._calendar().patterns.t;break;case"date":this.options.format=this._calendar().patterns.d;break;case"time":this.options.format=this._calendar().patterns.t}this.options.date||(this.options.date=new Date),this.element.hide(),this.ui=a('<div class="ui-datefield"></div>'),a(this.element).after(this.ui),this._popup_open=!1,this.ui.bind("vclick",function(a){b._showDataSelector(b,this,a.target)})},_populateDataSelector:function(a,c){var d,e,f,g,h=b.range,i,j,k,l;switch(a){case"hour":c=="H"||c=="HH"?(d=h(0,23),g=h(0,23),f=this.options.date.getHours()):(d=h(1,12),f=this.options.date.getHours()-1,f>=11?(f-=12,g=h(13,23),g.push(12)):(g=h(1,11),g.push(0)),f<0&&(f=11)),c.length==2&&(d=d.map(this._makeTwoDigits)),e=d.length;break;case"min":case"sec":d=h(0,59),c.length==2&&(d=d.map(this._makeTwoDigits)),g=h(0,59),f=a=="min"?this.options.date.getMinutes():this.options.date.getSeconds(),e=d.length;break;case"year":j=1900,k=2100,g=h(j,k),f=this.options.date.getFullYear()-j,d=h(j,k),e=d.length;break;case"month":switch(c.length){case 1:d=h(1,12);break;case 2:d=h(1,12).map(this._makeTwoDigits);break;case 3:d=this._calendar().months.namesAbbr.slice();break;case 4:d=this._calendar().months.names.slice()}d.length==13&&d[12]==""&&d.pop(),g=h(1,d.length),f=this.options.date.getMonth(),e=d.length;break;case"day":l=this._daysInMonth[this.options.date.getMonth()],l==28&&(l+=this._isLeapYear(this.options.date.getFullYear())),d=h(1,l),c.length==2&&(d=d.map(this._makeTwoDigits)),g=h(1,l),f=this.options.date.getDate()-1,e=l}return{values:d,data:g,numItems:e,current:f}},_showDataSelector:function(d,e,f){f=a(f);var g=f.attr("class"),h=g?g.match(/ui-datefield-([\w]*)/):c,i,j,k,l,m,n,o,p,q,r,s,t,u,v=10,w=this;if(!g)return;if(!h)return;if(this._popup_open)return;f.not(".ui-datefield-seperator").addClass("ui-datefield-selected"),i=f.jqmData("pat"),j=d._populateDataSelector.call(d,h[1],i),k=j.values,l=j.numItems,m=j.current,n=j.data;if(k){p="data-"+(a.mobile.ns?a.mobile.ns+"-":"")+'val="';for(u=0;u<k.length;u++)o+='<li><a class="ui-link" '+p+n[u]+'">'+k[u]+"</a></li>";q=a("<ul></ul>"),r=a('<div class="ui-datetimepicker-selector" data-transition="fade" data-fade="false"></div>'),r.append(q).appendTo(e),s=r.ctxpopup(),s.parents(".ui-popupwindow").addClass("ui-datetimepicker"),t=a(o),a(t[m]).addClass("current"),r.jqmData("list",t),r.circularview(),a(b).width()/2<f.offset().left&&(v=-10),s.popupwindow("open",f.offset().left+f.width()/2+v-b.pageXOffset,f.offset().top+f.height()-b.pageYOffset),this._popup_open=!0,r.bind("popupafterclose",function(c){d._reflow&&(a(b).unbind("resize",d._reflow),d._reflow=null),!f.hasClass("in")&&!f.hasClass("out")&&f.removeClass("ui-datefield-selected"),r.unbind("popupafterclose"),q.unbind("vclick"),a(d).unbind("update"),s.popupwindow("destroy"),r.remove(),w._popup_open=!1}),a(d).bind("update",function(a,b){var c=new Date(this.options.date),e,f=function(){c.setDate(1),c.setDate(c.getDate()-1)};switch(h[1]){case"min":c.setMinutes(b);break;case"hour":c.setHours(b);break;case"sec":c.setSeconds(b);break;case"year":e=c.getMonth(),c.setFullYear(b),c.getMonth()!=e&&f();break;case"month":c.setMonth(b-1),c.getMonth()==b&&f();break;case"day":c.setDate(b)}d._setDate(c),s.popupwindow("close")}),q.bind("click",function(b){if(a(b.target).is("a")){q.find(".current").removeClass("current"),a(b.target).parent().addClass("current");var c=a(b.target).jqmData("val");a(d).trigger("update",c)}}),r.circularview("centerTo",".current",500),r.bind("scrollend",function(c){d._reflow||(d._reflow=function(){r.circularview("reflow")},a(b).bind("resize",d._reflow))})}return e}}),a(document).bind("pagecreate create",function(b){a(a.tizen.datetimepicker.prototype.options.initSelector,b.target).not(":jqmData(role='none'), :jqmData(role='nojs')").datetimepicker()})}(jQuery,this),function(a){a.tizen.frameworkData.pkgVersion="0.2.20"}(jQuery);
\ No newline at end of file
+function range(a,b,c){var d=[],e,f,g,h=c||1,i=!1;!isNaN(a)&&!isNaN(b)?(e=a,f=b):isNaN(a)&&isNaN(b)?(i=!0,e=a.charCodeAt(0),f=b.charCodeAt(0)):(e=isNaN(a)?0:a,f=isNaN(b)?0:b),g=e>f?!1:!0;if(g)while(e<=f)d.push(i?String.fromCharCode(e):e),e+=h;else while(e>=f)d.push(i?String.fromCharCode(e):e),e-=h;return d}function ensureNS(ns){var nsAr=ns.split("."),nsSoFar="";for(var Nix in nsAr)nsSoFar=nsSoFar+(Nix>0?".":"")+nsAr[Nix],eval(nsSoFar+" = "+nsSoFar+" || {};")}(function(a,b,c,d){function e(c){var d=a(c),e=d.children(".ui-content"),f=d.children(".ui-header").outerHeight()||0,g=d.children(".ui-footer").outerHeight()||0,h=parseFloat(e.css("padding-top")),i=parseFloat(e.css("padding-bottom")),j=a(b).height();e.height(j-(f+g)-(h+i))}function f(b){this.options=a.extend({},b),this.easing="easeOutQuad",this.reset()}function h(){return Date.now()}var g={scrolling:0,overshot:1,snapback:2,done:3};jQuery.widget("tizen.scrollview",jQuery.mobile.widget,{options:{direction:null,timerInterval:10,scrollDuration:1e3,overshootDuration:250,snapbackDuration:500,moveThreshold:30,moveIntervalThreshold:150,scrollMethod:"translate",startEventName:"scrollstart",updateEventName:"scrollupdate",stopEventName:"scrollstop",eventType:a.support.touch?"touch":"mouse",showScrollBars:!0,overshootEnable:!1,outerScrollEnable:!1,overflowEnable:!0,scrollJump:!1},_getViewHeight:function(){return this._$view.height()},_getViewWidth:function(){return this._$view.width()},_makePositioned:function(a){a.css("position")==="static"&&a.css("position","relative")},_create:function(){var b,c=this;this._$clip=a(this.element).addClass("ui-scrollview-clip"),this._$clip.children(".ui-scrollview-view").length?this._$view=this._$clip.children(".ui-scrollview-view"):this._$view=this._$clip.wrapInner("<div></div>").children().addClass("ui-scrollview-view"),this.options.scrollMethod==="translate"&&this._$view.css("transform")===d&&(this.options.scrollMethod="position"),this._$clip.css("overflow","hidden"),this._makePositioned(this._$clip),this._makePositioned(this._$view),this._$view.css({left:0,top:0}),this._view_height=this._getViewHeight(),this._sx=0,this._sy=0,b=this.options.direction,this._hTracker=b!=="y"?new f(this.options):null,this._vTracker=b!=="x"?new f(this.options):null,this._timerInterval=this.options.timerInterval,this._timerID=0,this._timerCB=function(){c._handleMomentumScroll()},this._add_event(),this._add_scrollbar(),this._add_scroll_jump(),this._add_overflow_indicator()},_startMScroll:function(a,b){var c=!1,d=this.options.scrollDuration,e=this._hTracker,f=this._vTracker,g,h;this._$clip.trigger(this.options.startEventName);if(e){g=this._$clip.width(),h=this._getViewWidth();if((this._sx===0&&a>0||this._sx===-(h-g)&&a<0)&&h>g)return;e.start(this._sx,a,d,h>g?-(h-g):0,0),c=!e.done()}if(f){g=this._$clip.height(),h=this._getViewHeight();if((this._sy===0&&b>0||this._sy===-(h-g)&&b<0)&&h>g)return;f.start(this._sy,b,d,h>g?-(h-g):0,0),c=c||!f.done()}c?this._timerID=setTimeout(this._timerCB,this._timerInterval):this._stopMScroll()},_stopMScroll:function(){this._timerID&&(this._$clip.trigger(this.options.stopEventName),clearTimeout(this._timerID)),this._timerID=0,this._vTracker&&this._vTracker.reset(),this._hTracker&&this._hTracker.reset(),this._hideScrollBars(),this._hideOverflowIndicator()},_handleMomentumScroll:function(){var a=!1,b=0,c=0,d=0,e=this,f=function(a){setTimeout(function(){e._effect_dir=a,e._setEndEffect("in")},100),setTimeout(function(){e._setEndEffect("out")},350)},g=this._vTracker,h=this._hTracker;if(this._outerScrolling)return;g&&(g.update(this.options.overshootEnable),c=g.getPosition(),a=!g.done(),g.getRemained()>this.options.overshootDuration&&(d=this._getViewHeight()-this._$clip.height(),g.isAvail()?g.isMin()?(this._outerScroll(c-g.getRemained()/3,d),d>0&&f(1)):g.isMax()&&(this._outerScroll(g.getRemained()/3,d),d>0&&f(0)):this._speedY>0?this._outerScroll(g.getRemained()/3,d):this._outerScroll(c-g.getRemained()/3,d))),h&&(h.update(this.options.overshootEnable),b=h.getPosition(),a=a||!h.done()),this._setScrollPosition(b,c),this._$clip.trigger(this.options.updateEventName,[{x:b,y:c}]),a?this._timerID=setTimeout(this._timerCB,this._timerInterval):this._stopMScroll()},_setElementTransform:function(b,c,e,f){var g,h;!f||f===d?h="none":h="-webkit-transform "+f/1e3+"s ease-out",a.support.cssTransform3d?g="translate3d("+c+","+e+", 0px)":g="translate("+c+","+e+")",b.css({"-moz-transform":g,"-webkit-transform":g,"-ms-transform":g,"-o-transform":g,transform:g,"-webkit-transition":h})},_setEndEffect:function(a){var b=this._getViewHeight()-this._$clip.height();if(this._softkeyboard){this._effect_dir?this._outerScroll(-b-this._softkeyboardHeight,b):this._outerScroll(this._softkeyboardHeight,b);return}if(a==="in"){if(this._endEffect)return;this._endEffect=!0,this._setOverflowIndicator(this._effect_dir),this._showOverflowIndicator()}else if(a==="out"){if(!this._endEffect)return;this._endEffect=!1}else this._endEffect=!1,this._setOverflowIndicator(),this._showOverflowIndicator()},_setCalibration:function(a,b){if(this.options.overshootEnable){this._sx=a,this._sy=b;return}var c=this._$view,d=this._$clip,e=this._directionLock,f=0,g=0;e!=="y"&&this._hTracker&&(g=c.width()-d.width(),a>=0?this._sx=0:a<-g?this._sx=-g:this._sx=a,g<0&&(this._sx=0)),e!=="x"&&this._vTracker&&(f=this._getViewHeight()-d.height(),b>0?(this._sy=0,this._didDrag&&f>0&&(this._effect_dir=0,this._setEndEffect("in"))):b<-f?(this._sy=-f,this._didDrag&&f>0&&(this._effect_dir=1,this._setEndEffect("in"))):(this._endEffect&&this._sy!==b&&this._setEndEffect(),this._sy=b),f<0&&(this._sy=0))},_setScrollPosition:function(a,b,c){var d=this._$view,e=this.options.scrollMethod,f=this._$vScrollBar,g=this._$hScrollBar,h;this._setCalibration(a,b),a=this._sx,b=this._sy,e==="translate"?this._setElementTransform(d,a+"px",b+"px",c):d.css({left:a+"px",top:b+"px"}),f&&(h=f.find(".ui-scrollbar-thumb"),e==="translate"?this._setElementTransform(h,"0px",-b/this._getViewHeight()*h.parent().height()+"px",c):h.css("top",-b/this._getViewHeight()*100+"%")),g&&(h=g.find(".ui-scrollbar-thumb"),e==="translate"?this._setElementTransform(h,-a/d.width()*h.parent().width()+"px","0px",c):h.css("left",-a/d.width()*100+"%"))},_outerScroll:function(c,e){var f=this,g=a(b).scrollTop()-b.screenTop,i=0,j=this.options.snapbackDuration,k=h(),l;if(!this.options.outerScrollEnable)return;if(this._$clip.jqmData("scroll")!=="y")return;if(this._outerScrolling)return;if(c>0)i=b.screenTop?b.screenTop:-c;else{if(!(c<-e))return;i=-c-e}l=function(){var c=h()-k;c>=j?(b.scrollTo(0,g+i),f._outerScrolling=d,f._stopMScroll()):(ec=a.easing.easeOutQuad(c/j,c,0,1,j),b.scrollTo(0,g+i*ec),f._outerScrolling=setTimeout(l,f._timerInterval))},this._outerScrolling=setTimeout(l,f._timerInterval)},_scrollTo:function(b,c,d){var e=this,f=h(),g=a.easing.easeOutQuad,i=this._sx,j=this._sy,k=b-i,l=c-j,m;b=-b,c=-c,m=function(){var a=h()-f,n;a>=d?(e._timerID=0,e._setScrollPosition(b,c)):(n=g(a/d,a,0,1,d),e._setScrollPosition(i+k*n,j+l*n),e._timerID=setTimeout(m,e._timerInterval))},this._timerID=setTimeout(m,this._timerInterval)},scrollTo:function(a,b,c){this._stopMScroll(),this._didDrag=!1,!c||this.options.scrollMethod==="translate"?this._setScrollPosition(a,b,c):this._scrollTo(a,b,c)},getScrollPosition:function(){return{x:-this._sx,y:-this._sy}},skipDragging:function(a){this._skip_dragging=a},_getScrollHierarchy:function(){var b=[],c;return this._$clip.parents(".ui-scrollview-clip").each(function(){c=a(this).jqmData("scrollview"),c&&b.unshift(c)}),b},_getAncestorByDirection:function(a){var b=this._getScrollHierarchy(),c=b.length,d,e;while(0<c--){d=b[c],e=d.options.direction;if(!e||e===a)return d}return null},_handleDragStart:function(b,c,d){this._stopMScroll(),this._didDrag=!1,this._skip_dragging=!1;var e=a(b.target),f=this,g=this._$clip,h=this.options.direction;this._is_button=e.is(".ui-btn")||e.is(".ui-btn-text")||e.is(".ui-btn-inner")||e.is(".ui-btn-inner .ui-icon");if(e.parents(".ui-slider").length||e.is(".ui-slider")){this._skip_dragging=!0;return}e.is("textarea")&&e.bind("scroll",function(){f._skip_dragging=!0,e.unbind("scroll")}),this._is_inputbox=e.is(":input")||e.parents(":input").length>0,this._is_inputbox&&e.one("resize.scrollview",function(){d>g.height()&&f.scrollTo(-c,f._sy-d+g.height(),f.options.snapbackDuration)}),this.options.eventType==="mouse"&&!this._is_inputbox&&!this._is_button&&b.preventDefault(),this._lastX=c,this._lastY=d,this._startY=d,this._doSnapBackX=!1,this._doSnapBackY=!1,this._speedX=0,this._speedY=0,this._directionLock="",this._lastMove=0,this._enableTracking(),this._set_scrollbar_size()},_propagateDragMove:function(a,b,c,d,e){this._hideScrollBars(),this._hideOverflowIndicator(),this._disableTracking(),a._handleDragStart(b,c,d),a._directionLock=e,a._didDrag=this._didDrag},_handleDragMove:function(b,c,d){if(this._skip_dragging)return;if(!this._dragging)return;!this._is_inputbox&&!this._is_button&&b.preventDefault();var e=this.options.moveThreshold,f=c-this._lastX,g=d-this._lastY,i=this.options.direction,j=null,k,l,m,n,o,p,q;this._lastMove=h();if(!this._directionLock){k=Math.abs(f),l=Math.abs(g);if(k<e&&l<e)return!1;k<l&&k/l<.5?j="y":k>l&&l/k<.5&&(j="x");if(i&&j&&i!==j){m=this._getAncestorByDirection(j);if(m)return this._propagateDragMove(m,b,c,d,j),!1}this._directionLock=i||j||"none"}o=this._sx,p=this._sy,q=this._directionLock;if(q!=="y"&&this._hTracker){k=this._sx,this._speedX=f,o=k+f,this._doSnapBackX=!1,n=o>0||o<this._maxX;if(n&&q==="x"){m=this._getAncestorByDirection("x");if(m)return this._setScrollPosition(o>0?0:this._maxX,p),this._propagateDragMove(m,b,c,d,j),!1;o=k+f/2,this._doSnapBackX=!0}}if(q!=="x"&&this._vTracker){if(Math.abs(this._startY-d)<e&&q!=="xy")return;l=this._sy,this._speedY=g,p=l+g,this._doSnapBackY=!1,n=p>0||p<this._maxY;if(n&&q==="y"){m=this._getAncestorByDirection("y");if(m)return this._setScrollPosition(o,p>0?0:this._maxY),this._propagateDragMove(m,b,c,d,j),!1;p=l+g/2,this._doSnapBackY=!0}}this.options.overshootEnable===!1&&(this._doSnapBackX=!1,this._doSnapBackY=!1),this._lastX=c,this._lastY=d,this._setScrollPosition(o,p),this._didDrag===!1&&(this._didDrag=!0,this._showScrollBars(),this._showOverflowIndicator(),this._$clip.parents(".ui-scrollview-clip").each(function(){a(this).scrollview("skipDragging",!0)}))},_handleDragStop:function(a){var b=this;if(this._skip_dragging)return;var c=this._lastMove,d=h(),e=c&&d-c<=this.options.moveIntervalThreshold,f=this._hTracker&&this._speedX&&e?this._speedX:this._doSnapBackX?1:0,g=this._vTracker&&this._speedY&&e?this._speedY:this._doSnapBackY?1:0,i=this.options.direction,j,k;return f||g?this._setGestureScroll(f,g)||this._startMScroll(f,g):(this._hideScrollBars(),this._hideOverflowIndicator()),this._disableTracking(),this._endEffect&&setTimeout(function(){b._setEndEffect("out"),b._hideScrollBars(),b._hideOverflowIndicator()},300),!this._didDrag},_setGestureScroll:function(a,b){var c=this,e=function(){clearTimeout(c._gesture_timer),c._gesture_dir=0,c._gesture_timer=d},f={top:0,bottom:1,left:2,right:3};return!b&&!a?!1:(Math.abs(a)>Math.abs(b)?dir=a>0?f.left:f.right:dir=b>0?f.top:f.bottom,this._gesture_timer?this._gesture_dir!==dir?(e(),!1):!1:(this._gesture_dir=dir,this._gesture_timer=setTimeout(function(){e()},1e3),!1))},_enableTracking:function(){this._dragging=!0},_disableTracking:function(){this._dragging=!1},_showScrollBars:function(a){var b="ui-scrollbar-visible",c=this;if(!this.options.showScrollBars)return;if(this._scrollbar_showed)return;this._$vScrollBar&&this._$vScrollBar.addClass(b),this._$hScrollBar&&this._$hScrollBar.addClass(b),this._scrollbar_showed=!0,a&&setTimeout(function(){c._hideScrollBars()},a)},_hideScrollBars:function(){var a="ui-scrollbar-visible";if(!this.options.showScrollBars)return;if(!this._scrollbar_showed)return;this._$vScrollBar&&this._$vScrollBar.removeClass(a),this._$hScrollBar&&this._$hScrollBar.removeClass(a),this._scrollbar_showed=!1},_setOverflowIndicator:function(a){a===1?(this._opacity_top="0",this._opacity_bottom="0.8"):a===0?(this._opacity_top="0.8",this._opacity_bottom="0"):(this._opacity_top="0.5",this._opacity_bottom="0.5")},_showOverflowIndicator:function(){if(!this.options.overflowEnable||!this._overflowAvail||this._softkeyboard)return;this._overflow_top.animate({opacity:this._opacity_top},300),this._overflow_bottom.animate({opacity:this._opacity_bottom},300),this._overflow_showed=!0},_hideOverflowIndicator:function(){if(!this.options.overflowEnable||!this._overflowAvail||this._softkeyboard)return;if(this._overflow_showed===!1)return;this._overflow_top.animate({opacity:0},300),this._overflow_bottom.animate({opacity:0},300),this._overflow_showed=!1,this._setOverflowIndicator()},_add_event:function(){var c=this,e=this._$clip,f=this._$view;this.options.eventType==="mouse"?(this._dragEvt="mousedown mousemove mouseup click mousewheel",this._dragCB=function(a){switch(a.type){case"mousedown":return c._handleDragStart(a,a.clientX,a.clientY);case"mousemove":return c._handleDragMove(a,a.clientX,a.clientY);case"mouseup":return c._handleDragStop(a);case"click":return!c._didDrag;case"mousewheel":var b=c.getScrollPosition();c.scrollTo(-b.x,-(b.y-a.originalEvent.wheelDelta))}}):(this._dragEvt="touchstart touchmove touchend click",this._dragCB=function(a){var b=a.originalEvent.touches;switch(a.type){case"touchstart":if(b.length!=1)return;return c._handleDragStart(a,b[0].pageX,b[0].pageY);case"touchmove":if(b.length!=1)return;return c._handleDragMove(a,b[0].pageX,b[0].pageY);case"touchend":if(b.length!=0)return;return c._handleDragStop(a);case"click":return!c._didDrag}}),f.bind(this._dragEvt,this._dragCB),f.bind("keydown",function(f){var g,h,i=a(b).scrollTop()-b.screenTop,j;if(f.keyCode==9)return!1;g=e.find(".ui-focus");if(g===d)return;h=g.offset().top-i,j=e.offset().top+e.height()-g.height(),c._softkeyboard&&(j-=c._softkeyboardHeight),(h<e.offset().top||h>j)&&c.scrollTo(0,c._sy-(h-e.offset().top-g.height()));return}),f.bind("keyup",function(d){var f,g,h,j=a(b).scrollTop()-b.screenTop,k;if(d.keyCode!=9)return;f=a(this).find(":input");for(i=0;i<f.length;i++){if(!a(f[i]).hasClass("ui-focus"))continue;i+1==f.length?g=a(f[0]):g=a(f[i+1]),h=g.offset().top-j,k=e.offset().top+e.height()-g.height(),c._softkeyboard&&(k-=c._softkeyboardHeight),(h<0||h>k)&&c.scrollTo(0,c._sy-h+g.height()+e.offset().top,0),g.focus();break}return!1}),e.bind("updatelayout",function(a){var b,d,f=c._getViewHeight();if(!e.height()||!f){c.scrollTo(0,0,0);return}b=e.height()-f,d=f-c._view_height,c._view_height=f;if(d==0||d>e.height()/2)return;b>0?c.scrollTo(0,0,0):c._sy-b<=-d?c.scrollTo(0,c._sy,c.options.snapbackDuration):c._sy-b<=d+c.options.moveThreshold&&c.scrollTo(0,b,c.options.snapbackDuration)}),a(b).bind("resize",function(b){var d,f=c._getViewHeight();if(a(".ui-page-active").get(0)!==e.closest(".ui-page").get(0))return;if(!e.height()||!f)return;d=e.find(".ui-focus"),d&&d.trigger("resize.scrollview"),setTimeout(function(){c._sy<e.height()-c._getViewHeight()&&c.scrollTo(0,e.height()-c._getViewHeight(),c.options.overshootDuration)},260),c._view_height=f}),a(b).bind("vmouseout",function(d){var f=!1;if(a(".ui-page-active").get(0)!==e.closest(".ui-page").get(0))return;if(!c._dragging)return;if(d.pageX<0||d.pageX>a(b).width())f=!0;if(d.pageY<0||d.pageY>a(b).height())f=!0;f&&(c._hideScrollBars(),c._hideOverflowIndicator(),c._disableTracking())}),this._softkeyboard=!1,this._softkeyboardHeight=0,b.addEventListener("softkeyboardchange",function(d){if(a(".ui-page-active").get(0)!==e.closest(".ui-page").get(0))return;c._softkeyboard=d.state==="on"?!0:!1,c._softkeyboardHeight=parseInt(d.height)*(a(b).width()/b.screen.availWidth)}),e.closest(".ui-page").bind("pageshow",function(a){setTimeout(function(){c._view_height=c._getViewHeight(),c._set_scrollbar_size(),c._setScrollPosition(c._sx,c._sy),c._showScrollBars(2e3)},0)})},_add_scrollbar:function(){var a=this._$clip,b='<div class="ui-scrollbar ui-scrollbar-',c='"><div class="ui-scrollbar-track"><div class="ui-scrollbar-thumb"></div></div></div>';if(!this.options.showScrollBars)return;this._vTracker&&(a.append(b+"y"+c),this._$vScrollBar=a.children(".ui-scrollbar-y")),this._hTracker&&(a.append(b+"x"+c),this._$hScrollBar=a.children(".ui-scrollbar-x")),this._scrollbar_showed=!1},_add_scroll_jump:function(){var b=this._$clip,c=this,d,e;if(!this.options.scrollJump)return;this._vTracker&&(d=a('<div class="ui-scroll-jump-top-bg"><div data-role="button" data-inline="true" data-icon="scrolltop" data-style="box"></div></div>'),b.append(d).trigger("create"),d.bind("vclick",function(){c.scrollTo(0,0,c.options.overshootDuration)})),this._hTracker&&(e=a('<div class="ui-scroll-jump-left-bg"><div data-role="button" data-inline="true" data-icon="scrollleft" data-style="box"></div></div>'),b.append(e).trigger("create"),e.bind("vclick",function(){c.scrollTo(0,0,c.options.overshootDuration)}))},_add_overflow_indicator:function(){if(!this.options.overflowEnable)return;this._overflow_top=a('<div class="ui-overflow-indicator-top"></div>'),this._overflow_bottom=a('<div class="ui-overflow-indicator-bottom"></div>'),this._$clip.append(this._overflow_top),this._$clip.append(this._overflow_bottom),this._opacity_top="0.5",this._opacity_bottom="0.5",this._overflow_showed=!1},_set_scrollbar_size:function(){var a=this._$clip,b=this._$view,c=0,d=0,e=0,f=0,g;if(!this.options.showScrollBars)return;this._hTracker&&(c=a.width(),d=b.width(),this._maxX=c-d,this._maxX>0&&(this._maxX=0),this._$hScrollBar&&d&&(g=this._$hScrollBar.find(".ui-scrollbar-thumb"),g.css("width",c>=d?"0":(Math.floor(c/d*100)||1)+"%")));if(this._vTracker){e=a.height(),f=this._getViewHeight(),this._maxY=e-f;if(this._maxY>0||f===0)this._maxY=0;if(this._$vScrollBar&&f||f===0)g=this._$vScrollBar.find(".ui-scrollbar-thumb"),g.css("height",e>=f?"0":(Math.floor(e/f*100)||1)+"%"),this._overflowAvail=!!g.height()}}}),a.extend(f.prototype,{start:function(a,b,c,d,e){var f=a<d||a>e?g.snapback:g.scrolling,i;this.state=b!==0?f:g.done,this.pos=a,this.speed=b,this.duration=this.state===g.snapback?this.options.snapbackDuration:c,this.minPos=d,this.maxPos=e,this.fromPos=this.state===g.snapback?this.pos:0,i=this.pos<this.minPos?this.minPos:this.maxPos,this.toPos=this.state===g.snapback?i:0,this.startTime=h()},reset:function(){this.state=g.done,this.pos=0,this.speed=0,this.minPos=0,this.maxPos=0,this.duration=0,this.remained=0},update:function(b){var c=this.state,d=h(),e=this.duration,f=d-this.startTime,i,j,k;return c===g.done?this.pos:(f=f>e?e:f,this.remained=e-f,c===g.scrolling||c===g.overshot?(i=this.speed*(1-a.easing[this.easing](f/e,f,0,1,e)),j=this.pos+i,k=c===g.scrolling&&(j<this.minPos||j>this.maxPos),k&&(j=j<this.minPos?this.minPos:this.maxPos),this.pos=j,c===g.overshot?(b||(this.state=g.done),f>=e&&(this.state=g.snapback,this.fromPos=this.pos,this.toPos=j<this.minPos?this.minPos:this.maxPos,this.duration=this.options.snapbackDuration,this.startTime=d,f=0)):c===g.scrolling&&(k&&b?(this.state=g.overshot,this.speed=i/2,this.duration=this.options.overshootDuration,this.startTime=d):f>=e&&(this.state=g.done))):c===g.snapback&&(f>=e?(this.pos=this.toPos,this.state=g.done):this.pos=this.fromPos+(this.toPos-this.fromPos)*a.easing[this.easing](f/e,f,0,1,e)),this.pos)},done:function(){return this.state===g.done},isMin:function(){return this.pos===this.minPos},isMax:function(){return this.pos===this.maxPos},isAvail:function(){return this.minPos!==this.maxPos},getRemained:function(){return this.remained},getPosition:function(){return this.pos}}),a(c).bind("pagecreate create",function(b){var c=a(b.target),e=c.find(".ui-content").jqmData("scroll");a.support.scrollview===d&&(a.support.scrollview=!0),a.support.scrollview===!0&&e===d&&(e="y"),e!=="y"&&(e="none"),c.find(".ui-content").attr("data-scroll",e),c.find(":jqmData(scroll)").not(".ui-scrollview-clip").each(function(){if(a(this).hasClass("ui-scrolllistview"))a(this).scrolllistview();else{var b=a(this).jqmData("scroll"),c=b&&b.search(/^[xy]/)!==-1?b:null,e=a(this).hasClass("ui-content"),f;if(b==="none")return;f={direction:c||d,overflowEnable:e,scrollMethod:a(this).jqmData("scroll-method")||d,scrollJump:a(this).jqmData("scroll-jump")||d},a(this).scrollview(f)}})}),a(c).bind("pageshow",function(b){var c=a(b.target),d=c.find(".ui-content").jqmData("scroll");d==="y"&&e(b.target)})})(jQuery,window,document),function(a,b,c,d){function e(a,b){var c=a%b;return c<0&&(c=b+c),c}function f(a,b,c){var d="translate3d( "+b+","+c+", 0px)";a.css({"-ms-transform":d,"-o-transform":d,"-moz-transform":d,"-webkit-transform":d,transform:d})}function g(b){this.options=a.extend({},b),this.easing="easeOutQuad",this.reset()}function i(){return Date.now()}var h={scrolling:0,done:1};a.extend(g.prototype,{start:function(a,b,c){this.state=b!=0?h.scrolling:h.done,this.pos=a,this.speed=b,this.duration=c,this.fromPos=0,this.toPos=0,this.startTime=i()},reset:function(){this.state=h.done,this.pos=0,this.speed=0,this.duration=0},update:function(){var b=this.state,c,d,e,f;return b==h.done?this.pos:(c=this.duration,d=i()-this.startTime,d=d>c?c:d,e=this.speed*(1-a.easing[this.easing](d/c,d,0,1,c)),f=this.pos+e,this.pos=f,d>=c&&(this.state=h.done),this.pos)},done:function(){return this.state==h.done},getPosition:function(){return this.pos}}),jQuery.widget("mobile.circularview",jQuery.mobile.widget,{options:{fps:60,scrollDuration:2e3,moveThreshold:10,moveIntervalThreshold:150,startEventName:"scrollstart",updateEventName:"scrollupdate",stopEventName:"scrollstop",eventType:a.support.touch?"touch":"mouse",delayedClickSelector:"a, .ui-btn",delayedClickEnabled:!1},_makePositioned:function(a){a.css("position")=="static"&&a.css("position","relative")},_create:function(){var b=this;this._items=a(this.element).jqmData("list"),this._$clip=a(this.element).addClass("ui-scrollview-clip"),this._$clip.wrapInner('<div class="ui-scrollview-view"></div>'),this._$view=a(".ui-scrollview-view",this._$clip),this._$list=a("ul",this._$clip),this._$clip.css("overflow","hidden"),this._makePositioned(this._$clip),this._$view.css("overflow","hidden"),this._tracker=new g(this.options),this._timerInterval=1e3/this.options.fps,this._timerID=0,this._timerCB=function(){b._handleMomentumScroll()},this.refresh(),this._addBehaviors()},reflow:function(){var a=this.getScrollPosition();this.refresh(),this.scrollTo(a.x,a.y)},refresh:function(){var c;this._$clip.width(a(b).width()),this._clipWidth=this._$clip.width(),this._$list.empty(),this._$list.append(this._items[0]),this._itemWidth=a(this._items[0]).outerWidth(),a(this._items[0]).detach(),c=this._clipWidth/this._itemWidth,c=Math.ceil(c*10)/10,this._itemsPerView=parseInt(c,10);while(this._itemsPerView+1>this._items.length)a.merge(this._items,a(this._items).clone());this._rx=-this._itemWidth,this._sx=-this._itemWidth,this._setItems()},_startMScroll:function(a,b){this._stopMScroll();var c=!1,d=this.options.scrollDuration,e=this._tracker,f=this._clipWidth,g=this._viewWidth;this._$clip.trigger(this.options.startEventName),e.start(this._rx,a,d,g>f?-(g-f):0,0),c=!e.done(),c?this._timerID=setTimeout(this._timerCB,this._timerInterval):this._stopMScroll()},_stopMScroll:function(){this._timerID&&(this._$clip.trigger(this.options.stopEventName),clearTimeout(this._timerID)),this._timerID=0,this._tracker&&this._tracker.reset()},_handleMomentumScroll:function(){var a=!1,b=this._$view,c=0,d=0,e=this._tracker;e&&(e.update(),c=e.getPosition(),a=!e.done()),this._setScrollPosition(c,d),this._rx=c,this._$clip.trigger(this.options.updateEventName,[{x:c,y:d}]),a?this._timerID=setTimeout(this._timerCB,this._timerInterval):this._stopMScroll()},_setItems:function(){var a,b;for(a=-1;a<this._itemsPerView+1;a++)b=this._items[e(a,this._items.length)],this._$list.append(b);f(this._$view,this._sx+"px",0),this._$view.width(this._itemWidth*(this._itemsPerView+2)),this._viewWidth=this._$view.width()},_setScrollPosition:function(a,b){var c=this._sx,d=a-c,g=parseInt(d/this._itemWidth,10),h,i,j;if(g>0)for(h=0;h<g;h++)this._$list.children().last().detach(),i=-parseInt(c/this._itemWidth+h+3,10),j=this._items[e(i,this._items.length)],this._$list.prepend(j);else if(g<0)for(h=0;h>g;h--)this._$list.children().first().detach(),i=this._itemsPerView-parseInt(c/this._itemWidth+h,10),j=this._items[e(i,this._items.length)],this._$list.append(j);this._sx+=g*this._itemWidth,f(this._$view,a-this._sx-this._itemWidth+"px",0)},_enableTracking:function(){a(c).bind(this._dragMoveEvt,this._dragMoveCB),a(c).bind(this._dragStopEvt,this._dragStopCB)},_disableTracking:function(){a(c).unbind(this._dragMoveEvt,this._dragMoveCB),a(c).unbind(this._dragStopEvt,this._dragStopCB)},_getScrollHierarchy:function(){var b=[],c;return this._$clip.parents(".ui-scrollview-clip").each(function(){c=a(this).jqmData("circulaview"),c&&b.unshift(c)}),b},centerTo:function(b,c){var d,e;for(d=0;d<this._items.length;d++)if(a(this._items[d]).is(b)){e=-(d*this._itemWidth-this._clipWidth/2+this._itemWidth*1.5),this.scrollTo(e+this._itemWidth,0),this.scrollTo(e,0,c);return}},scrollTo:function(b,c,d){this._stopMScroll();if(!d){this._setScrollPosition(b,c),this._rx=b;return}var e=this,f=i(),g=a.easing.easeOutQuad,h=this._rx,j=0,k=b-h,l=0,m,n,o;this._rx=b,m=function(){n=i()-f,n>=d?(e._timerID=0,e._setScrollPosition(b,c),e._$clip.trigger("scrollend")):(o=g(n/d,n,0,1,d),e._setScrollPosition(h+k*o,j+l*o),e._timerID=setTimeout(m,e._timerInterval))},this._timerID=setTimeout(m,this._timerInterval)},getScrollPosition:function(){return{x:-this._rx,y:0}},_handleDragStart:function(b,c,d){a.each(this._getScrollHierarchy(),function(a,b){b._stopMScroll()}),this._stopMScroll(),this.options.delayedClickEnabled&&(this._$clickEle=a(b.target).closest(this.options.delayedClickSelector)),this._lastX=c,this._lastY=d,this._speedX=0,this._speedY=0,this._didDrag=!1,this._lastMove=0,this._enableTracking(),this._ox=c,this._nx=this._rx,(this.options.eventType=="mouse"||this.options.delayedClickEnabled)&&b.preventDefault(),b.stopPropagation()},_handleDragMove:function(a,b,c){this._lastMove=i();var d=b-this._lastX,e=c-this._lastY;return this._speedX=d,this._speedY=0,this._didDrag=!0,this._lastX=b,this._lastY=c,this._mx=b-this._ox,this._setScrollPosition(this._nx+this._mx,0),!1},_handleDragStop:function(a){var b=this._lastMove,c=i(),e=b&&c-b<=this.options.moveIntervalThreshold,f=this._tracker&&this._speedX&&e?this._speedX:0,g=0;return this._rx=this._mx?this._nx+this._mx:this._rx,f&&this._startMScroll(f,g),this._disableTracking(),!this._didDrag&&this.options.delayedClickEnabled&&this._$clickEle.length&&this._$clickEle.trigger("mousedown").trigger("mouseup").trigger("click"),this._didDrag&&(a.preventDefault(),a.stopPropagation()),this._didDrag?!1:d},_addBehaviors:function(){var a=this;this.options.eventType==="mouse"?(this._dragStartEvt="mousedown",this._dragStartCB=function(b){return a._handleDragStart(b,b.clientX,b.clientY)},this._dragMoveEvt="mousemove",this._dragMoveCB=function(b){return a._handleDragMove(b,b.clientX,b.clientY)},this._dragStopEvt="mouseup",this._dragStopCB=function(b){return a._handleDragStop(b)},this._$view.bind("vclick",function(b){return!a._didDrag})):(this._dragStartEvt="touchstart",this._dragStartCB=function(b){var c=b.originalEvent.targetTouches[0];return a._handleDragStart(b,c.pageX,c.pageY)},this._dragMoveEvt="touchmove",this._dragMoveCB=function(b){var c=b.originalEvent.targetTouches[0];return a._handleDragMove(b,c.pageX,c.pageY)},this._dragStopEvt="touchend",this._dragStopCB=function(b){return a._handleDragStop(b)}),this._$view.bind(this._dragStartEvt,this._dragStartCB)}}),a(c).bind("pagecreate create",function(b){a(a.mobile.circularview.prototype.options.initSelector,b.target).circularview()})}(jQuery,window,document),function(a,b,c){a.widget("tizen.gallery",a.mobile.widget,{options:{flicking:!1,duration:500},dragging:!1,moving:!1,max_width:0,max_height:0,org_x:0,org_time:null,cur_img:null,prev_img:null,next_img:null,images:[],images_hold:[],index:0,align_type:null,direction:1,container:null,orientationEventFire:!1,_resize:function(a){var b=this.images[a],c=this.images[a].width(),d=this.images[a].height(),e=0,f,g=this.max_width-e,h=this.max_height-e;f=d/c,c>g&&(b.width(g),b.height(g*f)),d=b.height(),d>h&&(b.height(h),b.width(h/f))},_align:function(a,b){var c=this.images[a],d=0;if(!b)return;if(!b.length)return;this.align_type=="middle"?d=(this.max_height-c.height())/2:this.align_type=="bottom"?d=this.max_height-c.height():d=0,b.css("top",d+"px")},_attach:function(a,b){var d=this,e=function(){d._resize(a),d._align(a,b)},f=function(){if(d.images[a]===c)return;if(!d.images[a].height()){setTimeout(f,10);return}e()};if(!b)return;if(!b.length)return;if(a<0)return;if(!this.images.length)return;if(a>=this.images.length)return;b.css("display","block"),b.append(this.images[a]),f()},_detach:function(a,b){if(!b)return;if(!b.length)return;if(a<0)return;if(a>=this.images.length)return;b.css("display","none"),this.images[a].removeAttr("style"),this.images[a].detach()},_detach_all:function(){var a;for(a=0;a<this.images.length;a++)this.images[a].detach()},_drag:function(a){var b,c;if(!this.dragging)return;if(this.options.flicking===!1){b=this.org_x-a;if(b<0&&!this.prev_img.length)return;if(b>0&&!this.next_img.length)return}c=a-this.org_x,this._moveLeft(this.cur_img,c+"px"),this.next_img.length&&this._moveLeft(this.next_img,c+this.window_width+"px"),this.prev_img.length&&this._moveLeft(this.prev_img,c-this.window_width+"px")},_move:function(a){var b=this.org_x-a,c=0,d,e,f;if(b==0)return;b>0?c=b<this.max_width*.45?0:1:c=-b<this.max_width*.45?0:1,c||(d=Date.now()-this.org_time,Math.abs(b)/d>1&&(c=1)),c&&(b>0&&this.next_img.length?(this._detach(this.index-1,this.prev_img),this.prev_img=this.cur_img,this.cur_img=this.next_img,this.next_img=this.next_img.next(),this.index++,this.next_img.length&&(this._moveLeft(this.next_img,this.window_width+"px"),this._attach(this.index+1,this.next_img)),this.direction=1):b<0&&this.prev_img.length&&(this._detach(this.index+1,this.next_img),this.next_img=this.cur_img,this.cur_img=this.prev_img,this.prev_img=this.prev_img.prev(),this.index--,this.prev_img.length&&(this._moveLeft(this.prev_img,-this.window_width+"px"),this._attach(this.index-1,this.prev_img)),this.direction=-1)),e=this.options.duration,f=this,this.moving=!0,setTimeout(function(){f.moving=!1},e-25),this._moveLeft(this.cur_img,"0px",e),this.next_img.length&&this._moveLeft(this.next_img,this.window_width+"px",e),this.prev_img.length&&this._moveLeft(this.prev_img,-this.window_width+"px",e)},_add_event:function(){var a=this,b;this.container.bind("vmousemove",function(b){b.preventDefault();if(a.moving)return;if(!a.dragging)return;a._drag(b.pageX)}),this.container.bind("vmousedown",function(b){b.preventDefault();if(a.moving)return;a.dragging=!0,a.org_x=b.pageX,a.org_time=Date.now()}),this.container.bind("vmouseup",function(b){if(a.moving)return;a.dragging=!1,a._move(b.pageX)}),this.container.bind("vmouseout",function(b){if(a.moving)return;if(!a.dragging)return;if(b.pageX<20||b.pageX>a.max_width-20)a._move(b.pageX),a.dragging=!1})},_del_event:function(){this.container.unbind("vmousemove"),this.container.unbind("vmousedown"),this.container.unbind("vmouseup"),this.container.unbind("vmouseout")},_setTranslateposition:function(b,c){var d,e=null;return a.support.cssTransform3d?d="translate3d("+c+", 0px, 0px)":d="translate("+c+", 0px)",e={"-moz-transform":d,"-webkit-transform":d,"-ms-transform":d,"-o-transform":d,transform:d},b.css(e),b},_moveLeft:function(b,d,e){var f,g="",h=null;return a.support.cssTransform3d?f="translate3d("+d+", 0px, 0px)":f="translate("+d+", 0px)",e!==c&&(g="-webkit-transform "+e/1e3+"s ease"),h={"-moz-transform":f,"-webkit-transform":f,"-ms-transform":f,"-o-transform":f,transform:f},g!==""&&(h["-webkit-transition"]=g),b.css(h),b},_show:function(){this.window_width=a(b).width(),this.max_width=this._get_width(),this.max_height=this._get_height(),this.container.css("height",this.max_height),this.cur_img=a("div").find(".ui-gallery-bg:eq("+this.index+")"),this.prev_img=this.cur_img.prev(),this.next_img=this.cur_img.next(),this._attach(this.index-1,this.prev_img),this._attach(this.index,this.cur_img),this._attach(this.index+1,this.next_img),this.prev_img.length&&this._setTranslateposition(this.prev_img,-this.window_width+"px"),this._moveLeft(this.cur_img,"0px"),this.next_img.length&&this._setTranslateposition(this.next_img,this.window_width+"px")},show:function(){if(!this.images.length)return;this._show(),this._add_event()},_hide:function(){this._detach(this.index-1,this.prev_img),this._detach(this.index,this.cur_img),this._detach(this.index+1,this.next_img)},hide:function(){this._hide(),this._del_event()},_get_width:function(){return a(this.element).width()},_get_height:function(){var c=a(this.element).parentsUntil("ui-page"),d=c.children(".ui-content"),e=
+c.children(".ui-header").outerHeight()||0,f=c.children(".ui-footer").outerHeight()||0,g=parseFloat(d.css("padding-top"))+parseFloat(d.css("padding-bottom")),h=a(b).height()-e-f-g;return h},_create:function(){var c,d=this,e,f=0;a(this.element).wrapInner('<div class="ui-gallery"></div>'),a(this.element).find("img").wrap('<div class="ui-gallery-bg"></div>'),this.container=a(this.element).find(".ui-gallery"),c=a("div").find(".ui-gallery-bg:first");while(c.length)this.images[f]=c.find("img"),c=c.next(),f++;this._detach_all(),e=parseInt(a(this.element).jqmData("index"),10),e||(e=0),e<0&&(e=0),e>=this.images.length&&(e=this.images.length-1),this.index=e,this.align_type=a(this.element).jqmData("vertical-align"),a.extend(this,{_globalHandlers:[{src:a(b),handler:{orientationchange:a.proxy(this,"_orientationHandler"),resize:a.proxy(this,"_resizeHandler")}}]}),a.each(this._globalHandlers,function(a,b){b.src.bind(b.handler)})},_update:function(){var b,c,d;while(this.images_hold.length)b=this.images_hold.shift(),c=a('<div class="ui-gallery-bg"></div>'),d=a('<img src="'+b+'"></div>'),c.append(d),this.container.append(c),this.images.push(d);this._detach_all()},_resizeHandler:function(){var a=this;a.orientationEventFire&&(a.refresh(),a.orientationEventFire=!1)},_orientationHandler:function(){var a=this;a.refresh(),a.orientationEventFire=!0},refresh:function(a){return this._update(),this._hide(),a===c&&(a=this.index),a<0&&(a=0),a>=this.images.length&&(a=this.images.length-1),this.index=a,this._show(),this.index},add:function(a){this.images_hold.push(a)},remove:function(b){var d;b===c&&(b=this.index);if(b<0||b>=this.images.length)return;b==this.index?(d=this.cur_img,this.index==0?this.direction=1:this.index==this.images.length-1&&(this.direction=-1),this.direction<0?(this.cur_img=this.prev_img,this.prev_img=this.prev_img.prev(),this.prev_img.length&&(this._moveLeft(this.prev_img,-this.window_width+"px"),this._attach(b-2,this.prev_img)),this.index--):(this.cur_img=this.next_img,this.next_img=this.next_img.next(),this.next_img.length&&(this._moveLeft(this.next_img,this.window_width+"px"),this._attach(b+2,this.next_img))),this._moveLeft(this.cur_img,"0px",this.options.duration)):b==this.index-1?(d=this.prev_img,this.prev_img=this.prev_img.prev(),this.prev_img.length&&(this._moveLeft(this.prev_img,-this.window_width+"px"),this._attach(b-1,this.prev_img)),this.index--):b==this.index+1?(d=this.next_img,this.next_img=this.next_img.next(),this.next_img.length&&(this._moveLeft(this.next_img,this.window_width+"px"),this._attach(b+1,this.next_img))):d=a("div").find(".ui-gallery-bg:eq("+b+")"),this.images.splice(b,1),d.detach()},empty:function(){this.images.splice(0,this.images.length),this.container.find(".ui-gallery-bg").detach()},length:function(){return this.images.length},value:function(a){if(a===c)return this.index;this.refresh(a)},destory:function(){a(b).unbind("resize",this._resizeHandler),a(b).unbind("orientationchange",this._orientationHandler)}}),a(document).bind("pagecreate create",function(b){a(b.target).find(":jqmData(role='gallery')").gallery()}),a(document).bind("pageshow",function(b){a(b.target).find(":jqmData(role='gallery')").gallery("show")}),a(document).bind("pagebeforehide",function(b){a(b.target).find(":jqmData(role='gallery')").gallery("hide")})}(jQuery,this),function(a,b){var c={};a.widget("tizen.extendablelist",a.mobile.widget,{options:{theme:"s",countTheme:"c",headerTheme:"b",dividerTheme:"b",splitIcon:"arrow-r",splitTheme:"b",inset:!1,id:"",extenditems:50,childSelector:" li",dbtable:"",template:"",loadmore:"tmp_load_more",scrollview:!1,initSelector:":jqmData(role='extendablelist')"},_stylerMouseUp:function(){a(this).addClass("ui-btn-up-s"),a(this).removeClass("ui-btn-down-s")},_stylerMouseDown:function(){a(this).addClass("ui-btn-down-s"),a(this).removeClass("ui-btn-up-s")},_stylerMouseOver:function(){a(this).toggleClass("ui-btn-hover-s")},_stylerMouseOut:function(){a(this).toggleClass("ui-btn-hover-s"),a(this).addClass("ui-btn-up-s"),a(this).removeClass("ui-btn-down-s")},_pushData:function(b){var c=this.options,d=this,e=0,f=a("#"+b),g=c.extenditems>d._numItemData-d._lastIndex?d._numItemData-d.lastIndex:c.extenditems,h;for(e=0;e<g;e++)h=f.tmpl(d._itemData(e)),a(c.id).append(a(h).attr("id","li_"+e)),a(c.id+">"+c.childSelector).addClass("ui-btn-up-s").bind("mouseup",d._stylerMouseUp).bind("mousedown",d._stylerMouseDown).bind("mouseover",d._stylerMouseOver).bind("mouseout",d._stylerMouseOut),d._lastIndex+=1;a(c.id).trigger("create")},_loadmore:function(b){var c=b.data,d=c.options,e=0,f=a("#"+d.template),g=d.extenditems>c._numItemData-c._lastIndex?c._numItemData-c._lastIndex:d.extenditems,h,i,j;a("#load_more_message").remove();for(e=0;e<g;e++)h=f.tmpl(c._itemData(c._lastIndex)),a(d.id).append(a(h).attr("id","li_"+c._lastIndex)),c._lastIndex+=1;c._numItemData>c._lastIndex&&(f=a("#"+d.loadmore),i=c._numItemData-c._lastIndex,j=d.extenditems<=i?d.extenditems:i,h=f.tmpl({NUM_MORE_ITEMS:j}),a(d.id).append(a(h).attr("id","load_more_message").css("min-height","37px"))),a(d.id).trigger("create"),a(d.id).extendablelist("refresh")},recreate:function(a){this._create({itemData:function(b){return a[b]},numItemData:a.length})},_initList:function(b){var c=this,d=this.options,e,f,g,h;c._lastIndex<=0&&(c._pushData(d.template),c._numItemData>c._lastIndex?(e=a("#"+d.loadmore),f=c._numItemData-c._lastIndex,g=d.extenditems<=f?d.extenditems:f,h=e.tmpl({NUM_MORE_ITEMS:g}),a(d.id).append(a(h).attr("id","load_more_message").css("min-height","37px")),a("#load_more_message").live("click",c,c._loadmore)):(a("#load_more_message").die(),a("#load_more_message").remove())),d.childSelector==" ul"&&a(d.id+" ul").swipelist(),a(d.id).trigger("create"),c.refresh(!0)},create:function(){var a=this.options;this._create.apply(this,arguments)},_create:function(b){var c=this,d=this.options,e=this.element,f;c.destroy(),a.extend(this,{_itemData:function(a){return null},_numItemData:0,_cacheItemData:function(a,b){},_lastIndex:0}),c.element.addClass(function(a,b){return b+" ui-listview ui-extendable-list-container"+(c.options.inset?" ui-listview-inset ui-corner-all ui-shadow ":"")}),d.id="#"+e.attr("id"),e.data("extenditems")&&(d.extenditems=parseInt(e.data("extenditems"),10)),a(d.id).bind("pagehide",function(b){a(d.id).empty()}),a(".ui-scrollview-clip").size()>0?d.scrollview=!0:d.scrollview=!1;if(b){if(!c._loadData(b))return}else{console.warn("WARNING: The data interface of extendable list is changed. \nOld data interface(data-dbtable) is still supported, but will be removed in next version. \nPlease fix your code soon!");if(!a(d.id).hasClass("elLoadSuccess")){console.warn("No elLoadSuccess class");return}f=e.jqmData("dbtable"),d.dbtable=window[f],d.dbtable||(d.dbtable={}),c._itemData=function(a){return d.dbtable[a]},c._numItemData=d.dbtable.length}e.data("template")&&(d.template=e.data("template"),e.data("swipelist")==1?d.childSelector=" ul":d.shildSelector=" li"),c._initList(b)},_loadData:function(a){var b=this;if(!a.itemData||typeof a.itemData!="function")return!1;b._itemData=a.itemData;if(!a.numItemData)return!1;if(typeof a.numItemData=="function")b._numItemData=a.numItemData();else{if(typeof a.numItemData!="number")return!1;b._numItemData=a.numItemData}return!0},destroy:function(){var b=this.options,c=0,d=0;a(b.id).empty(),a("#load_more_message").die()},_itemApply:function(b,c){var d=c.find(".ui-li-count");d.length&&c.addClass("ui-li-has-count"),d.addClass("ui-btn-up-"+(b.jqmData("counttheme")||this.options.countTheme)+" ui-btn-corner-all"),c.find("h1, h2, h3, h4, h5, h6").addClass("ui-li-heading").end().find("p, dl").addClass("ui-li-desc").end().find(">img:eq(0), .ui-link-inherit>img:eq(0)").addClass("ui-li-thumb").each(function(){c.addClass(a(this).is(".ui-li-icon")?"ui-li-has-icon":"ui-li-has-thumb")}).end().find(".ui-li-aside").each(function(){var b=a(this);b.prependTo(b.parent())})},_removeCorners:function(a,b){var c="ui-corner-top ui-corner-tr ui-corner-tl",d="ui-corner-bottom ui-corner-br ui-corner-bl";a=a.add(a.find(".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb")),b==="top"?a.removeClass(c):b==="bottom"?a.removeClass(d):a.removeClass(c+" "+d)},_refreshCorners:function(a){var b,c,d,e;this.options.inset&&(b=this.element.children("li"),c=a?b.not(".ui-screen-hidden"):b.filter(":visible"),this._removeCorners(b),d=c.first().addClass("ui-corner-top"),d.add(d.find(".ui-btn-inner")).find(".ui-li-link-alt").addClass("ui-corner-tr").end().find(".ui-li-thumb").not(".ui-li-icon").addClass("ui-corner-tl"),e=c.last().addClass("ui-corner-bottom"),e.add(e.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"))},refresh:function(b){this.parentPage=this.element.closest(".ui-page"),this._createSubPages();var c=this.options,d=this.element,e=this,f=d.jqmData("dividertheme")||c.dividerTheme,g=d.jqmData("splittheme"),h=d.jqmData("spliticon"),i=d.children("li"),j=a.support.cssPseudoElement||!a.nodeName(d[0],"ol")?0:1,k,l,m,n,o,p,q,r,s,t;j&&d.find(".ui-li-dec").remove();for(s=0,t=i.length;s<t;s++){k=i.eq(s),l="ui-li";if(b||!k.hasClass("ui-li"))m=k.jqmData("theme")||c.theme,n=k.children("a"),n.length?(r=k.jqmData("icon"),k.buttonMarkup({wrapperEls:"div",shadow:!1,corners:!1,iconpos:"right",icon:!1,theme:m}),r!=0&&n.length==1&&k.addClass("ui-li-has-arrow"),n.first().addClass("ui-link-inherit"),n.length>1&&(l+=" ui-li-has-alt",o=n.last(),p=g||o.jqmData("theme")||c.splitTheme,o.appendTo(k).attr("title",o.getEncodedText()).addClass("ui-li-link-alt").empty().buttonMarkup({shadow:!1,corners:!1,theme:m,icon:!1,iconpos:!1}).find(".ui-btn-inner").append(a("<span />").buttonMarkup({shadow:!0,corners:!0,theme:p,iconpos:"notext",icon:h||o.jqmData("icon")||c.splitIcon})))):k.jqmData("role")==="list-divider"?(l+=" ui-li-divider ui-btn ui-bar-"+f,k.attr("role","heading"),j&&(j=1)):l+=" ui-li-static ui-body-"+m;j&&l.indexOf("ui-li-divider")<0&&(q=k.is(".ui-li-static:first")?k:k.find(".ui-link-inherit"),q.addClass("ui-li-jsnumbering").prepend("<span class='ui-li-dec'>"+j++ +". </span>")),k.add(k.children(".ui-btn-inner")).addClass(l),e._itemApply(d,k)}this._refreshCorners(b)},_idStringEscape:function(a){return a.replace(/\W/g,"-")},_createSubPages:function(){var b=this.element,d=b.closest(".ui-page"),e=d.jqmData("url"),f=e||d[0][a.expando],g=b.attr("id"),h=this.options,i="data-"+a.mobile.ns,j=this,k=d.find(":jqmData(role='footer')").jqmData("id"),l,m;typeof c[f]=="undefined"&&(c[f]=-1),g=g||++c[f],a(b.find("li>ul, li>ol").toArray().reverse()).each(function(c){var d=this,f=a(this),j=f.attr("id")||g+"-"+c,m=f.parent(),n,p=n.first().getEncodedText(),q=(e||"")+"&"+a.mobile.subPageUrlKey+"="+j,r=f.jqmData("theme")||h.theme,s=f.jqmData("counttheme")||b.jqmData("counttheme")||h.countTheme,t,u;n=a(f.prevAll().toArray().reverse()),n=n.length?n:a("<span>"+a.trim(m.contents()[0].nodeValue)+"</span>"),l=!0,t=f.detach().wrap("<div "+i+"role='page' "+i+"url='"+q+"' "+i+"theme='"+r+"' "+i+"count-theme='"+s+"'><div "+i+"role='content'></div></div>").parent().before("<div "+i+"role='header' "+i+"theme='"+h.headerTheme+"'><div class='ui-title'>"+p+"</div></div>").after(k?a("<div "+i+"role='footer' "+i+"id='"+k+"'>"):"").parent().appendTo(a.mobile.pageContainer),t.page(),u=m.find("a:first"),u.length||(u=a("<a/>").html(n||p).prependTo(m.empty())),u.attr("href","#"+q)}).extendablelist(),l&&d.is(":jqmData(external-page='true')")&&d.data("page").options.domCache===!1&&(m=function(b,c){var f=c.nextPage,g;c.nextPage&&(g=f.jqmData("url"),g.indexOf(e+"&"+a.mobile.subPageUrlKey)!==0&&(j.childPages().remove(),d.remove()))},d.unbind("pagehide.remove").bind("pagehide.remove",m))},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.tizen.extendablelist.prototype.options.initSelector,b.target).extendablelist()})}(jQuery),function(a,b){a.widget("tizen.fastscroll",a.mobile.widget,{options:{initSelector:":jqmData(fastscroll)"},_primaryLanguage:null,_secondLanguage:null,_create:function(){var b=this.element,c=this,d,e=b.closest(':jqmData(role="page")'),f;this.scrollview=b.closest(".ui-scrollview-clip"),this.shortcutsContainer=a('<div class="ui-fastscroll" aria-label="Fast scroll bar, double tap to fast scroll mode" tabindex="0"/>'),this.shortcutsList=a('<ul aria-hidden="true"></ul>'),this.scrollview.append(a('<div class="ui-fastscroll-popup"></div>')),d=this.scrollview.find(".ui-fastscroll-popup"),this.shortcutsContainer.append(this.shortcutsList),this.scrollview.append(this.shortcutsContainer),this.lastListItem=b.children().last(),this.scrollview.find(".ui-scrollbar").hide(),this.jumpToDivider=function(b){var d=a(b).position().top,e=c.lastListItem.outerHeight(!0)+c.lastListItem.position().top,f=c.scrollview.height(),g=e-f,h;d=d>g?g:d,d=Math.max(d,0),c.scrollview.scrollview("scrollTo",0,-d),h=c.scrollview.offset()},this.shortcutsList.bind("touchstart mousedown vmousedown touchmove vmousemove vmouseover",function(b){var d=a.mobile.tizen.targetRelativeCoordsFromEvent(b),e=c.shortcutsList.offset();b.target.tagName.toLowerCase()==="li"&&(d.x+=a(b.target).offset().left-e.left,d.y+=a(b.target).offset().top-e.top),b.target.tagName.toLowerCase()==="span"&&(d.x+=a(b.target).parent().offset().left-e.left,d.y+=a(b.target).parent().offset().top-e.top),c.shortcutsList.find("li").each(function(){var b=a(this);a(b).removeClass("ui-fastscroll-hover").removeClass("ui-fastscroll-hover-up").removeClass("ui-fastscroll-hover-down")}),c.shortcutsList.find("li").each(function(){var b=a(this),f=b.offset().left-e.left,g=b.offset().top-e.top,h=f+Math.abs(b.outerWidth(!0)),i=g+Math.abs(b.outerHeight(!0));return d.x>=f&&d.x<=h&&d.y>=g&&d.y<=i?(c._hitItem(b),!1):!0}),b.preventDefault(),b.stopPropagation()}).bind("touchend mouseup vmouseup vmouseout",function(){d.hide(),a(".ui-fastscroll-hover").removeClass("ui-fastscroll-hover"),a(".ui-fastscroll-hover-first-item").removeClass("ui-fastscroll-hover-first-item"),a(".ui-fastscroll-hover-up").removeClass("ui-fastscroll-hover-up"),a(".ui-fastscroll-hover-down").removeClass("ui-fastscroll-hover-down")}),e&&!e.is(":visible")?e.bind("pageshow",function(){c.refresh()}):c.refresh(),b.bind("updatelayout",function(){c.refresh()}),a(window).unbind(".fastscroll").bind("resize.fastscroll",function(a){c.refresh()})},_hitItem:function(b){var c=this,d=c.scrollview.find(".ui-fastscroll-popup");typeof b.data("divider")!="undefined"&&c.jumpToDivider(a(b.data("divider"))),b.text()!=="."?d.text(b.text()).css({marginLeft:-(d.width()/2),marginTop:-(d.height()/2),padding:d.css("paddingTop")}).width(d.height()).show():d.hide(),a(b).addClass("ui-fastscroll-hover"),b.index()===0&&a(b).addClass("ui-fastscroll-hover-first-item"),b.index()>0&&a(b).siblings().eq(b.index()-1).addClass("ui-fastscroll-hover-up"),a(b).siblings().eq(b.index()).addClass("ui-fastscroll-hover-down")},_focusItem:function(b){var c=this,d=c.scrollview.find(".ui-fastscroll-popup");b.focusin(function(a){c._hitItem(b)}).focusout(function(b){d.hide(),a(".ui-fastscroll-hover").removeClass("ui-fastscroll-hover"),a(".ui-fastscroll-hover-first-item").removeClass("ui-fastscroll-hover-first-item"),a(".ui-fastscroll-hover-up").removeClass("ui-fastscroll-hover-up"),a(".ui-fastscroll-hover-down").removeClass("ui-fastscroll-hover-down")})},_contentHeight:function(){var b=this,c=a(".ui-scrollview-clip"),d=null,e=null,f=0,g=a(window).height();return c.hasClass("ui-content")?(f=parseInt(c.css("padding-top"),10),g-=f||0,f=parseInt(c.css("padding-bottom"),10),g-=f||0,d=c.siblings(".ui-header:visible"),e=c.siblings(".ui-footer:visible"),d&&(d.outerHeight(!0)===null?g-=a(".ui-header").outerHeight()||0:g-=d.outerHeight(!0)),e&&(g-=e.outerHeight(!0))):g=c.height(),g},_omit:function(a,b){var c=parseInt((b-1)/2,10),d=a-b,e=[],f=[],g,h,i,j;if(b<3||a<=b)return;d>=c?(i=2,h=1,g=c):(i=b/(d+1),h=i,g=d);for(j=0;j<g;j++)e.push(parseInt(h,10)),h+=i;for(j=0;j<b;j++)f.push(1);for(j=0;j<d;j++)f[e[j%c]]++;return f},indexString:function(a){var b=this,c=[];if(typeof a==" undefined")return b._primaryLanguage+":"+b._secondLanguage;c=a.split(":"),b._primaryLanguage=c[0],c.length===2&&(b._secondLanguage=c[1])},refresh:function(){var b=this,c=b._primaryLanguage?b._primaryLanguage.replace(/,/g,""):null,d=b._secondLanguage?b._secondLanguage.replace(/,/g,""):null,e=b._contentHeight(),f=a('<li tabindex="0" aria-label="double to move Number list"><span aria-hidden="true">#</span><span aria-label="Number"/></li>'),g=0,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B;h=function(b,c){a(c).text()===w&&k.data("divider",c).bind("vclick",function(b){a(c).next().focus()})},b.shortcutsList.find("li").remove(),s=b.element.find(".ui-li-divider"),t=b.element.find("li").not(".ui-li-divider"),s=s.filter(":visible"),t=t.filter(":visible");if(s.length<2){b.shortcutsList.hide();return}b.shortcutsList.show(),b.lastListItem=t.last(),b.shortcutsList.append(f),b._focusItem(f);if(c!==null){q=parseInt(f.css("padding"),10),p=f.height()+q*2,n=parseInt(e/p-1,10),o=c.length,n=d?n-2:n;if(n<3){f.remove();return}r=b._omit(o,n);for(B=0;B<c.length;B++)w=c.charAt(B),k=a('<li tabindex="0" aria-label="double to move '+w+' list">'+w+"</li>"),b._focusItem(k),s.each(h),typeof r!="undefined"&&r[g]>1&&(k=a("<li>.</li>"),B+=r[g]-1),f.before(k),g++;if(d!==null){x=d.length-1,y=[],y.push(d.charAt(0)),y.push(d.charAt(x));for(B=0;B<y.length;B++)w=y[B],k=a('<li tabindex="0" aria-label="double to move '+w+' list">'+w+"</li>"),b._focusItem(k),s.each(h),f.before(k)}}else s.each(function(c,d){w=a(d).text(),k=a('<li tabindex="0" aria-label="double to move '+w+' list">'+w+"</li>"),k.data("divider",d),b._focusItem(k),f.before(k)});i=b.shortcutsContainer.outerHeight(),u=e-i,j=b.shortcutsList.children(),A=parseInt(u/j.length,10),v=u-j.length*A,u>0&&j.each(function(b,c){z=a(c).height()+A,v!==0&&(z+=1,v-=1),a(c).css({height:z,lineHeight:z+"px"})}),l=s.first().position().top,b.shortcutsContainer.css("top",l),m=l+b.shortcutsContainer.outerHeight()+"px",b.scrollview.css("min-height",m)}}),a(document).bind("pagecreate create",function(b){a(a.tizen.fastscroll.prototype.options.initSelector,b.target).not(":jqmData(role='none'), :jqmData(role='nojs')").fastscroll()})}(jQuery),function(a,b,c,d){a.widget("tizen.splitview",a.mobile.widget,{options:{fixed:!1,dividerVertical:!0,ratio:[],initSelector:":jqmData(role='splitview')"},_create:function(){var c=this,d=c.element,e=c.options,f=d.children(".ui-pane"),g=f.length,h=[],i=[],j=this.element.attr("data-ratio"),k=[0,0],l=null,m=0;if(g!==2){if(g<2)for(m=g;m<2;++m)c._addEmptyPanes();else f.slice(2).remove();f=d.children(".ui-pane"),g=f.length}h[0]=a("<a href='#' class='ui-spliter' aria-label='Drag scroll, double tap and move to adjust split area'></a>").insertAfter(f[0]),i[0]=a("<div class='ui-spliter-bar'></div>").appendTo(h[0]),a("<div class='ui-spliter-handle'></div>").appendTo(i[0]),a.extend(this,{moveTarget:null,moveData:{},spliters:h,spliterBars:i,panes:f,containerSize:k,touchStatus:!1,minPaneWidth:50,savedRatio:[]}),c._bindTouchEvents(),c._convertRatio(j,f.length),d.addClass("ui-splitview ui-direction-"+c._direction(e.dividerVertical)),d.parent().closest(".ui-splitview").length&&c._getContainerSize(d[0].style.width,d[0].style.height)&&c._layout(),a(b).bind("pagechange",function(a){d.parent().closest(".ui-splitview").length||c._getContainerSize(d[0].style.width,d[0].style.height)&&c._layout()}).resize(function(){l&&clearTimeout(l),l=setTimeout(function(){d.parent().closest(".ui-splitview").length||c._getContainerSize(d[0].style.width,d[0].style.height)&&c._layout()},250)})},_addEmptyPanes:function(){var b=this,c=b.element,d=b.options,e=c.children(".ui-pane"),f=a.support.scrollview?"data-scroll='y'":"",g=a("<div class='ui-pane' "+f+"></div>");f.length&&g.scrollview({direction:"y"}),e.length?e.last().after(g):c.append(g)},_direction:function(a){return a?"horizontal":"vertical"},_isStyleSpecified:function(a){return typeof a!="undefined"&&a.length},_getContainerSize:function(a,b){var c=this,d=c.element,e=c._isStyleSpecified(a),f=c._isStyleSpecified(b);return c.containerSize[0]=e?d.outerWidth(!0):c._parentWidth(),c.containerSize[1]=f?d.outerHeight(!0):c._parentHeight(),!c.containerSize[0]||!c.containerSize[1]?!1:!0},_parentWidth:function(){var c=this.element.parent();return!c&&typeof c=="undefined"&&!c.length?a(b).width():c.width()},_parentHeight:function(){var c=this.element.parent(),d="",e=!1,f=0;while(c&&typeof c!="undefined"&&c.length){if(typeof c[0].style!="undefined"){d=c[0].style.height,e=typeof d!="undefined"&&d.length;if(e){f=c.height();break}}c=c.parent()}return e||(f=a(b).height()),f},_convertRatio:function(b,c){var d=this,e=[],f=0,g=typeof b,h=null,i;for(i=0;i<c;++i)e.push(0);switch(g){case"number":c&&(e[0]=b);break;case"string":h=b.split(","),f=Math.min(h.length,c);for(i=0;i<f;++i)e[i]=parseFloat(h[i]);break;case"object":if(!a.isArray(b))break;f=Math.min(b.length,c);for(i=0;i<f;++i)g=typeof b[i],e[i]=g==="string"?parseFloat(b[i]):g==="number"?b[i]:0}d.options.ratio=e,d._adjustRatio(c)},_adjustRatio:function(a){var b=this,c=b.options.ratio,d=0,e=0,f=0,g=0,h=0,i;if(!a){b.options.ratio=[];return}for(i in c)d+=c[i];if(d!==1){e=1-d,f=e/a;for(i in c)f>=0?(c[i]+=f,e=Math.max(0,e-f)):(h+=f,g=Math.max(h,c[i]*-1),c[i]=Math.max(0,c[i]+g),e=Math.min(0,e-g),h-=g);if(e)if(e>0)c[c.length-1]+=e;else for(i=c.length-1;i>=0;--i){g=Math.max(e,c[i]*-1),c[i]=Math.max(0,c[i]+g),e=Math.min(0,e-g);if(!e)break}b.options.ratio=c}},_setOption:function(b,c){var d=this,e=d.options[b];if(e===c)return;a.Widget.prototype._setOption.apply(this,arguments);switch(b){case"fixed":d._fixed(c);break;case"dividerVertical":d._dividerVertical(c);break;case"ratio":d._ratio(c)}},_subtractDiffWidth:function(a,b){var c=this;return a<=c.minPaneWidth?{width:a,diff:b}:(a+=b,a>=c.minPaneWidth?{width:a,diff:0}:{width:c.minPaneWidth,diff:a-c.minPaneWidth})},_initRatio:function(b,c,d,e){var f=this,g=0,h=[],i=0,j=c.length,k,l;c.each(function(b){var c=a(this);h.push(d?c.width():c.height()),g+=h[b]}),i=e-g;if(!i)return h;if(i>0)h[b?0:j-1]+=i;else if(b)for(l=0;l<j;++l){k=f._subtractDiffWidth(h[l],i),h[l]=k.width,i=k.diff;if(!i)break}else for(l=j-1;l>=0;--l){i=f._subtractDiffWidth(h[l],i),h[l]=k.width,i=k.diff;if(!i)break}g=0;for(l in h)g+=h[l];for(l in f.options.ratio)f.options.ratio[l]=h[l]/g;return h},_horizontalBoundary:function(){var a=this,b=a.element;return b.outerWidth(!0)-b.width()},_verticalBoundary:function(){var a=this,b=a.element;return b.outerHeight(!0)-b.height()},_boundary:function(a){var c=this,d=c.element,e=b.getComputedStyle(d[0],null),f=parseFloat(e["margin"+a]),g=parseFloat(e["border"+a+"Width"]),h=parseFloat(e["padding"+a]);return{margin:f,border:g,padding:h}},_layout:function(b,c){var d=this,e=d.element,f=d.options,g=f.dividerVertical,h=d.panes,i=d.spliters,j=d.spliterBars,k=d.spliterBars.length?a(j[0]):null,l=k?g?k.outerWidth():k.outerHeight():0,m=k?g?k.outerWidth(!0)-k.outerWidth():k.outerHeight(!0)-k.outerHeight():0,n=h.length,o=0,p=l*(n-1),q=d.containerSize[0],r=d.containerSize[1],s=q-d._horizontalBoundary(),t=r-d._verticalBoundary(),u=g?t:s,v=g?s-p:t-p,w=[],x=0,y=null;typeof b=="undefined"&&(b=!1),b&&typeof c=="undefined"&&(c=!1),e.css({"min-width":s,"min-height":t}),b&&(w=d._initRatio(c,h,g,v)),o=v,h.each(function(c){var e=a(this),f=b?w[c]:Math.floor(v*d.options.ratio[c]),i=c?h.eq(c-1):null,j=0,k=0,m=0,p=0;o-=f,c===n-1&&(f=Math.max(Math.min(f,d.minPaneWidth),f+o)),x+=f,i?(j=parseInt(i.css(g?"left":"top"),10),j+=g?i.width():i.height(),j+=l):(p=d._boundary(g?"Left":"Top"),j=p.padding),k=g?f:u,m=g?u:f,e.css({width:k,height:m}),e.css(g?"left":"top",j)}),h.each(function(b){var c=a(this),e=g?c.width():c.height();d.options.ratio[b]=e/x}),a.each(i,function(b){var c=a(this),d=h.eq(b),e=c.children(".ui-spliter-bar"),f=e.children(".ui-spliter-handle"),i=0;g?(i=parseInt(d.css("left"),10)+d.width()-m,c.outerHeight(u).css("left",i)):(i=parseInt(d.css("top"),10)+d.height()-m,c.outerWidth(u).css("top",i)),typeof e!="undefined"&&e&&(g?e.outerHeight(u):e.outerWidth(u)),typeof f!="undefined"&&f&&(g?f.css("top",(u-l)/2):f.css("left",(u-l)/2))}),y=e.find(":jqmData(role='splitview'):first");if(!y.length)return;y=y.data("splitview"),y&&y._refresh()},_bindTouchEvents:function(){var b=this,c=b.element,d=b.panes,e=b.spliters;a.each(e,function(c){var d=a(this);b._bindSpliterTouchEvents(d)}),c.mouseleave(function(){b.touchStatus&&c.children(".ui-spliter").trigger("vmouseup")}),d.bind("vmousedown",function(){c.find(".ui-spliter").trigger("vmouseup")})},_bindSpliterTouchEvents:function(b){var d=this,e=d.element,f=d.options;b.bind("vmousedown",{e:b},function(b){if(d.options.fixed)return;var g=b.data.e,h=g.prev(),i=g.next(),j=h.find(":jqmData(role='splitview'):first"),k=i.find(":jqmData(role='splitview'):first"),l=f.dividerVertical,m=l?a(d.spliterBars[0]).outerWidth():a(d.spliterBars[0]).outerHeight();e.closest(".ui-page").find(".ui-spliter").trigger("vmouseup"),d.moveTarget=g,d.moveData={spliterWidth:m||0,prevPane:h,nextPane:i,splitviewInPrev:j,splitviewInNext:k,prevPanePos:parseInt(h.css(l?"left":"top"),10)||0,prevPaneWidth:parseInt(h.css(l?"width":"height"),10)||0,nextPanePos:parseInt(i.css(l?"left":"top"),10)||0,nextPaneWidth:parseInt(i.css(l?"width":"height"),10)||0,targetPos:parseInt(g.css(l?"left":"top"),10)||0,pagePos:l?b.pageX:b.pageY},g.addClass("ui-spliter-active"),a(c).bind("vmousemove.splitview",function(a){if(!d.touchStatus)return;d._drag(a),a.preventDefault(),a.stopPropagation()}).bind("vmouseup.splitview",function(a){if(!d.touchStatus)return;d._stop(a),a.preventDefault(),a.stopPropagation(),d.touchStatus=!1}),b.preventDefault(),b.stopPropagation(),d.touchStatus=!0})},_drag:function(a){if(!this.moveData||typeof this.moveData=="undefined")return;var b=this,c=b.element,d=b.options,e=d.dividerVertical,f=b.moveData,g=b.moveTarget,h=f.prevPane,i=f.nextPane,j=f.splitviewInPrev,k=f.splitviewInNext,l=f.spliterWidth,m=null,n=null,o=null,p=null,q=null,r=e?a.pageX:a.pageY,s=null;m=r-f.pagePos,m>0?m=Math.min(Math.max(f.nextPaneWidth-b.minPaneWidth,0),m):m=Math.max(Math.max(f.prevPaneWidth-b.minPaneWidth,0)*-1,m),o=f.nextPanePos+m,p=Math.max(f.prevPaneWidth+m,0),q=Math.max(f.nextPaneWidth-m,0),n=f.targetPos+m,g.css(e?{left:n}:{top:n}),h.css(e?{width:p}:{height:p}),i.css(e?{width:q,left:o}:{height:q,top:o}),j.length&&(s=j.data("splitview"),s._refresh(!0,!1)),k.length&&(s=k.data("splitview"),s._refresh(!0,!0))},_stop:function(b){if(!this.moveData||typeof this.moveData=="undefined")return;var d=this,e=d.element,f=d.options,g=d.panes,h=g.length,i=f.dividerVertical,j=d.moveData,k=d.moveTarget,l=j.prevPane,m=j.nextPane,n=j.splitviewInPrev,o=j.splitviewInNext,p=j.spliterWidth,q=p*(h-1),r=null,s=null,t=null,u=null,v=null,w=e.css("display"),x=d.containerSize[0],y=d.containerSize[1],z=x-d._horizontalBoundary(),A=y-d._verticalBoundary(),B=i?z-q:A-q,C=0;a(c).unbind("vmousemove.splitview vmouseup.splitview"),k.removeClass("ui-spliter-active"),g.each(function(b){var c=a(this),d=i?c.width():c.height();C+=d}),g.each(function(b){var c=a(this),e=i?c.width():c.height();d.options.ratio[b]=e/C}),d.moveData=null},_fixed:function(b){var c=this,d=c.spliters;a.each(d,function(c){var d=a(this);b?d.addClass("ui-fixed"):d.removeClass("ui-fixed")}),c._layout()},_dividerVertical:function(a){var b=this,c=b.element,d=a,e=null,f=null,g=null,h=null;e=c.children(".ui-pane"),f=c.children(".ui-spliter"),g=f.children(".ui-spliter-bar"),h=g.children(".ui-spliter-handle"),c.removeClass("ui-direction-vertical"),c.removeClass("ui-direction-horizontal"),c.addClass("ui-splitview ui-direction-"+b._direction(d)),e.css({left:"",top:"",width:"",height:""}),f.css({left:"",top:"",width:"",height:""}),g.css({width:"",height:""}),h.css({left:"",top:""}),b._getContainerSize(c[0].style.width,c[0].style.height)&&b._layout()},_ratio:function(a){var b=this,c=b.element,d=c.children(".ui-pane"),e=d.length;b._convertRatio(a,e),b._layout()},_refresh:function(a,b){var c=this,d=c.element;typeof a=="undefined"&&(a=!1),a&&typeof b=="undefined"&&(b=!1),c._getContainerSize(d[0].style.width,d[0].style.height)&&c._layout(a,b)},pane:function(a,b){if(typeof a!="string")return null;var c=this,d=c.element,e=d.children(a),f=null,g=null;if(!e.hasClass("ui-pane"))return null;if(typeof b=="undefined"||!b)return e.contents();if(e.hasClass("ui-scrollview-clip")){e.scrollview("scrollTo",0,0,0),f=e.children(".ui-scrollview-view");if(!f.length)return null}else f=e;g=b.parent();if(g.length&&g[0]===f[0])return;f.empty().append(b).trigger("create"),f.fadeIn("fast")},maximize:function(a){if(typeof a!="string")return;var b=this,c=b.element,d=b.panes,e=c.children(a);if(!e.hasClass("ui-pane"))return;b.savedRatio=b.options.ratio.slice(),b.options.ratio=[],d.each(function(a){b.options.ratio.push(this===e[0]?1:0)}),b._layout()},restore:function(){var a=this;if(a.savedRatio.length===0)return;a.options.ratio=a.savedRatio.slice(),a._adjustRatio(a.panes.length),a._layout()}}),a(c).bind("pagecreate create",function(b){a.tizen.splitview.prototype.enhanceWithin(b.target)})}(jQuery,window,document),function(a,b){a(document).bind("pagecreate create",function(b){a(":jqmData(role='label')",b.target).not(":jqmData(role='none'), :jqmData(role='nojs')").each(function(){a(this).addClass("jquery-mobile-ui-label").html(a("<span>",{"class":"jquery-mobile-ui-label-text"}).text(a(this).text()))})})}(jQuery),ensureNS("jQuery.mobile.tizen.clrlib"),jQuery.extend(jQuery.mobile.tizen.clrlib,{nearestInt:function(a){var b=Math.floor(a);return a-b>.5?b+1:b},HTMLToRGB:function(a){return a="#"==a.charAt(0)?a.substring(1):a,[a.substring(0,2),a.substring(2,4),a.substring(4,6)].map(function(a){return parseInt(a,16)/255})},RGBToHTML:function(a){return"#"+a.map(function(a){var b=a*255,c=Math.floor(b);return b=b-c>.5?c+1:c,b=(b<16?"0":"")+(b&255).toString(16),b}).join("")},HSLToRGB:function(a){var b=a[0]/360,c=a[1],d=a[2];if(0===c)return[d,d,d];var e=d<.5?d*(1+c):d+c-d*c,f=2*d-e,g={r:b+1/3,g:b,b:b-1/3};return g.r=g.r<0?g.r+1:g.r>1?g.r-1:g.r,g.g=g.g<0?g.g+1:g.g>1?g.g-1:g.g,g.b=g.b<0?g.b+1:g.b>1?g.b-1:g.b,ret=[6*g.r<1?f+(e-f)*6*g.r:2*g.r<1?e:3*g.r<2?f+(e-f)*(2/3-g.r)*6:f,6*g.g<1?f+(e-f)*6*g.g:2*g.g<1?e:3*g.g<2?f+(e-f)*(2/3-g.g)*6:f,6*g.b<1?f+(e-f)*6*g.b:2*g.b<1?e:3*g.b<2?f+(e-f)*(2/3-g.b)*6:f],ret},HSVToRGB:function(a){return $.mobile.tizen.clrlib.HSLToRGB($.mobile.tizen.clrlib.HSVToHSL(a))},RGBToHSV:function(a){var b,c,d,e,f,g,h=a[0],i=a[1],j=a[2];return b=Math.min(h,Math.min(i,j)),c=Math.max(h,Math.max(i,j)),d=c-b,e=0,f=0,g=c,d>1e-5&&(f=d/c,h===c?e=(i-j)/d:i===c?e=2+(j-h)/d:e=4+(h-i)/d,e*=60,e<0&&(e+=360)),[e,f,g]},HSVToHSL:function(a){var b=a[2],c=a[1]*b,d=b-c,e=b+d,f=e/2,g=f<.5?e:2-b-d;return[a[0],0==g?0:c/g,f]},RGBToHSL:function(a){return $.mobile.tizen.clrlib.HSVToHSL($.mobile.tizen.clrlib.RGBToHSV(a))}}),function(a,b){ensureNS("jQuery.mobile.tizen"),jQuery.extend(jQuery.mobile.tizen,{_widgetPrototypes:{},loadPrototype:function(c,d){function h(a){return a.replace(/\$\{FRAMEWORK_ROOT\}/g,g)}function i(a,b){var c;for(var d in a)typeof a[d]=="string"?(c=a[d],a[d]=b.find(a[d]),c.substring(0,1)==="#"&&a[d].removeAttr("id")):typeof a[d]=="object"&&(a[d]=i(a[d],b));return a}var e=b,f=a("script[data-framework-version][data-framework-root][data-framework-theme]"),g=f.attr("data-framework-root")+"/"+f.attr("data-framework-version")+"/";if(typeof c=="string"){e=a.mobile.tizen._widgetPrototypes[c];if(e===b){var j=g+"proto-html"+"/"+f.attr("data-framework-theme");a.ajax({url:j+"/"+c+".prototype.html",async:!1,dataType:"html"}).success(function(b,d,f){a.mobile.tizen._widgetPrototypes[c]=a("<div>").html(h(b)),e=a.mobile.tizen._widgetPrototypes[c].clone()})}}else c.key!==b&&(e=a.mobile.tizen._widgetPrototypes[c.key]),e===b?c.proto!==b&&(e=a("<div>").html(h(c.proto)),c.key!==b&&(a.mobile.tizen._widgetPrototypes[c.key]=e.clone())):e=e.clone();return e!=b&&d!=b&&(e=i(d,e)),e}})}(jQuery),function(a,b,c,d){function g(a){var c=b.FileError,d="";switch(a.code){case c.QUOTA_EXCEEDED_ERR:d="QUOTA_EXCEEDED_ERR";break;case c.NOT_FOUND_ERR:d="NOT_FOUND_ERR";break;case c.SECURITY_ERR:d="SECURITY_ERR";break;case c.INVALID_MODIFICATION_ERR:d="INVALID_MODIFICATION_ERR";break;case c.INVALID_STATE_ERR:d="INVALID_STATE_ERR";break;default:d="Unknown Error"}return d}function h(a){var b=a.replace(/\//gi,"_");return b}function i(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=a/c,k=b/d,l=Math.max(j,k);return e?(f=c,g=d):(l>1?(f=a/l,g=b/l):(f=a,g=b),h=(c-f)/2,i=(d-g)/2),{w:f,h:g,x:h,y:i}}function j(a,b,c,d){var g,h;return e.width=b,e.height=c,g=i(a.width,a.height,b,c,d),f.fillStyle="#000000",f.fillRect(0,0,b,c),f.drawImage(a,g.x,g.y,g.w,g.h),h=e.toDataURL(),h}var e=c.createElement("canvas"),f=e.getContext("2d");a.imageloader={_grantedBytes:1048576,getThumbnail:function(a,b){function e
+(a){var c=g(a);b&&b(c==="NOT_FOUND_ERR"?c:null)}var c,d;c=h(a);try{d=localStorage.getItem(c),b&&b(d===null?"NOT_FOUND_ERR":d)}catch(f){b&&b(f.type==="non_object_property_load"?"NOT_FOUND_ERR":null)}},setThumbnail:function(a,b,c,d,e){function l(a){var c=g(a);b&&b(c==="NOT_FOUND_ERR"?c:null)}var f,i,k;c=c||128,d=d||128,e=e||!0,f=new Image,f.onload=function(){i=h(a),k=j(this,c,d,e);try{localStorage.setItem(i,k),b&&b(k)}catch(f){b&&b(f.type==="non_object_property_load"?"NOT_FOUND_ERR":null)}},f.src=a},removeThumbnail:function(a){function c(a){g(a)}var b;b=h(a);try{localStorage.removeItem(b)}catch(d){throw d}}}}(jQuery,window,document),function(a,b){a.webgl={},a.webgl.shader={_vertexShader:null,_fragmentShader:null,deleteShaders:function(a){a.deleteShader(this._vertexShader),a.deleteShader(this._fragmentShader)},addShaderProgram:function(a,b,c,d){var e,f={},g={};return d?(f=this.loadShaderFile(b),g=this.loadShaderFile(c)):(f.source=b,g.source=c),this._vertexShader=this.getShader(a,a.VERTEX_SHADER,f),this._fragmentShader=this.getShader(a,a.FRAGMENT_SHADER,g),e=a.createProgram(),a.attachShader(e,this._vertexShader),a.attachShader(e,this._fragmentShader),a.linkProgram(e),a.getProgramParameter(e,a.LINK_STATUS)||window.alert("Could not initialize Shaders!"),e},loadShaderFile:function(b){var c=null;return a.ajax({async:!1,url:b,success:function(a){c={source:a}}}),c},getShader:function(a,b,c){var d;return!a||!b||!c?null:(d=a.createShader(b),a.shaderSource(d,c.source),a.compileShader(d),a.getShaderParameter(d,a.COMPILE_STATUS)?d:(window.alert(a.getShaderInfoLog(d)),a.deleteShader(d),null))}},a.webgl.buffer={attribBufferData:function(a,b){var c=a.createBuffer();return a.bindBuffer(a.ARRAY_BUFFER,c),a.bufferData(a.ARRAY_BUFFER,b,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,null),c}}}(jQuery),function(a,b){a.widget("tizen.listdivider",a.mobile.widget,{options:{initSelector:":jqmData(role='list-divider')",folded:!1,listDividerLine:!0},_create:function(){var c=this.element,d=!0,e,f=!0,g=c.attr("data-style");c.data("line")===!1&&(this.options.listDividerLine=!1),c.data("folded")===!0&&(this.options.folded=!0);if(g==b||g==="normal"||g==="check")this.options.folded?c.buttonMarkup():c.wrapInner("<span class='ui-btn-text'></span>"),this.options.listDividerLine&&(e="<span class='ui-divider-normal-line'></span>",this.options.folded?a(e).appendTo(c.children(".ui-btn-inner")):a(e).appendTo(c));c.bind("vclick",function(a,b){})}}),a(document).bind("pagecreate create",function(b){a(a.tizen.listdivider.prototype.options.initSelector,b.target).listdivider()})}(jQuery),function(a,b,c){pinch_event={setup:function(){function f(a){var b=a[0].x-a[1].x,c=a[0].y-a[0].y;return Math.sqrt(b*b+c*c)}function g(a,b){return{point:a,ratio:b}}var d=this,e=a(d);if(!a.mobile.support.touch)return;e.bind("touchstart",function(d){function l(c){var d=c.originalEvent.touches,e,h,l,m=a(b).width()/a.mobile.pinch.factor;if(k)return;if(!i)return;e=[{x:d[0].pageX,y:d[0].pageY},{x:d[1].pageX,y:d[1].pageY}],l=f(e)-f(i),h=1+l/m,h<a.mobile.pinch.min?h=a.mobile.pinch.min:h>a.mobile.pinch.max&&(h=a.mobile.pinch.max);if(Math.abs(h-j)<a.mobile.pinch.threshold)return;a(c.target).trigger("pinch",g(e,h)),j=h,a.mobile.pinch.interval&&(k=!0,setTimeout(function(){k=!1},a.mobile.pinch.interval))}var h=d.originalEvent.touches,i,j=1,k=!1;if(!a.mobile.pinch.enabled)return;if(h.length!=2)return;i=[{x:h[0].pageX,y:h[0].pageY},{x:h[1].pageX,y:h[1].pageY}],a(d.target).trigger("pinchstart",g(i,c)),e.bind("touchmove",l).one("touchend",function(b){e.unbind("touchmove",l),a(b.target).trigger("pinchend",g(c,j)),i=c,current=c,j=1,k=!1})})}},a.event.special.pinch=pinch_event,a.mobile.pinch={enabled:!0,min:.1,max:3,factor:4,threshold:.01,interval:50}}(jQuery,this),function(a,b,c){a.mobile.defaultPageTransition="none",a.mobile.transitionHandlers.depth=a.mobile.transitionHandlers.simultaneous,a.mobile.transitionFallbacks.depth="fade",a.fn.buttonMarkup.defaults.corners=!1,a.mobile.buttonMarkup.hoverDelay=0}(jQuery,this),function(a,b,c){var d=Math.PI/2,e=.001,f={},g=b.vec3,h=function(a,b){var c=[b[0]-a[0],b[1]-a[1],b[2]-a[2]],d=Math.sqrt(c[0]*c[0]+c[1]*c[1]+c[2]*c[2]);return d};f.base=function(){},f.base.prototype={points:[],step:e,length:0,levels:[],init:function(a){},calculateLevel:function(a){},calculateTotalLength:function(){},getPosition:function(a){},getPercent:function(a,b){},getAngle:function(a){}},f.bezier2d=function(){},f.bezier2d.prototype=a.extend(!0,{},f.base.prototype,{init:function(a){this.points=a.points,this.step=a.step||e,this.length=this.calculateTotalLength(),this.levels=this.calculateLevel(a.maxLevel)||[]},calculateLevel:function(a){var b=this.length,c=b/a,d=[],e;if(!a)return null;for(e=0;e<a;e+=1)d[a-e]=this.getPercent(0,c*e);return d},calculateTotalLength:function(){var a=this.step,b=this.getPosition(0),c=b,d=0,e;for(e=a;e<=1;e+=a)b=this.getPosition(e),d+=h(c,b),c=b;return d},getPosition:function(a){var b=this.points,c=function(a,b,c,d,e){return Math.pow(1-e,3)*a+3*e*Math.pow(1-e,2)*b+3*Math.pow(e,2)*(1-e)*c+Math.pow(e,3)*d},d=[c(b[0][0],b[1][0],b[2][0],b[3][0],a),c(b[0][2],b[1][2],b[2][2],b[3][2],a)];return[d[0],0,d[1]]},getPercent:function(a,b){var c=this.step,d=this.getPosition(a=a||0),e=d,f=a+b,g=0,i;for(i=a+c;i<=1;i+=c){d=this.getPosition(i),g+=h(e,d);if(g>=f)return i;e=d}return 1},getAngle:function(a){var b=this.points,c=function(a,b,c,d,e){return 3*e*e*(-a+3*b-3*c+d)+6*e*(a-2*b+c)+3*(-a+b)},e=c(b[0][0],b[1][0],b[2][0],b[3][0],a),f=c(b[0][2],b[1][2],b[2][2],b[3][2],a);return Math.atan2(e,f)-d}}),f.bspline=function(){},f.bspline.prototype=a.extend(!0,{},f.base.prototype,{_degree:3,_numberOfControls:0,_knotVectors:[],_numberOfKnots:0,init:function(a){this.points=a.points,this.step=a.step||e,this._numberOfPoints=this.points.length-1,this._numberOfKnots=this._numberOfPoints+this._degree+1;var b=1/(this._numberOfKnots-2*this._degree),c=b,d=0;while(d<=this._numberOfKnots)d<=this._degree?this._knotVectors.push(0):d<this._numberOfKnots-this._degree+1?(this._knotVectors.push(c),c+=b):this._knotVectors.push(1),d+=1;this.length=this.calculateTotalLength(),this.levels=this.calculateLevel(a.maxLevel)||[]},_Np:function(a,b,c){var d=this._knotVectors,e=0,f=0,g=0,h=function(a,b){return d[b]<=a&&a<d[b+1]?1:0};return c===1?(e=h(a,b),f=h(a,b+1)):(e=this._Np(a,b,c-1),f=this._Np(a,b+1,c-1)),g=d[b+c]-d[b],e*=g!==0?(a-d[b])/g:0,g=d[b+c+1]-d[b+1],f*=g!==0?(d[b+c+1]-a)/g:0,e+f},calculateLevel:function(a){var b=this.length,c=b/a,d=[],e;if(!a)return null;for(e=0;e<a;e+=1)d[a-e]=this.getPercent(0,c*e);return d},calculateTotalLength:function(){var a=this.step,b=this.getPosition(0),c=b,d=0,e;for(e=a;e<=1;e+=a)b=this.getPosition(e),d+=h(c,b),c=b;return d},getPosition:function(a){var b=[],c,d,e;a=a.toFixed(4);for(d=0;d<3;d+=1){e=0;for(c=0;c<=this._numberOfPoints;c+=1)e+=this.points[c][d]*this._Np(a,c,this._degree);b[d]=e}return b},getPercent:function(a,b){var c=this.step,d=this.getPosition(a=a||0),e=d,f=a+b,g=0,i;for(i=a+c;i<=1;i+=c){d=this.getPosition(i),g+=h(e,d);if(g>=f)return i;e=d}return 1},getAngle:function(a){var b=this.getPosition(a),c=this.getPosition(a+.001),d=g.normalize(g.direction(b,c)),e=g.dot(d,[1,0,0]);return Math.acos(e)+Math.PI}}),a.motionpath=function(a,b){var c=new f[a];return c.init(b),c}}(jQuery,window),function(a,b,c,d){a.widget("tizen.multimediaview",a.mobile.widget,{options:{theme:null,controls:!0,fullScreen:!1,initSelector:"video, audio"},_create:function(){var b=this,c=b.element,d=c[0],e=d.nodeName==="VIDEO",f=b.options,g=a.mobile.getInheritedTheme(c,"s"),h=f.theme||g,i=d.style.getPropertyValue("width")||"",j=a("<div class='ui-multimediaview-wrap ui-multimediaview-"+h+"'>"),k=null;a.extend(this,{role:null,controlTimer:null,isVolumeHide:!0,backupView:null,_reserveVolume:-1,_isVideo:e}),c.addClass("ui-multimediaview"),k=b._createControl(),k.hide(),k.find(".ui-button").each(function(b){a(this).buttonMarkup({corners:!0,theme:h,shadow:!0})}),c.wrap(j).after(k),e?k.addClass("ui-multimediaview-video"):(b.width(i),b.options.fullScreen=!1),f.controls&&c.attr("controls")&&c.removeAttr("controls"),b._addEvent()},_resize:function(){this._resizeFullscreen(this.options.fullScreen),this._resizeControl(),this._updateSeekBar(),this._updateVolumeState()},_resizeControl:function(){var a=this,b=a.element,c=b[0],d=a._isVideo,e=b.parent(".ui-multimediaview-wrap"),f=e.find(".ui-multimediaview-control"),g=f.find(".ui-button"),h=f.find(".ui-playpausebutton"),i=f.find(".ui-seekbar"),j=f.find(".ui-durationlabel"),k=f.find(".ui-timestamplabel"),l=f.find(".ui-volumecontrol"),m=l.find(".ui-volumebar"),n=d?b.width():e.width(),o=d?b.height():f.height(),p=b.offset(),q=f.height(),r=0,s=null;f&&(d&&(s=f.offset(),s.left=p.left,s.top=p.top+o-q,f.offset(s)),f.width(n)),i&&(r=f.width()-g.outerWidth(!0)*g.length,r-=(parseInt(g.eq(0).css("margin-left"),10)+parseInt(g.eq(0).css("margin-right"),10))*g.length,a.isVolumeHide||(r-=l.outerWidth(!0)),i.width(r)),j&&!isNaN(c.duration)&&j.find("p").text(a._convertTimeFormat(c.duration)),c.autoplay&&c.paused===!1&&h.removeClass("ui-play-icon").addClass("ui-pause-icon"),i.width()<m.width()+k.width()+j.width()?j.hide():j.show()},_resizeFullscreen:function(b){if(!this._isVideo)return;var d=this,e=d.element,f=e[0],g=e.parent(".ui-multimediaview-wrap"),h=g.find(".ui-multimediaview-control"),i=h.find(".ui-fullscreenbutton"),j=a(".ui-page-active"),k=h.find(".ui-playpausebutton"),l=h.find(".ui-timestamplabel"),m=h.find(".ui-seekbar"),n=m.find(".ui-duration"),o=m.find(".ui-currenttime"),p=a("body")[0],q=j.children(".ui-header"),r=j.children(".ui-footer"),s=0,t=0;if(b)d.backupView||(d.backupView={width:f.style.getPropertyValue("width")||"",height:f.style.getPropertyValue("height")||"",position:e.css("position"),zindex:e.css("z-index"),wrapHeight:g[0].style.getPropertyValue("height")||""}),s=p.clientWidth,t=p.clientHeight-1,q.hide(),r.hide(),e.parents().each(function(b){var c=a(this);c.addClass("ui-fullscreen-parents").siblings().addClass("ui-multimediaview-siblings-off")}),i.removeClass("ui-fullscreen-on").addClass("ui-fullscreen-off"),g.height(t),e.width(s).height(t);else{if(!d.backupView)return;q.show(),r.show(),e.parents().each(function(b){var c=a(this);c.removeClass("ui-fullscreen-parents").siblings().removeClass("ui-multimediaview-siblings-off")}),i.removeClass("ui-fullscreen-off").addClass("ui-fullscreen-on"),g.css("height",d.backupView.wrapHeight),e.css({width:d.backupView.width,height:d.backupView.height,position:d.backupView.position,"z-index":d.backupView.zindex}),d.backupView=null,a(c).trigger("throttledresize")}},_addEvent:function(){var c=this,d=c.element,e=c.options,f=d[0],g=c._isVideo,h=d.parent(".ui-multimediaview-wrap").find(".ui-multimediaview-control"),i=h.find(".ui-playpausebutton"),j=h.find(".ui-timestamplabel"),k=h.find(".ui-durationlabel"),l=h.find(".ui-volumebutton"),m=h.find(".ui-volumecontrol"),n=m.find(".ui-volumebar"),o=m.find(".ui-guide"),p=m.find(".ui-handle"),q=h.find(".ui-fullscreenbutton"),r=h.find(".ui-seekbar"),s=r.find(".ui-duration"),t=r.find(".ui-currenttime"),u=a(b);d.bind("loadedmetadata.multimediaview",function(a){isNaN(f.duration)||k.find("p").text(c._convertTimeFormat(f.duration)),c._resize()}).bind("timeupdate.multimediaview",function(a){c._updateSeekBar()}).bind("play.multimediaview",function(a){i.removeClass("ui-play-icon").addClass("ui-pause-icon")}).bind("pause.multimediaview",function(a){i.removeClass("ui-pause-icon").addClass("ui-play-icon")}).bind("ended.multimediaview",function(a){(typeof f.loop=="undefined"||f.loop==="")&&c.stop()}).bind("volumechange.multimediaview",function(a){f.muted&&f.volume>.1?(l.removeClass("ui-volume-icon").addClass("ui-mute-icon"),c._reserveVolume=f.volume,f.volume=0):c._reserveVolume!==-1&&!f.muted?(l.removeClass("ui-mute-icon").addClass("ui-volume-icon"),f.volume=c._reserveVolume,c._reserveVolume=-1):f.volume<.1?l.removeClass("ui-volume-icon").addClass("ui-mute-icon"):l.removeClass("ui-mute-icon").addClass("ui-volume-icon"),c.isVolumeHide||c._updateVolumeState()}).bind("durationchange.multimediaview",function(a){isNaN(f.duration)||k.find("p").text(c._convertTimeFormat(f.duration)),c._resize()}).bind("click.multimediaview",function(a){if(!c.options.controls)return;h.fadeToggle("fast"),c._resize()}).bind("multimediaviewinit",function(a){e.controls&&h.show(),c._resize()}),i.bind("click.multimediaview",function(){c._endTimer(),f.paused?f.play():f.pause(),g&&c._startTimer()}),q.bind("click.multimediaview",function(a){a.preventDefault(),c.fullScreen(!c.options.fullScreen),c._resize(),c._endTimer(),a.stopPropagation()}),r.bind("vmousedown.multimediaview",function(a){var b=a.clientX,d=f.duration,e=s.offset(),g=s.width(),h=(b-e.left)/g,i=d*h;if(!f.played.length)return;f.currentTime=i,c._endTimer(),a.preventDefault(),u.bind("vmousemove.multimediaview",function(a){var b=a.clientX,c=(b-e.left)/g;f.currentTime=d*c,a.preventDefault()}).bind("vmouseup.multimediaview",function(){u.unbind("vmousemove.multimediaview vmouseup.multimediaview"),f.paused?f.pause():f.play()})}),l.bind("click.multimediaview",function(){if(c.isVolumeHide){var a=c.element,b=f.volume;c.isVolumeHide=!1,m.fadeIn("fast",function(){c._updateVolumeState(),c._updateSeekBar()}),c._resize()}else c.isVolumeHide=!0,m.fadeOut("fast",function(){c._resize()})}),n.bind("vmousedown.multimediaview",function(a){var b=a.clientX,d=o.offset().left,e=o.width(),f=d+e,g=p.offset(),h=(b-d)/e,i=(b-d)/e;c._endTimer(),c._setVolume(i.toFixed(2)),a.preventDefault(),u.bind("vmousemove.multimediaview",function(a){var b=a.clientX,f=(b-d)/e;c._setVolume(f.toFixed(2)),a.preventDefault()}).bind("vmouseup.multimediaview",function(){u.unbind("vmousemove.multimediaview vmouseup.multimediaview")})})},_removeEvent:function(){var a=this.element,b=a.parent(".ui-multimediaview-wrap").find(".ui-multimediaview-control"),c=b.find(".ui-playpausebutton"),d=b.find(".ui-fullscreenbutton"),e=b.find(".ui-seekbar"),f=b.find(".ui-volumecontrol"),g=f.find(".ui-volumebar"),h=f.find(".ui-handle");a.unbind(".multimediaview"),c.unbind(".multimediaview"),d.unbind(".multimediaview"),e.unbind(".multimediaview"),g.unbind(".multimediaview"),h.unbind(".multimediaview")},_createControl:function(){var b=this.element,c=b[0],d=a("<span></span>").addClass("ui-multimediaview-control"),e=a("<span></span>").addClass("ui-playpausebutton ui-button ui-play-icon"),f=a("<span></span>").addClass("ui-seekbar ui-multimediaview-bar"),g=a("<span><p>00:00:00</p></span>").addClass("ui-timestamplabel"),h=a("<span><p>00:00:00</p></span>").addClass("ui-durationlabel"),i=a("<span></span>").addClass("ui-volumebutton ui-button"),j=a("<span></span>").addClass("ui-volumecontrol"),k=a("<div></div>").addClass("ui-volumebar ui-multimediaview-bar"),l=a("<span></span>").addClass("ui-guide ui-multimediaview-bar-bg"),m=a("<span></span>").addClass("ui-value ui-multimediaview-bar-highlight"),n=a("<span></span>").addClass("ui-handle"),o=a("<span></span>").addClass("ui-fullscreenbutton ui-button"),p=a("<span></span>").addClass("ui-duration ui-multimediaview-bar-bg"),q=a("<span></span>").addClass("ui-currenttime ui-multimediaview-bar-highlight");return f.append(p).append(q).append(h).append(g),i.addClass(c.muted?"ui-mute-icon":"ui-volume-icon"),k.append(l).append(m).append(n),j.append(k),d.append(e).append(f).append(j).append(i),this._isVideo&&(a(o).addClass("ui-fullscreen-on"),d.append(o)),j.hide(),d},_startTimer:function(a){this._endTimer(),a||(a=3e3);var b=this,c=b.element,d=c.parent(".ui-multimediaview-wrap").find(".ui-multimediaview-control"),e=d.find(".ui-volumecontrol");b.controlTimer=setTimeout(function(){b.isVolumeHide=!0,b.controlTimer=null,e.hide(),d.fadeOut("fast")},a)},_endTimer:function(){this.controlTimer&&(clearTimeout(this.controlTimer),this.controlTimer=null)},_convertTimeFormat:function(b){if(!a.isNumeric(b))return"Playback Error";var c=parseInt(b%60,10).toString(),d=parseInt(b/60%60,10).toString(),e=parseInt(b/3600,10).toString(),f=(e.length<2?"0"+e:e)+":"+(d.length<2?"0"+d:d)+":"+(c.length<2?"0"+c:c);return f},_updateSeekBar:function(a){var b=this.element,c=b[0],d=c.duration,e=b.parent(".ui-multimediaview-wrap").find(".ui-multimediaview-control"),f=e.find(".ui-seekbar"),g=f.find(".ui-duration"),h=f.find(".ui-currenttime"),i=e.find(".ui-timestamplabel"),j=g.offset(),k=g.width(),l=g.height(),m=0;typeof a=="undefined"&&(a=c.currentTime),m=parseInt(a/d*k,10),g.offset(j),h.offset(j).width(m),i.find("p").text(this._convertTimeFormat(a))},_updateVolumeState:function(){var a=this.element,b=a.parent(".ui-multimediaview-wrap").find(".ui-multimediaview-control"),c=b.find(".ui-volumecontrol"),d=b.find(".ui-volumebutton"),e=c.find(".ui-volumebar"),f=c.find(".ui-guide"),g=c.find(".ui-value"),h=c.find(".ui-handle"),i=h.width(),j=h.height(),k=f.height(),l=f.width(),m=0,n=0,o=0,p=null,q=a[0].volume;m=parseInt(f.offset().top,10),n=parseInt(f.offset().left,10),o=n,p=h.offset(),p.top=m-parseInt((j-k)/2,10),p.left=o+parseInt(l*q,10)-parseInt(i/2,10),h.offset(p),g.offset(f.offset()).width(parseInt(l*q,10))},_setVolume:function(a){var b=this.element[0];if(a<0||a>1)return;b.volume=a},width:function(a){if(this.options.fullScreen)return;var b=this.element,c=b.parent(".ui-multimediaview-wrap");if(arguments.length===0)return b.width();this._isVideo||c.width(a),b.width(a),this._resize()},height:function(a){if(!this._isVideo||this.options.fullScreen)return;var b=this.element;if(arguments.length===0)return b.height();b.height(a),this._resize()},fullScreen:function(a){if(!this._isVideo)return;var b=this.element,c=this.options;if(arguments.length===0)return c.fullScreen;b.parents(".ui-scrollview-clip").scrollview("scrollTo",0,0),this.options.fullScreen=a,this._resize()},refresh:function(){this._resize()}}),a(b).bind("pagecreate create",function(b){a.tizen.multimediaview.prototype.enhanceWithin(b.target)}).bind("pagechange",function(b){a(b.target).find(".ui-multimediaview").each(function(){var b=a(this),c=b[0];c.autoplay&&c.play(),b.multimediaview("refresh")})}).bind("pagebeforechange",function(b){a(b.target).find(".ui-multimediaview").each(function(){var b=a(this),c=b[0],d=b.multimediaview("fullScreen");d&&b.multimediaview("fullScreen",!d),c.played.length!==0&&c.pause()})}),a(c).bind("resize orientationchange",function(b){a(".ui-page-active").find(".ui-multimediaview").multimediaview("refresh")})}(jQuery,document,window),ensureNS("jQuery.mobile.tizen"),function(){jQuery.extend(jQuery.mobile.tizen,{disableSelection:function(a){return this.enableSelection($(a).find("*").not('input, [type="text"], textarea'),"none"),!0},enableSelection:function(a,b){var c;switch(b){case"text":case"auto":case"none":c=b;break;default:c="auto"}return $(a).css({"user-select":c,"-moz-user-select":c,"-webkit-user-select":c,"-o-user-select":c,"-ms-transform":c})},disableContextMenu:function(a){var b=this;$(a).find("*").each(function(){$(this).get(0).tagName!=="INPUT"&&$(this).attr("type")!=="text"&&$(this).get(0).tagName!=="TEXTAREA"&&b._disableContextMenu(this)})},_disableContextMenu:function(a){$(a).each(function(){$(this).bind("contextmenu",function(a){return!1})})},enableContextMenu:function(a){$(a).each(function(){$(this).unbind("contextmenu")})},documentRelativeCoordsFromEvent:function(a){var b=a?a:window.event,c={x:b.clientX,y:b.clientY},d={x:b.pageX,y:b.pageY},e=0,f=0;b.type.match(/^touch/)&&(d={x:b.originalEvent.targetTouches[0].pageX,y:b.originalEvent.targetTouches[0].pageY},c={x:b.originalEvent.targetTouches[0].clientX,y:b.originalEvent.targetTouches[0].clientY});if(d.x||d.y)e=d.x,f=d.y;else if(c.x||c.y)e=c.x+document.body.scrollLeft+document.documentElement.scrollLeft,f=c.y+document.body.scrollTop+document.documentElement.scrollTop;return{x:e,y:f}},targetRelativeCoordsFromEvent:function(a){var b={x:a.offsetX,y:a.offsetY};if(b.x===undefined||isNaN(b.x)||b.y===undefined||isNaN(b.y)){var c=$(a.target).offset();b=$.mobile.tizen.documentRelativeCoordsFromEvent(a),b.x-=c.left,b.y-=c.top}return b}})}(),function(a,b,c){a.tizen.scrollview.prototype.options.handler=!1,a.tizen.scrollview.prototype.options.handlerTheme="s";var d=a.tizen.scrollview.prototype._setOption,e=function(d){var e=d,f='<div class="ui-handler ui-handler-direction-',g='"><div class="ui-handler-track"><div class="ui-handler-thumb"></div></div></div>',h=e.data("scrollview"),i=h.options,j=i.direction,k=a.mobile.getInheritedTheme(h,"s"),l=i.theme||k,m=h.options.direction==="x",n=h._$view,o=h._$clip,p=e.find(".ui-scrollbar"),q=null,r=null,s=0,t=0,u=0,v=0,w=0,x,y=a.support.touch,z=(y?"touchstart":"mousedown")+".handler",A=(y?"touchmove":"mousemove")+".handler",B=(y?"touchend":"mouseup")+".handler",C=(y?" touchleave":" mouseleave")+".handler",D=function(){t=m?o.width():o.height(),s=(m?n.width():n.height())-t,w=t-u-v*2},E=function(a){var b=Math.round((m?a.x:a.y)/s*w);r[0].style[m?"left":"top"]=b+"px"},F=function(){a(b).unbind(".handler"),e.moveData=null,n.trigger("scrollstop")};if(e.find(".ui-handler-thumb").length!==0||typeof j!="string")return;q=a([f,j,g].join("")).appendTo(e.addClass(" ui-handler-"+l)),r=e.find(".ui-handler-thumb").attr({tabindex:"0","aria-label":m?"Horizontal handler, double tap and move to scroll":"Verticalhandler, double tap and move to scroll"}).hide(),u=m?r.width():r.height(),v=m?parseInt(q.css("right"),10):parseInt(q.css("bottom"),10),a.extend(e,{moveData:null}),r.bind(z,{e:r[0]},function(c){h._stopMScroll();var d=c.data.e,f=y?c.originalEvent.targetTouches[0]:c;d.style.opacity=1,e.moveData={target:d,X:parseInt(d.style.left,10)||0,Y:parseInt(d.style.top,10)||0,pX:f.pageX,pY:f.pageY},D(),n.trigger("scrollstart"),y||c.preventDefault(),a(b).bind(A,function(a){var b=e.moveData,c=b.target,d=0,f=0,g=y?a.originalEvent.targetTouches[0]:a;d=m?b.X+g.pageX-b.pX:b.Y+g.pageY-b.pY,d<0&&(d=0),d>w&&(d=w),f=-Math.round(d/w*s),m?(h._setScrollPosition(f,0),c.style.left=d+"px"):(h._setScrollPosition(0,f),c.style.top=d+"px"),a.preventDefault()}).bind(B+C,function(a){F()})}),n.bind(B,function(a){F()}),e.bind("scrollstart",function(a){if(!h.enableHandler())return;D();if(s<0||t<u){p.is(":hidden")&&p.show();return}p.is(":visible")&&p.hide(),x&&(clearInterval(x),x=c),q.addClass("ui-handler-visible"),r.stop(!0,!0).fadeIn()}).bind("scrollupdate",function(a,b){if(!h.enableHandler()||s<0||t<u)return;E(h.getScrollPosition())}).bind("scrollstop",function(a){if(!h.enableHandler()||s<0||t<u)return;x=setInterval(function(){E(h.getScrollPosition()),h._gesture_timer||(clearInterval(x),x=c)},10),h._handlerTimer&&(clearTimeout(h._handlerTimer),h._handlerTimer=0),h._handlerTimer=setTimeout(function(){h._timerID===0&&e.moveData===null&&(r.stop(!0,!0).css("opacity",1).fadeOut(function(){q.removeClass("ui-handler-visible")}),h._handlerTimer=0)},1e3)}).bind("mousewheel",function(a){q.removeClass("ui-handler-visible"),E(h.getScrollPosition())})};a.extend(a.tizen.scrollview.prototype,{enableHandler:function(a){if(typeof a=="undefined")return this.options.handler;this.options.handler=!!a;var b=this.element;this.options.handler?(b.find(".ui-handler").length===0&&e(b),b.find(".ui-scrollbar").hide(),b.find(".ui-handler").show()):(b.find(".ui-handler").removeClass("ui-handler-visible").hide(),b.find(".ui-scrollbar").show())},_setHandlerTheme:function(a){if(!a)return;var b="ui-handler-"+this.options.handlerTheme,c="ui-handler-"+a;this.element.removeClass(b).addClass(c),this.options.handlerTheme=a},_setOption:function(a,b){switch(a){case"handler":this.enableHandler(b);break;case"handlerTheme":this._setHandlerTheme(b);break;default:d.call(this,a,b)}},_handlerTimer:0}),a(b).delegate(":jqmData(scroll)","scrollviewcreate",function(){var b=a(this);if(b.attr("data-"+a.mobile.ns+"scroll")==="none"||b.attr("data-"+a.mobile.ns+"handler")!=="true")return;b.scrollview("enableHandler","true")})}(jQuery,document),function(a,b){var c={},d=0,e=1,f=-1;a.widget("tizen.virtuallistview",a.mobile.widget,{options:{theme:"s",countTheme:"s",headerTheme:"s",dividerTheme:"s",splitIcon:"arrow-r",splitTheme:"s",inset:!1,id:"",childSelector:" li",dbtable:"",template:"",dbkey:!1,scrollview:!1,row:100,page_buf:30,initSelector:":jqmData(role='virtuallistview')"},_stylerMouseUp:function(){a(this).addClass("ui-btn-up-s"),a(this).removeClass("ui-btn-down-s")},_stylerMouseDown:function(){a(this).addClass("ui-btn-down-s"),a(this).removeClass("ui-btn-up-s")},_stylerMouseOver:function(){a(this).toggleClass("ui-btn-hover-s")},_stylerMouseOut:function(){a(this).toggleClass("ui-btn-hover-s"),a(this).addClass("ui-btn-up-s"),a(this).removeClass("ui-btn-down-s")},_pushData:function(b){var c=this.options,d,e=a("#"+b),f=c.row>this._numItemData?this._numItemData:c.row,g;for(d=0;d<f;d++)g=e.tmpl(this._itemData(d)),a(c.id).append(a(g).attr("id",c.itemIDPrefix+d));a(c.id).trigger("create")},_reposition:function(b){var c,d=this,e,f;b.data?c=b.data:c=b,a(c.id+c.childSelector).size()>0&&(d._title_h=a(c.id+c.childSelector+":first").position().top,d._line_h=a(c.id+c.childSelector+":first").outerHeight(),d._container_w=a(c.id).innerWidth(),e=parseInt(a(c.id+c.childSelector).css("padding-left"),10)+parseInt(a(c.id+c.childSelector).css("padding-right"),10),a(c.id+">"+c.childSelector).addClass("position_absolute").addClass("ui-btn-up-s").bind("mouseup",d._stylerMouseUp).bind("mousedown",d._stylerMouseDown).bind("mouseover",d._stylerMouseOver).bind("mouseout",d._stylerMouseOut)),a(c.id+">"+c.childSelector).each(function(b){f=parseInt(a(this).css("margin-left"),10)+parseInt(a(this).css("margin-right"),10),a(this).css("top",d._title_h+d._line_h*b+"px").css("width",d._container_w-e-f)}),a(c.id).height(d._numItemData*d._line_h)},_resize:function(b){var c,d=this,e,f;b.data?c=b.data:c=b,d._container_w=a(c.id).innerWidth(),e=parseInt(a(c.id+c.childSelector).css("padding-left"),10)+parseInt(a(c.id+c.childSelector).css("padding-right"),10),a(c.id+c.childSelector).each(function(b){f=parseInt(a(this).css("margin-left"),10)+parseInt(a(this).css("margin-right"),10),a(this).css("width",d._container_w-e-f)})},_scrollmove:function(b){function j(){return d.scrollview?h.viewTop():i.viewTop()}function k(a){var b=!1;b&&console.log(">>virtualllist: "+a)}function l(b,c){function t(b,c,d){var e={ELEMENT_NODE:1,TEXT_NODE:3},f,g,h,i,j;a(c).find(".ui-li-text-main",".ui-li-text-sub",".ui-li-text-sub2","ui-btn-text").each(function(b){f=a(this),h=a(d).find(".ui-li-text-main",".ui-li-text-sub","ui-btn-text").eq(b).text(),a(f).contents().filter(function(){return this.nodeType==e.TEXT_NODE}).get(0).data=h}),a(c).find("img").each(function(b){var c=a(this);i=a(d).find("img").eq(b).attr("src"),a(c).attr("src",i)}),a(c).removeData()}function u(b,c,d){var e,f,g,h;return k(">> move item: "+c+" --> "+d),f=a("#"+b.options.itemIDPrefix+c),!f||!f.length?!1:(h=a("#"+b.options.template),h&&(g=h.tmpl(b._itemData(d)),t(b,f,g),g.remove()),f.css("top",d*b._line_h).attr("id",b.options.itemIDPrefix+d),!0)}var d,e,g,h=b._first_index,i=b._last_index,m,n,o,p,q=b.options.row,r,s;d=j(),r=Math.ceil(q/3),e=Math.floor(d/b._line_h)-r,g=e+q-1,e<0?(g+=-e,e=0):g>b._numItemData-1&&(e-=g-(b._numItemData-1),g=b._numItemData-1),m=e-h,k("cy="+d+", oti="+h+", obi="+i+", cti="+e+", cbi="+g+", dti="+m);if(0==m){b.timerStillCount+=1;if(b.timerStillCount<12){k("dti=0 "+b.timerStillCount+" times"),b.timerMoveID=setTimeout(l,f,b);return}k("dti=0 "+b.timerStillCount+" times. End timer."),b.timerStillCount=0,b.timerMoveID&&(clearTimeout(b.timerMoveID),b.timerMoveID=null)}else{b.timerStillCount=0,Math.abs(m)>=q?(n=h,o=i,p=m,k(">>> WHOLE CHANGE! delta="+p)):(m>0?(n=h,o=h+m-1,p=q):(n=i+m+1,o=i,p=-q),k(">>> partial change. delta="+p));for(s=n;s<=o;s++)u(b,s,s+p);b._first_index=e,b._last_index=g,b.timerMoveID=setTimeout(l,f,b)}return}var c=b.data,d=c.options,e=c._num_top_items,f=100,g,h,i;h={viewTop:function(){var b=a(d.id).parentsUntil(".ui-page").find(".ui-scrollview-view"),c=b.css("-webkit-transform"),e="0,0,0,0,0,0";return c&&(e=c.replace(/matrix\s*\((.*)\)/,"$1")),-parseInt(e.split(",")[5],10)}},i={viewTop:function(){return a(window).scrollTop()}},c.timerStillCount=0,c.timerMoveID&&(clearTimeout(c.timerMoveID),c.timerMoveID=null),l(c)},_recreate:function(b){var c=this,e=this.options;a(e.id).empty(),c._numItemData=b.length,c._direction=d,c._first_index=0,c._last_index=e.row-1,c._pushData(e.template),e.childSelector==" ul"&&a(e.id+" ul").swipelist(),a(e.id).virtuallistview(),c.refresh(!0),c._reposition(e)},_initList:function(){var b=this,c=this.options;b._pushData(c.template),a(c.id).parentsUntil(".ui-page").parent().one("pageshow",function(){setTimeout(function(){b._reposition(c)},0)}),a(document).bind("scrollstart.virtuallist scrollstop.vrituallist",b,b._scrollmove),a(window).bind("resize.virtuallist",b._resize),c.childSelector==" ul"&&a(c.id+" ul").swipelist(),b.refresh(!0)},create:function(){var a=this.options;this._create.apply(this,arguments),this._reposition(a)},_create:function(b){a.extend(this,{_itemData:function(a){return null},_numItemData:0,_cacheItemData:function(a,b){},_title_h:0,_container_w:0,_minimum_row:100,_direction:d,_first_index:0,_last_index:0,_num_top_items:0});var c=this,e=this.options,f=this.element,g=a('<div class="ui-virtuallist"/>'),h=a("<ul></ul>"),i=f.find(':jqmData(role="virtuallistview" )'),j=null,k=this,l,m;f.addClass(function(a,b){return b+" ui-listview ui-virtual-list-container"+(c.options.inset?" ui-listview-inset ui-corner-all ui-shadow ":"")}),e.itemIDPrefix=f.attr("id")+"_",e.id="#"+f.attr("id"),a(e.id).bind("pagehide",function(b){a(e.id).empty()}),a(".ui-scrollview-clip").size()>0?e.scrollview=!0:e.scrollview=!1,f.data("row")&&(e.row=f.data("row"),e.row<c._minimum_row&&(e.row=c._minimum_row),e.page_buf=parseInt(e.row/2,10));if(b){if(!b.itemData||typeof b.itemData!="function")return;c._itemData=b.itemData;if(!b.numItemData)return;if(typeof b.numItemData=="function")c._numItemData=b.numItemData();else{if(typeof b.numItemData!="number")return;c._numItemData=b.numItemData}}else{console.warn("WARNING: The data interface of virtuallist is changed. \nOld data interface(data-dbtable) is still supported, but will be removed in next version. \nPlease fix your code soon!");if(!a(e.id).hasClass("vlLoadSuccess"))return;l=f.jqmData("dbtable"),m=window[l],a(e.id).empty(),m||(m={}),c._itemData=function(a){return m[a]},c._numItemData=m.length}f.data("template")&&(e.template=f.data("template"),f.data("swipelist")==1?e.childSelector=" ul":e.childSelector=" li"),f.data("dbkey")&&(e.dbkey=f.data("dbkey")),c._first_index=0,c._last_index=e.row-1,c._initList()},destroy:function(){var b=this.options;a(document).unbind("scrollstop"),a(window).unbind("resize.virtuallist"),a(b.id).empty(),this.timerMoveID&&(clearTimeout(this.timerMoveID),this.timerMoveID=null)},_itemApply:function(b,c){var d=c.find(".ui-li-count");d.length&&c.addClass("ui-li-has-count"),d.addClass("ui-btn-up-"+(b.jqmData("counttheme")||this.options.countTheme)+" ui-btn-corner-all"),c.find("h1, h2, h3, h4, h5, h6").addClass("ui-li-heading").end().find("p, dl").addClass("ui-li-desc").end().find(">img:eq(0), .ui-link-inherit>img:eq(0)").addClass("ui-li-thumb").each(function(){c.addClass(a(this).is(".ui-li-icon")?"ui-li-has-icon":"ui-li-has-thumb")}).end().find(".ui-li-aside").each(function(){var b=a(this);b.prependTo(b.parent())})},_removeCorners:function(a,b){var c="ui-corner-top ui-corner-tr ui-corner-tl",d="ui-corner-bottom ui-corner-br ui-corner-bl";a=a.add(a.find(".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb")),b==="top"?a.removeClass(c):b==="bottom"?a.removeClass(d):a.removeClass(c+" "+d)},_refreshCorners:function(a){var b,c,d,e;this.options.inset&&(b=this.element.children("li"),c=a?b.not(".ui-screen-hidden"):b.filter(":visible"),this._removeCorners(b),d=c.first().addClass("ui-corner-top"),d.add(d.find(".ui-btn-inner")).find(".ui-li-link-alt").addClass("ui-corner-tr").end().find(".ui-li-thumb").not(".ui-li-icon").addClass("ui-corner-tl"),e=c.last().addClass("ui-corner-bottom"),e.add(e.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"))},refresh:function(b){this.parentPage=this.element.closest(".ui-page"),this._createSubPages();var c=this.options,d=this.element,e=this,f=d.jqmData("dividertheme")||c.dividerTheme,g=d.jqmData("splittheme"),h=d.jqmData("spliticon"),i=d.children("li"),j=a.support.cssPseudoElement||!a.nodeName(d[0],"ol")?0:1,k,l,m,n,o,p,q,r,s,t,u;j&&d.find(".ui-li-dec").remove();for(s=0,t=i.length;s<t;s++){k=i.eq(s),l="ui-li";if(b||!k.hasClass("ui-li"))u=k.jqmData("theme")||c.theme,n=k.children("a"),n.length?(r=k.jqmData("icon"),k.buttonMarkup({wrapperEls:"div",shadow:!1,corners:!1,iconpos:"right",icon:!1,theme:u}),r!=0&&n.length==1&&k.addClass("ui-li-has-arrow"),n.first().addClass("ui-link-inherit"),n.length>1&&(l+=" ui-li-has-alt",o=n.last(),p=g||o.jqmData("theme")||c.splitTheme,o.appendTo(k).attr("title",o.getEncodedText()).addClass
+("ui-li-link-alt").empty().buttonMarkup({shadow:!1,corners:!1,theme:u,icon:!1,iconpos:!1}).find(".ui-btn-inner").append(a("<span />").buttonMarkup({shadow:!0,corners:!0,theme:p,iconpos:"notext",icon:h||o.jqmData("icon")||c.splitIcon})))):k.jqmData("role")==="list-divider"?(l+=" ui-li-divider ui-btn ui-bar-"+f,k.attr("role","heading"),j&&(j=1)):l+=" ui-li-static ui-body-"+u;j&&l.indexOf("ui-li-divider")<0&&(q=k.is(".ui-li-static:first")?k:k.find(".ui-link-inherit"),q.addClass("ui-li-jsnumbering").prepend("<span class='ui-li-dec'>"+j++ +". </span>")),k.add(k.children(".ui-btn-inner")).addClass(l),e._itemApply(d,k)}this._refreshCorners(b)},_idStringEscape:function(a){return a.replace(/\W/g,"-")},_createSubPages:function(){var b=this.element,d=b.closest(".ui-page"),e=d.jqmData("url"),f=e||d[0][a.expando],g=b.attr("id"),h=this.options,i="data-"+a.mobile.ns,j=this,k=d.find(":jqmData(role='footer')").jqmData("id"),l,m;typeof c[f]=="undefined"&&(c[f]=-1),g=g||++c[f],a(b.find("li>ul, li>ol").toArray().reverse()).each(function(c){var d=this,f=a(this),j=f.attr("id")||g+"-"+c,m=f.parent(),n,p=n.first().getEncodedText(),q=(e||"")+"&"+a.mobile.subPageUrlKey+"="+j,r=f.jqmData("theme")||h.theme,s=f.jqmData("counttheme")||b.jqmData("counttheme")||h.countTheme,t,u;n=a(f.prevAll().toArray().reverse()),n=n.length?n:a("<span>"+a.trim(m.contents()[0].nodeValue)+"</span>"),l=!0,t=f.detach().wrap("<div "+i+"role='page' "+i+"url='"+q+"' "+i+"theme='"+r+"' "+i+"count-theme='"+s+"'><div "+i+"role='content'></div></div>").parent().before("<div "+i+"role='header' "+i+"theme='"+h.headerTheme+"'><div class='ui-title'>"+p+"</div></div>").after(k?a("<div "+i+"role='footer' "+i+"id='"+k+"'>"):"").parent().appendTo(a.mobile.pageContainer),t.page(),u=m.find("a:first"),u.length||(u=a("<a/>").html(n||p).prependTo(m.empty())),u.attr("href","#"+q)}).virtuallistview(),l&&d.is(":jqmData(external-page='true')")&&d.data("page").options.domCache===!1&&(m=function(b,c){var f=c.nextPage,g;c.nextPage&&(g=f.jqmData("url"),g.indexOf(e+"&"+a.mobile.subPageUrlKey)!==0&&(j.childPages().remove(),d.remove()))},d.unbind("pagehide.remove").bind("pagehide.remove",m))},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.tizen.virtuallistview.prototype.options.initSelector,b.target).virtuallistview()})}(jQuery),function(a,b,c){a.widget("tizen.progress",a.mobile.widget,{options:{style:"circle",running:!1},show:function(){a(this.element).show()},hide:function(){a(this.element).hide()},_start:function(){this.init||(a(this.element).append(this.html),this.init=!0),this.show(),a(this.element).find(".ui-progress-"+this.options.style).addClass(this.runningClass)},_stop:function(){a(this.element).find(".ui-progress-"+this.options.style).removeClass(this.runningClass)},running:function(a){if(a===c)return this.options.running;this._setOption("running",a)},_setOption:function(a,c){if(a==="running"){if(typeof c!="boolean"){b.alert("running value MUST be boolean type!");return}this.options.running=c,this._refresh()}},_refresh:function(){this.options.running?this._start():this._stop()},_create:function(){var b=this,c=this.element,d=c.jqmData("style"),e,f;d?this.options.style=d:d=this.options.style,d=="circle"?(a(this.element).addClass("ui-progress-container-circle"),e='<div class="ui-progress-circle"></div>'):d==="pending"&&(a(this.element).addClass("ui-progressbar"),e='<div class="ui-progressbar-bg"><div class="ui-progress-pending"></div></div>'),this.html=a(e),f="ui-progress-"+d+"-running",a.extend(this,{init:!1,runningClass:f}),d==="pending"&&(a(this.element).append(this.html),this.init=!0),this._refresh()}}),a(document).bind("pagecreate create",function(b){a(b.target).find(":jqmData(role='progress')").progress()})}(jQuery,this),function(a,b,c,d){function f(a,b){a.tizen||(a.tizen={}),a.tizen.frameworkData=b.frameworkData,a.tizen.loadCustomGlobalizeCulture=b.loadCustomGlobalizeCulture,a.tizen.loadTheme=b.loadTheme,a.tizen.__tizen__=b}var e={libFileName:"tizen-web-ui-fw(.min)?.js",frameworkData:{rootDir:"/usr/lib/tizen-web-ui-fw",version:"0.1",theme:"tizen-white",viewportWidth:"device-width",viewportScale:!1,defaultFontSize:22,minified:!1,debug:!1},log:{debug:function(a){e.frameworkData.debug&&console.log(a)},warn:function(a){console.warn(a)},error:function(a){console.error(a)},alert:function(a){c.alert(a)}},util:{loadScriptSync:function(b,c,d){a.ajax({url:b,dataType:"script",async:!1,crossDomain:!1,success:c,error:function(c,f,g){if(d)d(c,f,g);else{var h=[404],i="Error while loading "+b+"\n"+c.status+":"+c.statusText;-1==a.inArray(c.status,h)?e.log.alert(i):e.log.warn(i)}}})},isMobileBrowser:function(){var a=c.navigator.appVersion.indexOf("Mobile"),b=-1<a;return b}},css:{cacheBust:document.location.href.match(/debug=true/)?"?cacheBust="+(new Date).getTime():"",addElementToHead:function(b){var c=document.getElementsByTagName("head")[0];c&&a(c).prepend(b)},makeLink:function(a){var b=document.createElement("link");return b.setAttribute("rel","stylesheet"),b.setAttribute("href",a),b.setAttribute("name","tizen-theme"),b},load:function(a){var b=document.getElementsByTagName("head")[0],c=b.getElementsByTagName("link"),d,f=null;for(d=0;d<c.length;d++){if(c[d].getAttribute("rel")!="stylesheet")continue;if(c[d].getAttribute("name")=="tizen-theme"||c[d].getAttribute("href")==a){f=c[d];break}}f?f.getAttribute("href")==a?e.log.warn("Theme is already loaded. Skip theme loading in the framework."):f.setAttribute("href",a):this.addElementToHead(this.makeLink(a))}},getParams:function(){function j(){var a=navigator.theme?navigator.theme.split(":")[0]:null;return a&&(a=a.replace("-hd",""),a.match(/^tizen-/)||(a="tizen-"+a)),a}var a=document.getElementsByTagName("script"),b=null,c=!1,e,f,g,h,i;for(e in a){f=a[e],g=f.src?f.getAttribute("src"):d;if(g&&g.match(this.libFileName)){h=g.split(/[\/\\]/),i=-3,this.frameworkData.rootDir=(f.getAttribute("data-framework-root")||h.slice(0,h.length+i).join("/")||this.frameworkData.rootDir).replace(/^file:(\/\/)?/,""),this.frameworkData.version=f.getAttribute("data-framework-version")||h[h.length+i]||this.frameworkData.version,this.frameworkData.theme=f.getAttribute("data-framework-theme")||j()||this.frameworkData.theme,this.frameworkData.viewportWidth=f.getAttribute("data-framework-viewport-width")||this.frameworkData.viewportWidth,this.frameworkData.viewportScale="true"===f.getAttribute("data-framework-viewport-scale")?!0:this.frameworkData.viewportScale,this.frameworkData.minified=g.search(/\.min\.js$/)>-1?!0:!1,this.frameworkData.debug="true"===f.getAttribute("data-framework-debug")?!0:this.frameworkData.debug,c=!0;break}}return c},loadTheme:function(a){var b,c,d;a||(a=e.frameworkData.theme),b=[e.frameworkData.rootDir,e.frameworkData.version,"themes",a].join("/"),d=[b,"theme.js"].join("/"),e.frameworkData.minified?c=[b,"tizen-web-ui-fw-theme.min.css"].join("/"):c=[b,"tizen-web-ui-fw-theme.css"].join("/"),e.css.load(c),e.util.loadScriptSync(d)},loadGlobalizeCulture:function(b,d){function j(b){var d=b||a("html").attr("lang")||c.navigator.language.split(".")[0]||c.navigator.userLanguage||"en",e=null,f=d.lastIndexOf("-"),g=["Cyrl","Latn","Mong"];return f!=-1&&(e=d.substr(f+1),g.join("-").indexOf(e)<0&&(d=[d.substr(0,f),e.toUpperCase()].join("-"))),d=d=="en"?"en-US":d,d}function k(a){var b=a.lastIndexOf("-"),c;return b!=-1&&(c=a.substr(0,b)),c}function l(a,b){var c=null;return"string"!=typeof a?null:(b&&b[a]?c=b[a]:c=[f.frameworkData.rootDir,f.frameworkData.version,"js","cultures",["globalize.culture.",a,".js"].join("")].join("/"),c)}function m(a,b){e.log.error("Error "+b.status+": "+b.statusText+"::Culture file ("+a+") is failed to load.")}function n(b,c){function d(){e.log.debug("Culture file ("+b+") is loaded successfully.")}function f(a,d,e){c?c(a,d,e):m(b,a)}b?a.ajax({url:b,dataType:"script",cache:!0,async:!1,success:d,error:f}):(i={status:404,statusText:"Not Found"},f(i,null,null))}var f=this,g,h,i;return h=j(b),g=l(h,d),n(g,function(a,b,c){if(a.status==404){var e=k(h),f=l(e,d);n(f,null)}else m(g,a)}),h},setGlobalize:function(){var a=this.loadGlobalizeCulture();b.culture(a)},loadCustomGlobalizeCulture:function(a){e.loadGlobalizeCulture(null,a)},setViewport:function(b){var c=null,d,f;return a("meta[name=viewport]").each(function(){c=this;return}),c?(f=a(c).prop("content"),b=f.replace(/.*width=(device-width|\d+)\s*,?.*$/gi,"$1"),e.log.warn("Viewport is set to '"+b+"' in a meta tag. Framework skips viewport setting.")):(c=document.createElement("meta"),c&&(c.name="viewport",f=["width=",b,", user-scalable=no"].join(""),!!isNaN(b),c.content=f,e.log.debug(f),d=document.getElementsByTagName("head").item(0),d.insertBefore(c,d.firstChild))),b},scaleBaseFontSize:function(b,c){e.log.debug("themedefaultfont size: "+b+", ratio: "+c);var d=Math.max(Math.floor(b*c),4);a("html.ui-mobile").css({"font-size":d+"px"}),e.log.debug("html:font size is set to "+d),a(document).ready(function(){a(".ui-mobile").children("body").css({"font-size":d+"px"})})},setScaling:function(){var b=this.frameworkData.viewportWidth,d=this.frameworkData.defaultFontSize,f=1;a("body").attr("data-tizen-theme-default-font-size",d);if(!e.util.isMobileBrowser())return;this.frameworkData.viewportScale==1&&(b="screen-width"),"screen-width"==b&&(c.self==c.top?b=c.outerWidth:b=document.documentElement.clientWidth),b=this.setViewport(b),b!="device-width"&&(f=parseFloat(b/this.frameworkData.defaultViewportWidth),this.scaleBaseFontSize(d,f))}};f(a,e),e.getParams(),e.loadTheme(),e.setScaling(),e.setGlobalize(),a.mobile.autoInitializePage=!1,a(document).ready(function(){a.mobile.initializePage()})}(jQuery,window.Globalize,window),function(a,b){a.widget("mobile.pagelayout",a.mobile.widget,{options:{visibleOnPageShow:!0,disablePageZoom:!0,transition:"slide",fullscreen:!1,tapToggle:!0,tapToggleBlacklist:"a, input, select, textarea, .ui-header-fixed, .ui-footer-fixed",hideDuringFocus:"input, textarea, select",updatePagePadding:!0,supportBlacklist:function(){var a=window,c=navigator.userAgent,d=navigator.platform,e=c.match(/AppleWebKit\/([0-9]+)/),f=!!e&&e[1],g=c.match(/Fennec\/([0-9]+)/),h=!!g&&g[1],i=c.match(/Opera Mobi\/([0-9]+)/),j=!!i&&i[1];return(d.indexOf("iPhone")>-1||d.indexOf("iPad")>-1||d.indexOf("iPod")>-1)&&f&&f<534||a.operamini&&{}.toString.call(a.operamini)==="[object OperaMini]"||i&&j<7458||c.indexOf("Android")>-1&&f&&f<533||h&&h<6||window.palmGetResource!==b&&f&&f<534||c.indexOf("MeeGo")>-1&&c.indexOf("NokiaBrowser/8.5.0")>-1?!0:!1},initSelector:":jqmData(role='content')"},_create:function(){var a=this,b=a.options,c=a.element;if(b.supportBlacklist()){a.destroy();return}a._addFixedClass(),a._addTransitionClass(),a._bindPageEvents(),a._bindContentControlEvents(),a._backBtnQueue=[]},_addFixedClass:function(){var a=this,b=a.options,c=a.element,d=c.siblings(":jqmData(role='header')"),e=c.siblings(":jqmData(role='footer')"),f=c.closest(".ui-page");d.addClass("ui-header-fixed"),e.addClass("ui-footer-fixed"),b.fullscreen?(d.addClass("ui-header-fullscreen"),e.addClass("ui-footer-fullscreen"),f.addClass("ui-page-header-fullscreen").addClass("ui-page-footer-fullscreen")):f.addClass("ui-page-header-fixed").addClass("ui-page-footer-fixed")},_addTransitionClass:function(){var a=this.options.transition;a&&a!=="none"&&(a==="slide"&&(a=this.element.is(".ui-header")?"slidedown":"slideup"),this.element.addClass(a))},setHeaderFooter:function(b){var c=a(b),d=c.find(":jqmData(role='header')").length?c.find(":jqmData(role='header')"):c.siblings(":jqmData(role='header')"),e=c.find(".ui-content"),f=c.find(":jqmData(role='footer')"),g=f.find(":jqmData(role='fieldcontain')"),h=f.find(".ui-controlgroup");c.is(".ui-dialog")||(d.jqmData("position")=="fixed"||a.support.scrollview&&a.tizen.frameworkData.theme.match(/tizen/)?d.css("position","fixed").css("top","0px"):!a.support.scrollview&&d.jqmData("position")!="fixed"&&d.css("position","relative")),d.find("span.ui-title-text-sub").length&&d.addClass("ui-title-multiline"),g.find("div").is(".ui-controlgroup-label")&&g.find("div.ui-controlgroup-label").remove();if(h.length){var i=100/h.find("a").length;h.find("a").each(function(a){h.find("a").eq(a).width(i+"%")})}},_bindPageEvents:function(){var b=this,c=b.options,d=b.element,e;d.closest(".ui-page").bind("pagebeforeshow",function(d){var e=this;c.disablePageZoom&&a.mobile.zoom.disable(!0),c.visibleOnPageShow||b.hide(!0),b.setHeaderFooter(e),b._setContentMinHeight(e)}).bind("webkitAnimationStart animationstart updatelayout",function(a,d){var e=this;c.updatePagePadding&&(b.updatePagePadding(e),b.updatePageLayout(e,d))}).bind("pageshow",function(d){var e=this;b._setContentMinHeight(e),b.updatePagePadding(e),b._updateHeaderArea(e),c.updatePagePadding&&a(window).bind("throttledresize."+b.widgetName,function(){b.updatePagePadding(e),b.updatePageLayout(e,!1),b._updateHeaderArea(e),b._setContentMinHeight(e)})}).bind("pagebeforehide",function(d,e){c.disablePageZoom&&a.mobile.zoom.enable(!0),c.updatePagePadding&&a(window).unbind("throttledresize."+b.widgetName)}),window.addEventListener("softkeyboardchange",function(c){var d=a("<div class='ui-btn-footer-down'></div>"),e=a(".ui-page-active"),f,g="footer";e.data("addBackBtn")&&(e.data("addBackBtn")=="header"?g="header":g="footer",c.state=="on"?(e.find(".ui-"+g+" .ui-btn-footer-down").length||d.buttonMarkup({icon:"down"}).appendTo(e.find(".ui-"+g)),f=a(".ui-page-active .ui-btn-back"),f.hide(),b._backBtnQueue.push(f)):c.state=="off"&&(b._backBtnQueue.forEach(function(a){a.show()}),b._backBtnQueue.length=0,a(".ui-btn-footer-down").remove()))})},_bindContentControlEvents:function(){var a=this,b=a.options,c=a.element;c.closest(".ui-page").bind("pagebeforeshow",function(a){})},_setContentMinHeight:function(b){var c=a(b),d=c.find(":jqmData(role='header')"),e=c.find(":jqmData(role='footer')"),f=c.find(":jqmData(role='content')"),g,h=1,i=window.innerHeight;a.support.scrollview||(h=window.outerWidth/window.innerWidth,i=Math.floor(window.outerHeight/h)),g=i-d.height()-e.height(),f.css("min-height",g-parseFloat(f.css("padding-top"))-parseFloat(f.css("padding-bottom"))+"px")},_updateHeaderArea:function(b){var c=a(b),d=c.find(":jqmData(role='header')").length?c.find(":jqmData(role='header')"):c.siblings(":jqmData(role='header')"),e=d.children("a").length,f=d.children("img").length;c.is(".ui-dialog")||d.find("h1").css("width",window.innerWidth-parseInt(d.find("h1").css("margin-left"),10)*2-d.children("a").width()*e-d.children("a").width()/4-d.children("img").width()*f*4)},_visible:!0,updatePagePadding:function(b){var c=this.element,d=c.siblings(".ui-header").length,e=c.siblings(".ui-footer").length;if(this.options.fullscreen)return;b=b||c.closest(".ui-page"),(c.siblings(".ui-header").jqmData("position")=="fixed"||a.support.scrollview)&&a(b).css("padding-top",d?c.siblings(".ui-header").outerHeight():0),a(b).css("padding-bottom",e?c.siblings(".ui-footer").outerHeight():0)},updatePageLayout:function(b,c){var d,e=a(b),f=e.find(":jqmData(role='header')"),g=e.find(":jqmData(role='content')"),h=0,i=0,j=0,k=window.innerHeight,l=1;e.length?d=e.find(":jqmData(role='footer')"):d=a(document).find(":jqmData(role='footer')").eq(0),i=d.css("display")=="none"||d.length==0?0:d.height(),j=f.css("display")=="none"||f.length==0?0:f.height(),i!=0&&d.css("bottom",0),a.support.scrollview||(l=window.outerWidth/window.innerWidth,k=Math.floor(window.outerHeight/l)),h=k-i-j,a.support.scrollview&&g.height(h-parseFloat(g.css("padding-top"))-parseFloat(g.css("padding-bottom"))),c&&e.css("min-height",h).css("padding-top",j).css("padding-bottom",i)},show:function(a){},hide:function(a){},toggle:function(){this[this._visible?"hide":"show"]()},destroy:function(){this.element.removeClass("ui-header-fixed ui-footer-fixed ui-header-fullscreen ui-footer-fullscreen in out fade slidedown slideup ui-fixed-hidden"),this.element.closest(".ui-page").removeClass("ui-page-header-fixed ui-page-footer-fixed ui-page-header-fullscreen ui-page-footer-fullscreen")},refresh:function(){var b=a(".ui-page-active");this.setHeaderFooter(b),this._updateHeaderArea(b)}}),a(document).bind("pagecreate create",function(b){a(b.target).jqmData("fullscreen")&&a(a.mobile.pagelayout.prototype.options.initSelector,b.target).not(":jqmData(fullscreen)").jqmData("fullscreen",!0),a.mobile.pagelayout.prototype.enhanceWithin(b.target)})}(jQuery),function(a,b,c){a.widget("tizen.tizenslider",a.mobile.widget,{options:{popup:!0},popup:null,handle:null,handleText:null,_create:function(){this.currentValue=null,this.popupVisible=!1;var b=this,d=a(this.element),e,f,g,h,i,j,k,l,m,n,o;d.slider(),d.hide(),b.popup=a('<div class="ui-slider-popup"></div>'),g=d.jqmData("popup"),g!==c&&(b.options.popup=g==1),e=d.next(".ui-slider"),h=d.attr("data-icon"),e.wrap('<div class="ui-slider-container"></div>'),b.handle=e.find(".ui-slider-handle"),e.removeClass("ui-btn-corner-all"),e.find("*").removeClass("ui-btn-corner-all");switch(h){case"bright":case"volume":l=a('<div class="ui-slider-left-'+h+'"></div>'),m=a('<div class="ui-slider-right-'+h+'"></div>'),e.before(l),e.after(m),n=l.width()+16,o=m.width()+16;break;case"text":j=d.attr("data-text-left")===c?"":d.attr("data-text-left").substring(0,3),i=d.attr("data-text-right")===c?"":d.attr("data-text-right").substring(0,3),k=Math.max(j.length,i.length)+1,n=k+"rem",o=k+"rem",l=a('<div class="ui-slider-left-text" style="left:'+ -k+"rem; width:"+k+'rem;">'+'<span style="position:relative;top:0.4em;">'+j+"</span></div>"),m=a('<div class="ui-slider-right-text" style="right:'+ -k+"rem; width:"+k+'rem;">'+'<span style="position:relative;top:0.4em;">'+i+"</span></div>"),e.before(l),e.after(m)}h&&e.parent(".ui-slider-container").css({"margin-left":n,"margin-right":o}),e.append(a('<div class="ui-slider-handle-press"></div>')),b.handle_press=e.find(".ui-slider-handle-press"),b.handle_press.css("display","none"),e.parents(".ui-page").append(b.popup),b.popup.hide(),b.handleText=e.find(".ui-btn-text"),b.updateSlider(),this.element.bind("change",function(){b.updateSlider()}),b.handle.bind("vmousedown",function(){b.showPopup()}),e.add(document).bind("vmouseup",function(){b.hidePopup()})},_handle_press_show:function(){this.handle_press.css("display","")},_handle_press_hide:function(){this.handle_press.css("display","none")},positionPopup:function(){var a=this.handle.offset();this.popup.offset({left:a.left+(this.handle.width()-this.popup.width())/2,top:a.top-this.popup.height()}),this.handle_press.offset({left:a.left,top:a.top})},updateSlider:function(){var a,b,c,d,e,f=function(a){var b=Math.abs(a),c;return b>999?c=4:b>99?c=3:b>9?c=2:c=1,a<0&&c++,c};this.handle.removeAttr("title"),e=this.element.val(),b=f(e);if(this.popupVisible){this.positionPopup();switch(b){case 1:case 2:a="1.5rem",d="0.15rem";break;case 3:a="1rem",d="0.5rem";break;default:a="0.8rem",d="0.5rem"}this.popup.css({"font-size":a,"padding-top":d})}if(e===this.currentValue)return;switch(b){case 1:a="0.95rem",c="0";break;case 2:a="0.85rem",c="-0.01rem";break;case 3:a="0.65rem",c="-0.05rem";break;default:a="0.45rem",c="-0.15rem"}a!=this.handleText.css("font-size")&&this.handleText.css({"font-size":a,top:c}),this.currentValue=e,this.handleText.text(e),this.popup.html(e),this.element.trigger("update",e)},showPopup:function(){if(!this.options.popup||this.popupVisible)return;this.popup.show(),this.popupVisible=!0,this._handle_press_show()},hidePopup:function(){if(!this.options.popup||!this.popupVisible)return;this.popup.hide(),this.popupVisible=!1,this._handle_press_hide()},_setOption:function(a,b){var c=b!==this.options[a];if(!c)return;switch(a){case"popup":this.options.popup=b,this.options.popup?this.updateSlider():this.hidePopup()}}}),a(document).bind("pagebeforecreate",function(d){a.data(b,"jqmSliderInitSelector")===c&&(a.data(b,"jqmSliderInitSelector",a.mobile.slider.prototype.options.initSelector),a.mobile.slider.prototype.options.initSelector=null)}),a(document).bind("pagecreate create",function(c){var d=a.data(b,"jqmSliderInitSelector");a(c.target).find(d).not("select").tizenslider(),a(c.target).find(d).filter("select").slider()})}(jQuery,this),function(a,b,c){a.widget("tizen.progressbar",a.mobile.widget,{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=a("<div class='ui-progressbar-value'></div>").appendTo(this.element),this.valueDiv.wrap("<div class='ui-progressbar-bg'></div>"),this.oldValue=this._value(),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(a){return a===c?this._value():(this._setOption("value",a),this)},_setOption:function(a,b){a==="value"&&(this.options.value=b,this._refreshValue(),this._value()===this.options.max&&this.element.trigger("complete"))},_value:function(){var a=this.options.value;return typeof a!="number"&&(a=0),Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this.element.trigger("change")),this.valueDiv.toggle(a>this.min).width(b.toFixed(0)+"%"),this.element.attr("aria-valuenow",a)}}),a(document).bind("pagecreate",function(b){a(b.target).find(":jqmData(role='progressbar')").progressbar()})}(jQuery,this),function(a,b){a.widget("tizen.searchbar",a.mobile.widget,{options:{theme:null,initSelector:"input[type='search'],:jqmData(type='search'), input[type='tizen-search'],:jqmData(type='tizen-search')"},_create:function(){function t(){setTimeout(function(){h.toggleClass("ui-input-clear-hidden",!c.val())},0)}function u(){g.addClass("ui-input-search-default").removeClass("ui-input-search-wide"),i.addClass("ui-btn-cancel-show").removeClass("ui-btn-cancel-hide")}function v(){g.addClass("ui-input-search-wide").removeClass("ui-input-search-default"),i.addClass("ui-btn-cancel-hide").removeClass("ui-btn-cancel-show"),t()}function w(){var b=a(c).jqmData("icon"),d=a("<div data-role='button' data-style='circle'></div>");d.appendTo(g.parent()).buttonMarkup({icon:b,iconpos:"notext",corners:!0,shadow:!0}),d.addClass("ui-btn-search-front-icon")}var c=this.element,d=this.options,e=d.theme||a.mobile.getInheritedTheme(this.element,"c"),f=" ui-body-"+e,g,h,i,j,k,l,m,n,o,p,q,r=!1,s=!1;a("label[for='"+c.attr("id")+"']").addClass("ui-input-text"),typeof c[0].autocorrect!="undefined"&&!a.support.touchOverflow&&(c[0].setAttribute("autocorrect","off"),c[0].setAttribute("autocomplete","off")),g=c.wrap("<div class='ui-input-search ui-shadow-inset ui-corner-all ui-btn-shadow"+f+"'></div>").parent(),a(this.element).data("cancel-btn")===!0&&(r=!0,g.addClass("ui-input-search-default")),a(this.element).data("icon")!=b&&(s=!0,g.addClass("ui-search-bar-icon")),h=a("<a href='#' class='ui-input-clear' title='clear text'>clear text</a>").bind("click",function(a){if(c.attr("disabled")=="disabled")return!1;c.val("").focus().trigger("change"),h.addClass("ui-input-clear-hidden"),a.preventDefault()}).appendTo(g).buttonMarkup({icon:"deleteSearch",iconpos:"notext",corners:!0,shadow:!0}),t(),c.bind("paste cut keyup focus change blur",t),g.wrapAll("<div class='input-search-bar'></div>"),p=a("<div class='ui-image-search'></div>").appendTo(g),s&&w(),r&&(i=a("<div data-role='button' class='ui-input-cancel' title='clear text'>Cancel</div>").bind("click",function(a){if(c.attr("disabled")=="disabled")return!1;a.preventDefault(),a.stopPropagation(),c.val("").blur().trigger("change"),r&&v()}).appendTo(g.parent()).buttonMarkup({iconpos:"cancel",corners:!0,shadow:!0})),c.focus(function(){if(c.attr("disabled")=="disabled")return!1;r&&u(),g.addClass(a.mobile.focusClass)}).blur(function(){g.removeClass(a.mobile.focusClass)}),j=c.jqmData("default-text"),j!=b&&j.length>0&&(k="ui-input-default-text",l=j.replace(/\s/g,""),m=k+"-"+l,n=a("<style>."+m+":after"+"{content:"+"'"+j+"'"+"}"+"</style>"),a("html > head").append(n),o=a("<div></div>"),o.addClass(k),o.addClass(m),o.tap(function(a){c.blur(),c.focus()}),c.parent().append(o),c.focus(function(){c.parent().find("div.ui-input-default-text").addClass("ui-input-default-hidden")}).blur(function(){var a=c.val();a.length>0?c.parent().find("div.ui-input-default-text").addClass("ui-input-default-hidden"):c.parent().find("div.ui-input-default-text").removeClass("ui-input-default-hidden")})),c.attr("placeholder")||c.attr("placeholder","Search")},disable:function(){this.element.attr("disabled",!0),this.element.parent().addClass("ui-disabled"),a(this.element).blur(),this.element.parent().parent().find(".ui-input-cancel").addClass("ui-disabled")},enable:function(){this.element.attr("disabled",!1),this.element.parent().removeClass("ui-disabled"),this.element.parent().parent().find(".ui-input-cancel").removeClass("ui-disabled"),a(this.element).focus()}}),a(document).bind("pagecreate create",function(b){a.tizen.searchbar.prototype.enhanceWithin(b.target)})}(jQuery),function(a,b,c,d){function e(a,b){var c=a%b;return c<0&&(c=b+c),c}function f(b){this.options=a.extend({},b),this.easing="easeOutQuad",this.reset()}function l(){return Date.now()}var g={scrolling:0,done:1},h=0,i=1,j=-1,k=/src\s*=\s*[\"\'][\w\/.]+.[A-z]+[\"\']/;a.extend(f.prototype,{start:function(a,b,c){this.state=b!==0?g.scrolling:g.done,this.pos=a,this.speed=b,this.duration=c,this.fromPos=0,this.toPos=0,this.startTime=l()},reset:function(){this.state=g.done,this.pos=0,this.speed=0,this.duration=0},update:function(){var b=this.state,c,d,e,f;return b==g.done?this.pos:(c=this.duration,d=l()-this.startTime,d=d>c?c:d,e=this.speed*(1-a.easing[this.easing](d/c,d,0,1,c)),f=this.pos+e/2,this.pos=f,d>=c&&(this.state=g.done),this.pos)},done:function(){return this.state==g.done},getPosition:function(){return this.pos}}),jQuery.widget("mobile.virtualgrid",jQuery.mobile.widget,{options:{template:"",direction:"y",rotation:!1},create:function(){this._create.apply(this,arguments)},_create:function(b){a.extend(this,{_$view:null,_$clip:null,_$rows:null,_tracker:null,_viewSize:0,_clipSize:0,_cellSize:d,_currentItemCount:0,_itemCount:1,_inheritedSize:null,_timerInterval:0,_timerID:0,_timerCB:null,_lastMove:null,_itemData:function(a){return null},_numItemData:0,_cacheItemData:function(a,b){},_totalRowCnt:0,_templateText:null,_maxViewSize:0,_modifyViewPos:0,_maxSizeExceptClip:0,_maxSize:0,_direction:!1,_didDrag:!0,_reservedPos:0,_scalableSize:0,_eventPos:0,_nextPos:0,_movePos:0,_lastY:0,_speedY:0,_lastX:0,_speedX:0,_rowsPerView:0,_fragment:null,_filterRatio:.9,_overflowStartPos:0,_overflowDir:0,_overflowMaxDragDist:100});var e=this,f=a(e.element),g=e.options,h=null;if(!b)return;if(!e._loadData(b))return;e._fragment=c.createDocumentFragment(),e._inheritedSize=e._getinheritedSize(e.element),e._direction=g.direction==="x"?!0:!1,e._$clip=f.addClass("ui-scrollview-clip").addClass("ui-virtualgrid-view"),h=a(c.createElement("div")).addClass("ui-scrollview-view"),e._clipSize=e._calculateClipSize(),e._$clip.append(h),e._$view=h,e._$clip.css("overflow","hidden"),e._$view.css("overflow","hidden"),e._scrollView=a.tizen.scrollview.prototype,e._initScrollView(),e._createTracker(),e._makePositioned(e._$clip),e._timerInterval=1e3/e.options.fps,e._timerID=0,e._timerCB=function(){e._handleMomentumScroll()},f.closest(".ui-content").addClass("ui-virtualgrid-content").css("overflow","hidden"),e._addBehaviors(),e._currentItemCount=0,e._createOverflowArea(),e._createScrollBar(),e.refresh()},_loadData:function(a){var b=this;if(!a.itemData||typeof a.itemData!="function")return!1;b._itemData=a.itemData;if(!a.numItemData)return!1;if(typeof a.numItemData=="function")b._numItemData=a.numItemData();else{if(typeof a.numItemData!="number")return!1;b._numItemData=a.numItemData}return b._getObjectNames(b._itemData(0)),!0},_initLayout:function(){var a=this,b=a.options,c,d;for(c=-1;c<a._rowsPerView+1;c+=1)d=a._$rows[e(c,a._$rows.length)],a._$view.append(d);a._setElementTransform(-a._cellSize),a._replaceRow(a._$view[0].firstChild,a._totalRowCnt-1),b.rotation&&a._rowsPerView>=a._totalRowCnt&&a._replaceRow(a._$view[0].lastChild,0),a._setViewSize()},_setViewSize:function(){var a=this,b=0,c=0;a._direction?(c=a._cellSize*(a._rowsPerView+2),c=parseInt(c,10)+1,a._$view.width(c),a._viewSize=a._$view.width()):(a._$view.height(a._cellSize*(a._rowsPerView+2)),a._$clip.height(a._clipSize),a._viewSize=a._$view.height())},_getViewWidth:function(){var a=this;return a._maxSize},_getViewHeight:function(){var a=this;return a._maxSize},refresh:function(){var b=this,c=b.options,d=0,e=0,f=null;f=a("#"+c.template);if(!f)return;b._templateText=b._insertAriaAttrToTmpl(f.text()),d=b._calculateClipWidth(),e=b._calculateClipHeight(),b._$view.width(d).height(e),b._$clip.width(d).height(e),b._clipSize=b._calculateClipSize(),b._calculateColumnSize(),b._initPageProperty(),b._setScrollBarSize()},_initPageProperty:function(){var b=this,c=0,d,e=0,f=0,g=b._direction?"width":"height";e=b._calculateColumnCount(),f=parseInt(b._numItemData/e,10),b._totalRowCnt=b._numItemData%e===0?f:f+1,b._itemCount=e;if(b._cellSize<=0)return;c=b._clipSize/b._cellSize,c=Math.ceil(c),b._rowsPerView=parseInt(c,10),d=a(b._makeRows(c+2)),b._$view.append(d.children()),b._$view.children().css(g,b._cellSize+"px"),b._$rows=b._$view.children().detach(),b._reservedPos=-b._cellSize,b._scalableSize=-b._cellSize,b._initLayout(),b._blockScroll=b._rowsPerView>b._totalRowCnt,b._maxSizeExceptClip=(b._totalRowCnt-b._rowsPerView)*b._cellSize,b._maxSize=b._totalRowCnt*b._cellSize,b._maxViewSize=b._rowsPerView*b._cellSize,b._modifyViewPos=-b._cellSize,b._clipSize<b._maxViewSize&&(b._modifyViewPos=-b._cellSize+(b._clipSize-b._maxViewSize))},_getinheritedSize:function(b){var c=a(b),d,e,f={ELEMENT_NODE:1,TEXT_NODE:3},g={isDefinedWidth:!1,isDefinedHeight:!1,width:0,height:0};while(c[0].nodeType===f.ELEMENT_NODE&&(g.isDefinedWidth===!1||g.isHeightDefined===!1)){d=c[0].style.height,e=c[0].style.width,g.isDefinedHeight===!1&&d!==""&&(g.isDefinedHeight=!0,g.height=parseInt(d,10)),g.isDefinedWidth===!1&&e!==""&&(g.isDefinedWidth=!0,g.width=parseInt(e,10)),c=c.parent();if(c.hasClass("ui-content"))break}return g},_resize:function(){var a=this,b=null,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=null,l=0;a._direction?(l=a._calculateClipHeight(),a._$view.height(l),a._$clip.height(l)):(l=a._calculateClipWidth(),a._$view.width(l),a._$clip.width(l)),d=a._calculateColumnCount(),d!=a._itemCount&&(e=parseInt(a._numItemData/d,10),a._totalRowCnt=a._numItemData%d===0?e:e+1,h=a._itemCount,a._itemCount=d,i=a._getClipPosition(),a._$view.hide(),f=a._replaceRows(d,h,a._totalRowCnt,i),a._maxSizeExceptClip=(a._totalRowCnt-a._rowsPerView)*a._cellSize,a._maxSize=a._totalRowCnt*a._cellSize,a._scalableSize+=-f*a._cellSize,a._reservedPos+=-f*a._cellSize,a._setScrollBarSize(),a._setScrollBarPosition(f),a._$view.show()),g=a._calculateClipSize(),g!==a._clipSize&&(c=g/a._cellSize,c=parseInt(Math.ceil(c),10),c>a._rowsPerView?a._increaseRow(c-a._rowsPerView):c<a._rowsPerView&&a._decreaseRow(a._rowsPerView-c),a._$rows=a._$view.children(),a._$rows.sort(function(a,b){return a.getAttribute("row-index")-b.getAttribute("row-index")}),a._rowsPerView=c,a._clipSize=g,a._blockScroll=a._rowsPerView>a._totalRowCnt,a._maxSizeExceptClip=(a._totalRowCnt-a._rowsPerView)*a._cellSize,a._maxSize=a._totalRowCnt*a._cellSize,a._maxViewSize=a._rowsPerView*a._cellSize,a._clipSize<a._maxViewSize&&(a._modifyViewPos=-a._cellSize+(a._clipSize-a._maxViewSize)),a._direction?a._$clip.width(a._clipSize):a._$clip.height(a._clipSize),a._setScrollBarSize(),a._setScrollBarPosition(0),a._setViewSize())},resize:function(){var b=this,c=0,d=a(".ui-virtualgrid-view");b._inheritedSize=b._getinheritedSize(b.element),d.length!==0&&b._resize()},_initScrollView:function(){var b=this,c=b.options.direction;a.extend(b.options,b._scrollView.options),b.options.direction=c,b.options.moveThreshold=10,b.options.showScrollBars=!1,b._getScrollHierarchy=b._scrollView._getScrollHierarchy,b._makePositioned=b._scrollView._makePositioned,b._set_scrollbar_size=b._scrollView._set_scrollbar_size,b._setStyleTransform=b._scrollView._setElementTransform,b._hideOverflowIndicator=b._scrollView._hideOverflowIndicator,b._showOverflowIndicator=b._scrollView._showOverflowIndicator,b._setGestureScroll=b._scrollView._setGestureScroll},_createTracker:function(){var a=this;a._tracker=new f(a.options),a._direction?(a._hTracker=a._tracker,a._$clip.width(a._clipSize)):(a._vTracker=a._tracker,a._$clip.height(a._clipSize))},_createOverflowArea:function(){var b=this,c='<div class="ui-virtualgrid-overflow-indicator-',d='-top"></div>'
+,e='-bottom"></div>';if(b.options.rotation)return;b._direction?(b._overflowTop=a(c+"x"+d),b._overflowBottom=a(c+"x"+e)):(b._overflowTop=a(c+"y"+d),b._overflowBottom=a(c+"y"+e)),b._$clip.append(b._overflowTop),b._$clip.append(b._overflowBottom),b._overflowDisplayed=!1},_hideVGOverflowIndicator:function(){if(this._overflowDisplayed===!1)return;this._overflowTop.animate({opacity:0},300),this._overflowBottom.animate({opacity:0},300),this._overflowDisplayed=!1},_createScrollBar:function(){var a=this,b='<div class="ui-scrollbar ui-scrollbar-',c='"><div class="ui-scrollbar-track"><div class="ui-scrollbar-thumb"></div></div></div>';if(a.options.rotation)return;a._direction?(a._$clip.append(b+"x"+c),a._hScrollBar=a._$clip.children(".ui-scrollbar-x"),a._hScrollBar.find(".ui-scrollbar-thumb").addClass("ui-scrollbar-thumb-x")):(a._$clip.append(b+"y"+c),a._vScrollBar=a._$clip.children(".ui-scrollbar-y"),a._vScrollBar.find(".ui-scrollbar-thumb").addClass("ui-scrollbar-thumb-y"))},_setScrollBarSize:function(){var a=this,b=0,c=0,d,e,f;if(a.options.rotation)return;b=parseInt(a._maxViewSize/a._clipSize,10),a._direction?(d=a._hScrollBar.find(".ui-scrollbar-thumb"),e="width",c=d.width(),f="ui-scrollbar-thumb-x",a._hScrollBar.css("width",a._clipSize)):(d=a._vScrollBar.find(".ui-scrollbar-thumb"),e="height",f="ui-scrollbar-thumb-y",c=d.height(),a._vScrollBar.css("height",a._clipSize)),b>c?(d.removeClass(f),d.css(e,b)):b=c,a._itemScrollSize=parseFloat((a._clipSize-b)/(a._totalRowCnt-a._rowsPerView)),a._itemScrollSize=Math.round(a._itemScrollSize*100)/100},_setScrollBarPosition:function(a,b){var c=this,d=null,e="0px",f="0px",g;if(c.options.rotation)return;c._currentItemCount=c._currentItemCount+a,c._vScrollBar?(d=c._vScrollBar.find(".ui-scrollbar-thumb"),f=c._currentItemCount*c._itemScrollSize+"px"):(d=c._hScrollBar.find(".ui-scrollbar-thumb"),e=c._currentItemCount*c._itemScrollSize+"px"),c._setStyleTransform(d,e,f,b)},_hideScrollBars:function(){var a=this,b="ui-scrollbar-visible";if(a.options.rotation)return;a._vScrollBar?a._vScrollBar.removeClass(b):a._hScrollBar.removeClass(b)},_showScrollBars:function(){var a=this,b="ui-scrollbar-visible";if(a.options.rotation)return;a._vScrollBar?a._vScrollBar.addClass(b):a._hScrollBar.addClass(b)},centerTo:function(b){var c=this,d=null,e=null,f=-1,g=c._$rows.length,h,i;if(!c.options.rotation)return;for(i=0;i<g;++i){d=a(c._$rows[i]),e=d.children("."+b);if(e.length){f=parseInt(d.attr("row-index"),10);break}}if(f===-1){f=c._getTargetRowIndex(b);if(f===-1)return}h=-(f*c._cellSize-(c._clipSize-c._cellSize)/2),c._direction?c.scrollTo(h,0):c.scrollTo(0,h)},_getTargetRowIndex:function(a){var b=this,c=b._numItemData,d=b._itemCount,e=b._direction?"top":"left",f="",g=b._totalRowCnt,h;for(h=0;h<c;++h){f=b._makeHtmlData(h,h%d,e);if(b._hasClassItem(f,a)){g=parseInt(h/d,10);break}}return g===b._totalRowCnt?-1:g},_hasClassItem:function(a,b){var c=this,d=c._getItemClass(a);return d.indexOf(b)===-1?!1:d.indexOf("virtualgrid-item")===-1?!1:!0},_getItemClass:function(a){var b=a.indexOf("class"),c=Math.min(a.indexOf('"',b),a.indexOf("'",b)),d=Math.min(a.indexOf('"',c+1),a.indexOf("'",c+1));return a.slice(c+1,d)},scrollTo:function(a,b,c){var d=this;d._direction?(a-=d._cellSize,d._sx=d._reservedPos,d._reservedPos=a):(b-=d._cellSize,d._sy=d._reservedPos,d._reservedPos=b),d._scrollView.scrollTo.apply(this,[a,b,c])},getScrollPosition:function(){return this.direction?{x:-this._ry,y:0}:{x:0,y:-this._ry}},_setScrollPosition:function(a,b){var c=this,d=c._scalableSize,f=c._direction?a:b,g=f-d,k=parseInt(g/c._cellSize,10),l=0,m=0,n=0,o=c._rowsPerView+2,p=c._$view[0];if(c._blockScroll){g>0&&f>=-c._cellSize&&c._scalableSize>=-c._cellSize&&(c._overflowDir=i),g<0&&c._scalableSize<=-(c._maxSizeExceptClip+c._cellSize)&&(c._overflowDir=j);return}if(!c.options.rotation){if(g>0&&f>=-c._cellSize&&c._scalableSize>=-c._cellSize){c._stopMScroll(),c._scalableSize=-c._cellSize,c._setElementTransform(-c._cellSize),c._overflowDir===h&&(c._overflowDir=i);return}if(g<0&&c._scalableSize<=-(c._maxSizeExceptClip+c._cellSize)){c._stopMScroll(),c._scalableSize=-(c._maxSizeExceptClip+c._cellSize),c._setElementTransform(c._modifyViewPos),c._overflowDir===h&&(c._overflowDir=j);return}}n=Math.abs(k)<o?0:k>0?k-o:k+o;if(k>0)for(l=n;l<k;++l)m=-parseInt(d/c._cellSize+l+3,10),c._replaceRow(p.lastChild,e(m,c._totalRowCnt)),p.insertBefore(p.lastChild,p.firstChild);else if(k<0)for(l=n;l>k;--l)m=c._rowsPerView-parseInt(d/c._cellSize+l,10),c._replaceRow(p.firstChild,e(m,c._totalRowCnt)),p.insertBefore(p.firstChild,p.lastChild.nextSibling);c._setScrollBarPosition(-k),c._scalableSize+=k*c._cellSize,c._setElementTransform(f-c._scalableSize-c._cellSize)},_setElementTransform:function(a){var b=this,c=0,d=0;b._direction?c=a+"px":d=a+"px",b._setStyleTransform(b._$view,c,d)},_handleMomentumScroll:function(){var a=this,b=a.options,c=!1,d=this._$view,e=0,f=0,g=a._tracker;g&&(g.update(),a._direction?e=g.getPosition():f=g.getPosition(),c=!g.done()),a._setScrollPosition(e,f),b.rotation?a._reservedPos=a._direction?e:f:(c=!g.done(),a._reservedPos=a._direction?e:f,a._reservedPos=a._reservedPos<=-(a._maxSizeExceptClip-a._modifyViewPos)?-(a._maxSizeExceptClip+a._cellSize):a._reservedPos,a._reservedPos=a._reservedPos>-a._cellSize?-a._cellSize:a._reservedPos),a._$clip.trigger(a.options.updateEventName,[{x:e,y:f}]),c?a._timerID=setTimeout(a._timerCB,a._timerInterval):a._stopMScroll()},_startMScroll:function(a,b){var c=this;c._direction?c._sx=c._reservedPos:c._sy=c._reservedPos,c._scrollView._startMScroll.apply(c,[a,b])},_stopMScroll:function(){this._scrollView._stopMScroll.apply(this)},_enableTracking:function(){var a=this;a._$view.bind(a._dragMoveEvt,a._dragMoveCB),a._$view.bind(a._dragStopEvt,a._dragStopCB),a._scrollView._enableTracking.apply(a)},_disableTracking:function(){var a=this;a._$view.unbind(a._dragMoveEvt,a._dragMoveCB),a._$view.unbind(a._dragStopEvt,a._dragStopCB),a._scrollView._disableTracking.apply(a)},_handleDragStart:function(a,b,c){var d=this;d._scrollView._handleDragStart.apply(this,[a,b,c]),d._eventPos=d._direction?b:c,d._nextPos=d._reservedPos},_handleDragMove:function(a,b,c){var d=this,e=b-d._lastX,f=c-d._lastY,g=0,j=0,k=0,m=0,n=0,o=0,p=null;return d._lastMove=l(),d._speedX=e,d._speedY=f,d._didDrag=!0,d._lastX=b,d._lastY=c,d._direction?(d._movePos=b-d._eventPos,g=d._nextPos+d._movePos,o=b):(d._movePos=c-d._eventPos,j=d._nextPos+d._movePos,o=c),d._showScrollBars(),d._setScrollPosition(g,j),d._overflowDir!==h&&(p=d._overflowDir===i?d._overflowTop:d._overflowBottom,d._overflowDisplayed||(d._overflowDisplayed=!0,d._overflowStartPos=o),k=(o-d._overflowStartPos)*d._overflowDir,n=k<0?0:k>d._overflowMaxDragDist?1:k/d._overflowMaxDragDist,p.css("opacity",n)),!1},_handleDragStop:function(a){var b=this;return b._reservedPos=b._movePos?b._nextPos+b._movePos:b._reservedPos,b._scrollView._handleDragStop.apply(this,[a]),b._overflowDir!==h&&(b._overflowDir=h,b._hideVGOverflowIndicator()),b._didDrag?!1:d},_addBehaviors:function(){var d=this;d.options.eventType==="mouse"?(d._dragStartEvt="mousedown",d._dragStartCB=function(a){return d._handleDragStart(a,a.clientX,a.clientY)},d._dragMoveEvt="mousemove",d._dragMoveCB=function(a){return d._handleDragMove(a,a.clientX,a.clientY)},d._dragStopEvt="mouseup",d._dragStopCB=function(a){return d._handleDragStop(a,a.clientX,a.clientY)},d._$view.bind("vclick",function(a){return!d._didDrag})):(d._dragStartEvt="touchstart",d._dragStartCB=function(a){var b=a.originalEvent.targetTouches[0];return d._handleDragStart(a,b.pageX,b.pageY)},d._dragMoveEvt="touchmove",d._dragMoveCB=function(a){var b=a.originalEvent.targetTouches[0];return d._handleDragMove(a,b.pageX,b.pageY)},d._dragStopEvt="touchend",d._dragStopCB=function(a){return d._handleDragStop(a)}),d._$view.bind(d._dragStartEvt,d._dragStartCB),d._$view.delegate(".virtualgrid-item","click",function(b){var c=a(this);c.trigger("select",this)}),a(b).bind("resize",function(b){var c=0,e=a(".ui-virtualgrid-view");e.length!==0&&d._resize()}),a(c).one("pageshow",function(c){var e=a(d.element).parents(".ui-page"),f=e.find(":jqmData(role='header')"),g=e.find(":jqmData(role='footer')"),h=e.find(":jqmData(role='content')"),i=g?g.height():0,j=f?f.height():0;e&&h&&(h.height(b.innerHeight-j-i).css("overflow","hidden"),h.addClass("ui-virtualgrid-content"))})},_calculateClipSize:function(){var a=this,b=0;return a._direction?b=a._calculateClipWidth():b=a._calculateClipHeight(),b},_calculateClipWidth:function(){var c=this,d=c._$clip.parent(),e=0,f=a(b).width();return c._inheritedSize.isDefinedWidth?c._inheritedSize.width:(d.hasClass("ui-content")?(e=parseInt(d.css("padding-left"),10),f-=e||0,e=parseInt(d.css("padding-right"),10),f-=e||0):f=c._$clip.width(),f)},_calculateClipHeight:function(){var c=this,d=c._$clip.parent(),e=null,f=null,g=0,h=a(b).height();return c._inheritedSize.isDefinedHeight?c._inheritedSize.height:(d.hasClass("ui-content")?(g=parseInt(d.css("padding-top"),10),h-=g||0,g=parseInt(d.css("padding-bottom"),10),h-=g||0,e=d.siblings(".ui-header"),f=d.siblings(".ui-footer"),e&&(e.outerHeight(!0)===null?h-=a(".ui-header").outerHeight()||0:h-=e.outerHeight(!0)),f&&(h-=f.outerHeight(!0))):h=c._$clip.height(),h)},_calculateColumnSize:function(){var b=this,c,d;c=a(b._makeRows(1)),b._$view.append(c.children().first()),b._direction?(b._viewSize=b._$view.width(),d=b._$view.children().first().children().first(),b._cellSize=d.outerWidth(!0),b._cellOtherSize=d.outerHeight(!0)):(b._viewSize=b._$view.height(),d=b._$view.children().first().children().first(),b._cellSize=d.outerHeight(!0),b._cellOtherSize=d.outerWidth(!0)),c.remove(),b._$view.children().remove()},_calculateColumnCount:function(){var a=this,b=a._$clip,c=a._direction?b.innerHeight():b.innerWidth(),d=0;return a._direction?c-=parseInt(b.css("padding-top"),10)+parseInt(b.css("padding-bottom"),10):c-=parseInt(b.css("padding-left"),10)+parseInt(b.css("padding-right"),10),d=parseInt(c/a._cellOtherSize,10),d>0?d:1},_getClipPosition:function(){var a=this,b=null,c=null,d=-a._cellSize,e=a._$view.closest(".ui-scrollview-view");return e&&(b=e.css("-webkit-transform"),c=b.substr(7),c=c.substr(0,c.length-1),c=c.split(", "),d=Math.abs(c[5])),d},_makeRows:function(a){var b=this,c=0,d=null,e=null;e=b._createElement("div"),e.setAttribute("class","ui-scrollview-view");for(c=0;c<a;c+=1)d=b._makeRow(c),b._direction&&(d.style.top=0,d.style.left=c*b._cellSize),e.appendChild(d);return e},_makeRow:function(a){var b=this,c=a*b._itemCount,d=0,e=b._direction?"ui-virtualgrid-wrapblock-x":"ui-virtualgrid-wrapblock-y",f=b._createElement("div"),g="",h=b._direction?"top":"left";for(d=0;d<b._itemCount;d++)g+=b._makeHtmlData(c,d,h),c+=1;return f.innerHTML=g,f.setAttribute("class",e),f.setAttribute("row-index",String(a)),b._fragment.appendChild(f),f},_makeHtmlData:function(a,b,c){var d=this,e="",f=null;return f=d._itemData(a),f&&(e=d._getConvertedTmplStr(f),e=d._insertPosToTmplStr(e,c,b*d._cellOtherSize)),e},_insertPosToTmplStr:function(a,b,c){var d=a.indexOf(">"),e=-1,f,g,h,i=!1,j=0,k,l=0;if(d===-1)return;f=a.slice(0,d),g=a.slice(d,a.length),e=f.indexOf("class");if(e!==-1){k=f.length;for(l=e+6;l<k;l++)if(f.charAt(l)==='"'||f.charAt(l)==="'"){if(i!==!1){j=l;break}i=!0}h=f.slice(0,j)+" virtualgrid-item"+f.slice(j,k)+g}else h=f+' class="virtualgrid-item"'+g;return isNaN(c)||(h=h.replace(">",' style="'+b+": "+String(c)+'px">')),h},_increaseRow:function(b){var c=this,d=c.options.rotation,f=c._totalRowCnt,g=c._$view[0],h=null,i=g.lastChild,j=null,k=0,l=0,m;if(!i)return;l=parseInt(i.getAttribute("row-index"),10),d||(h=g.firstChild,k=parseInt(h.getAttribute("row-index"),10));for(m=0;m<b;++m){if(l>=f-1&&!d){if(k==0)break;j=c._makeRow(--k),g.insertBefore(j,h),h=j}else j=c._makeRow(e(++l,f)),g.appendChild(j);c._direction?a(j).width(c._cellSize):a(j).height(c._cellSize)}},_decreaseRow:function(a){var b=this,c=b._$view[0],d;for(d=0;d<a;++d)c.removeChild(c.lastChild)},_replaceRows:function(b,c,d,f){var g=this,h=g._$view.children(),i=0,j=0,k=0,l=1,m=g._filterRatio*g._cellSize+g._cellSize,n=0;m<f&&(l+=1),i=parseInt(a(h[l]).attr("row-index"),10),i===0?j=d-l:(j=Math.round(i*c/b),j+g._rowsPerView>=d&&(j=d-g._rowsPerView),k=i-j,j-=l);for(n=0;n<h.length;n+=1)g._replaceRow(h[n],e(j,g._totalRowCnt)),j++;return-k},_replaceRow:function(a,b){var c=this,d=null;while(a.hasChildNodes())a.removeChild(a.lastChild);d=c._makeRow(b);while(d.children.length)a.appendChild(d.children[0]);a.setAttribute("row-index",d.getAttribute("row-index")),d.parentNode.removeChild(d)},_createElement:function(a){var b=c.createElement(a);return this._fragment.appendChild(b),b},_getObjectNames:function(a){var b=[],c="";for(c in a)b.push(c);this._properties=b},_getConvertedTmplStr:function(a){var b=this,c=b._properties,d=0,e,f="";if(!a)return;e=b._templateText;for(d=0;d<c.length;d++)e=b._strReplace(e,"${"+c[d]+"}",a[c[d]]);return e=b._changeImgSrcAriaAttrFromTmpl(e),e},_changeImgSrcAriaAttrFromTmpl:function(a){var b=this,c="",d,e="",f="",g,h,i,j;i=a,d=i.indexOf("$ARIA-IMG-SRC-ALT$");while(d!==-1)g="",e+=i.slice(0,d+19),f=i.slice(d+19,i.length),j=f.match(k),j&&(h=j[0].lastIndexOf("/"),h!==-1&&(g=j[0].slice(h+1,-1))),e=e.replace("$ARIA-IMG-SRC-ALT$",g),i=f,d=i.indexOf("$ARIA-IMG-SRC-ALT$"),c=e+f;return c===""&&(c=a),c},_insertAriaAttrToTmpl:function(a){var b="",c,d="",e="",f;f=a.replace("<div",'<div tabindex="0" aria-selected="true"'),c=f.indexOf("<img");if(c!==-1){while(c!==-1)d+=f.slice(0,c+4),e=f.slice(c+4,f.length),d+=' role="img" alt="$ARIA-IMG-SRC-ALT$"',f=e,c=f.indexOf("<img"),b=d+e;f=b,c=f.indexOf("<span"),d="";while(c!==-1)d+=f.slice(0,c+5),e=f.slice(c+5,f.length),d+=' aria-hidden="true" tabindex="-1"',f=e,c=f.indexOf("<span"),b=d+e}return b===""&&(b=a),b},_strReplace:function(a,b,c){var d=a,e=a.indexOf(b);while(e!==-1)d=d.replace(b,c),e=d.indexOf(b);return d}}),a(c).bind("pagecreate create",function(b){a(":jqmData(role='virtualgrid')").virtualgrid()})}(jQuery,window,document),function(a,b,c,d){function m(){this.vertices=[-1,-1,0,1,-1,0,1,1,0,-1,1,0],this.textureCoords=[1,0,0,0,0,1,1,1],this.normalVectors=[0,0,1,0,0,1,0,0,1,0,0,1],this.texture=null,this.textureBuffer=null,this.textureBufferItemSize=0,this.mashOrder=[],this.mvMatrix=null,this.level=-1,this.targetLevel=0,this.drawable=!1,this.image=null,this.imageID=0}c.requestAnimationFrame=function(){return function(a){var b=c.setTimeout(a,1e3/60);return b}}(),c.cancelAnimationFrame=function(){return function(a){c.clearTimeout(a)}}();var e=c.vec3,f=c.mat3,g=c.mat4,h=typeof c.Float32Array!="undefined"?c.Float32Array:typeof c.WebGLFloatArray!="undefined"?c.WebGLFloatArray:Array,i=typeof c.Uint16Array!="undefined"?c.Uint16Array:Array,j=function(a){var b,d,e=["experimental-webgl","webkit-3d","webgl","moz-webgl"];for(d=0;d<e.length;d+=1)try{b=a.getContext(e[d]);if(b)break}catch(f){c.alert("Unfortunately, there's a WebGL compatibility problem. </br> You may want to check your system settings.");return}return b},k=["attribute vec3 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec3 aVertexNormal;","uniform mat4 uMoveMatrix;","uniform mat4 uPerspectiveMatrix;","uniform mat3 nNormalMatrix;","uniform vec3 uAmbientColor;","uniform vec3 uLightDirection;","uniform vec3 uDirectionColor;","uniform vec3 uLightDirection_first;","uniform vec3 uLightDirection_second;","varying vec2 vTextureCoord;","varying vec3 vLightWeight;","varying vec4 vFogWeight;","void main(void) {","\tvec4 v_Position = uMoveMatrix * vec4(aVertexPosition, 1.0);","\tgl_Position = uPerspectiveMatrix * v_Position;","\tvTextureCoord = aTextureCoord;","\tfloat fog = 1.0 - ((gl_Position.z + 1.5) / 60.0);","\tvFogWeight = clamp( vec4( fog, fog, fog, 1.0), 0.6, 1.0);","\tvec3 transNormalVector = nNormalMatrix * aVertexNormal;","\tfloat vLightWeightFirst = 0.0;","\tfloat vLightWeightSecond = max( dot(transNormalVector, uLightDirection_second), 0.0 );","\tvLightWeight = uAmbientColor + uDirectionColor * vLightWeightSecond;","}"].join("\n"),l=["precision mediump float;","varying vec2 vTextureCoord;","varying vec3 vLightWeight;","uniform sampler2D uSampler;","varying vec4 vFogWeight;","void main(void) {","\tvec4 TextureColor;","\tif ( vTextureCoord.s <= 0.01 || vTextureCoord.s >= 0.99 || vTextureCoord.t <= 0.01 || vTextureCoord.t >= 0.99 ) {","\t\tTextureColor = vec4(1.0, 1.0, 1.0, 0.5);","\t} else {","\t\tTextureColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));","\t}","\tTextureColor *= vFogWeight;","\tgl_FragColor = vec4(TextureColor.rgb * vLightWeight, TextureColor.a);","}"].join("\n");a.widget("tizen.gallery3d",a.mobile.widget,{options:{thumbnailCache:!1},_MAX_ITEM_COUNT:28,_ANIMATION_END:999,_DURATION_DEFAULT:300,_DURATION_FIRST:1600,_VIEWPORT_WIDTH:1024,_VIEWPORT_HEIGHT:456,_DIRECTION_LEFT:-1,_DIRECTION_RIGHT:1,_gl:null,_shaderProgram:null,_positionBuffer:null,_textureCoordBuffer:null,_normalVectorBuffer:null,_nodes:null,_pMatrix:null,_animationID:0,_dragInterval:0,_startTime:0,_sumTime:0,_lightsPositionStack:[[0,0,-1],[-0.2,0,.7]],_path:null,_swipeThresholdOfBasetimeGap:a.support.touch?30:70,_swipeThresholdOfSensitivity:a.support.touch?2:10,_canvas:null,_imageList:[],_maxDrawLength:0,_firstImageNumber:0,_lastImageNumber:0,_create:function(){var b=this,c=b.element,e=b.options;b._canvas=a("<canvas class='ui-gallery3d-canvas'></canvas>"),c.addClass("ui-gallery3d").append(b._canvas),b._addBehavier(),b._dragInterval=1e3/30,a.each(b.options,function(a,c){b.options[a]=d,b._setOption(a,c)})},_setOption:function(b,c){switch(b){case"thumbnailCache":typeof c=="string"?c=c==="true"?!0:!1:c=!!c,this._reset()}a.mobile.widget.prototype._setOption.call(this,b,c)},_init:function(b){var c=this,d=[[40,0,-48],[-12,0,-40],[24,0,-9],[-5,0,-5]],e;b=b||c._canvas;if(!b)return;c._gl=c._gl||c._initGL(b[0]);if(!c._gl)return;if(!c._imageList)return;c._shaderProgram=c._shaderProgram||c._initShader(c._gl);if(!c._shaderProgram)return;c._imageList.length>c._MAX_ITEM_COUNT&&(c._firstImageNumber=c._imageList.length-1,c._lastImageNumber=c._MAX_ITEM_COUNT-1),c._nodes=c._initBuffers(c._gl,c._shaderProgram),c._initTextures(c._gl,c._nodes),c._path=a.motionpath("bezier2d",{points:d,maxLevel:c._MAX_ITEM_COUNT});for(e=0;e<c._nodes.length;e+=1)c._path.levels[e]=c._path.levels[e+1]||0,c._nodes[e].level=e},_final:function(b){var c=this,d=c._gl;if(!d)return;b=b||c._canvas,a(c._nodes).each(function(a){var b=c._nodes[a];d.deleteTexture(b.texture),b.texture=null}),c._nodes=null,d.deleteBuffer(c._positionBuffer),c._positionBuffer=null,d.deleteBuffer(c._textureCoordBuffer),c._textureCoordBuffer=null,d.deleteBuffer(c._normalVectorBuffer),c._normalVectorBuffer=null,a.webgl.shader.deleteShaders(d),d.deleteProgram(c._shaderProgram),c._shaderProgram=null,c._gl=d=null},_addBehavier:function(){var d=this,e=d.element,f=d._canvas,g=a.support.touch?"touchstart":"mousedown",h=(a.support.touch?"touchmove":"mousemove")+".gallery3d",i=(a.support.touch?"touchend":"mouseup")+".gallery3d",j=(a.support.touch?"touchleave":"mouseout")+".gallery3d";a(b).unbind(".gallery3d").bind("pagechange.gallery3d",function(b){a(b.target).find(".ui-gallery3d").gallery3d("refresh")}).bind("pageremove.gallery3d",function(b){a(b.target).find(".ui-gallery3d").trigger("_destory")}),a(c).unbind(".gallery3d").bind("resize.gallery3d orientationchange.gallery3d",function(b){a(".ui-page-active").find(".ui-gallery3d").gallery3d("refresh")}).bind("unload.gallery3d",function(b){a(b.target).find(".ui-gallery3d").trigger("_destory")}),e.bind("_destory",function(a){d._final()}),f.bind("webglcontextlost",function(a){a.preventDefault()}).bind("webglcontextrestored",function(a){d._init()}).bind(g,function(b){var c=0,f=0,g=20,k=[g],l=[g],m=0,n=0,o=!1,p=0;b.preventDefault(),b.stopPropagation();if(d._imageList.length<=1)return;d._stop(),f=a.support.touch?b.originalEvent.changedTouches[0].pageX:b.pageX,p=a.now();for(c=0;c<g;c+=1)k[c]=f,l[c]=a.now();m+=1,e.bind(h,function(b){var c,e,h;b.preventDefault(),b.stopPropagation(),c=a.support.touch?b.originalEvent.changedTouches[0].pageX:b.pageX,e=f-c,k[m]=c,l[m]=a.now(),h=l[m]-p,m=(m+1)%g,Math.abs(e)>=10&&h>=d._dragInterval&&(o!==(e<0?d._DIRECTION_RIGHT:d._DIRECTION_LEFT)&&(n=0,o=e<0?d._DIRECTION_RIGHT:d._DIRECTION_LEFT),n+=Math.abs(e)/100,n>=1?(d._setPosition(d._ANIMATION_END,o),n=0):d._setPosition(n,o),d._drawScene(),f=c,p=a.now())}).bind(i,function(b){var h=0,i=-1,j=0,p=0,q=0,r=0,s=0,t=0,u=0,v=!0,w;b.preventDefault(),b.stopPropagation(),h=a.now()-d._swipeThresholdOfBasetimeGap,s=a.support.touch?b.originalEvent.changedTouches[0].pageX:b.pageX,u=f-s,f=0;for(c=0;c<g;c+=1){j=(m+c)%g;if(l[j]>h){i=j;break}}i<0&&(v=!1);if(v){p=i;for(c=0;c<g;c+=1){p=(p-1+g)%g;if(l[p]<l[i])break}if(c===g||h<l[p])v=!1}v&&(q=(h-l[p])/(l[i]-l[p]),r=(1-q)*k[p]+q*k[i],Math.abs(r-s)<d._swipeThresholdOfSensitivity&&(r=s),t=parseInt((s-r)/(a.now()-h),10)),v&&t?(w=t<0?d._DIRECTION_LEFT:d._DIRECTION_RIGHT,d._run(w,Math.abs(t),n)):o!==0&&n&&d._animate(null,d._DURATION_DEFAULT*(1-n),o,0,n),e.unbind(".gallery3d")}).bind(j,function(a){e.trigger(i)})})},_initGL:function(a){var b=this,d;return d=j(a),d?(d.enable(d.BLEND),d.blendFunc(d.SRC_ALPHA,d.ONE_MINUS_SRC_ALPHA),d.enable(d.DEPTH_TEST),d.depthFunc(d.LEQUAL),a.width=b._VIEWPORT_WIDTH,a.height=b._VIEWPORT_HEIGHT,d.viewportWidth=a.width,d.viewportHeight=a.height,d.viewport(0,0,d.viewportWidth,d.viewportHeight),b._pMatrix=g.create(),g.perspective(40,d.viewportWidth/d.viewportHeight,.1,1e4,b._pMatrix),d.clearColor(.15,.15,.15,1),d.clear(d.COLOR_BUFFER_BIT|d.DEPTH_BUFFER_BIT),d):(c.alert("There's no WebGL context available!!!"),null)},_initShader:function(b){var c=this,d;return d=a.webgl.shader.addShaderProgram(c._gl,k,l),b.useProgram(d),d.vertexPositionAttr=b.getAttribLocation(d,"aVertexPosition"),b.enableVertexAttribArray(d.vertexPositionAttr),d.textureCoordAttr=b.getAttribLocation(d,"aTextureCoord"),b.enableVertexAttribArray(d.textureCoordAttr),d.vertexNormalAttr=b.getAttribLocation(d,"aVertexNormal"),b.enableVertexAttribArray(d.vertexNormalAttr),d.perspectiveMU=b.getUniformLocation(d,"uPerspectiveMatrix"),d.transformMU=b.getUniformLocation(d,"uMoveMatrix"),d.sampleUniform=b.getUniformLocation(d,"uSampler"),d.normalMU=b.getUniformLocation(d,"nNormalMatrix"),d.ambientColorU=b.getUniformLocation(d,"uAmbientColor"),d.lightDirU_first=b.getUniformLocation(d,"uLightDirection_first"),d.lightDirU_second=b.getUniformLocation(d,"uLightDirection_second"),d.directionColorU=b.getUniformLocation(d,"uDirectionColor"),d},_initBuffers:function(b,c){var d=this,e=0,f=0,g=[],j=[],k=[],l=[],n=d._MAX_ITEM_COUNT;for(e=0;e<d._imageList.length+1;e+=1)l[e]=new m,a.merge(g,l[e].vertices),a.merge(j,l[e].textureCoords),a.merge(k,l[e].normalVectors),l[e].textureBuffer=b.createBuffer(),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,l[e].textureBuffer),f=e*4,l[e].meshOrder=[f,f+1,f+2,f+2,f+3,f],b.bufferData(b.ELEMENT_ARRAY_BUFFER,new i(l[e].meshOrder),b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,null),l[e].textureBufferItemSize=6;return d._positionBuffer=a.webgl.buffer.attribBufferData(b,new h(g)),d._positionBuffer.itemSize=3,d._textureCoordBuffer=a.webgl.buffer.attribBufferData(b,new h(j)),d._textureCoordBuffer.itemSize=2,d._normalVectorBuffer=a.webgl.buffer.attribBufferData(b,new h(k)),d._normalVectorBuffer.itemSize=3,b.uniform3f(c.ambientColorU,.1,.1,.1),b.uniform3f(c.directionColorU,1,1,1),l},_initTextures:function(b,c){var d=this;a(c).each(function(a){var e=c[a],f;if(!d._imageList[a])return!1;f=d._imageList[a].src,e.texture=b.createTexture(),d._loadImage(f,a,a,b,c)})},_loadImage:function(b,c,d,e,f){var g=this,h=!1,i,j;e=e||g._gl,f=f||g._nodes,h=h||!1,j=f[c],j.image=j.image||new Image,a(j.image).one("load",function(a){g._bindTexture(e,j,this,h),j.imageID=d,g._animationID||g._setPosition(0,0)}),g.options.thumbnailCache?a.imageloader.getThumbnail(b,function(c){c==="NOT_FOUND_ERR"?a.imageloader.setThumbnail(b,function(a){a&&a.length>30?(j.image.src=a,h=!0):j.image.src=b}):c&&c.length>30?(j.image.src=c,h=!0):j.image.src=b}):j.image.src=b},_bindTexture:function(a,b,c,d){if(!b||!b.texture)return;a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!0),a.bindTexture(a.TEXTURE_2D,b.texture),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,c),d?(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR_MIPMAP_NEAREST),a.generateMipmap(a.TEXTURE_2D)):(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR)),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),b.texture.loaded=!0,a.bindTexture(a.TEXTURE_2D,null)},_setPosition:function(a,b){var c=this,d=c._nodes,e=c._imageList,f=e.length,h=c._MAX_ITEM_COUNT,i=f>h?h:f,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=c._path,s=0;j=b>=0?i+1:i,d[k].level||(d[k].level=i);for(k=0;k<i;k+=1)d[k].mvMatrix||(d[k].mvMatrix=g.create()),b>0&&d[k].level>=i&&(d[k].level=0),o=r.levels[d[k].level],q=(d[k].level+j+b)%j,p=r.levels[q],f>h&&(b>0&&q===1&&c._firstImageNumber!==d[k].imageID?c._loadImage(e[c._firstImageNumber].src,k,c._firstImageNumber):b<0&&q===j-1&&c._lastImageNumber!==d[k].imageID&&c._loadImage(e[c._lastImageNumber].src,k,c._lastImageNumber)),g.identity(d[k].mvMatrix),g.translate(d[k].mvMatrix,[-2,-2,1]),g.rotate(d[k].mvMatrix,c._degreeToRadian(19),[1,0,0]),l=o+(p-o)*(a>1?1:a),a>=c._ANIMATION_END&&(d[k].level=q||i,l=r.levels[d[k].level]),a<c._ANIMATION_END&&b<=0&&d[k].level<1?d[k].drawable=!1:d[k].drawable=!0,a===c._ANIMATION_END&&d[k].level===1&&c.element.trigger("select",e[d[k].imageID],d[k].imageID),m=r.getPosition(l),n=r.getAngle(l),g.translate(d[k].mvMatrix,m),g.rotate(d[k].mvMatrix,n,[0,1,0]);f>h&&a>=c._ANIMATION_END&&(c._firstImageNumber=(c._firstImageNumber-b)%f,c._firstImageNumber<0&&(c._firstImageNumber=f-1),c._lastImageNumber=(c._lastImageNumber-b)%f,c._lastImageNumber<0&&(c._lastImageNumber=f-1)),c._drawScene()},_drawScene:function(){if(!this._gl||!this._shaderProgram)return;var a=this,b=a._gl,c=a._shaderProgram,d=a._nodes,e=d.length,f;b.clear(b.COLOR_BUFFER_BIT|b.DEPTH_BUFFER_BIT),b.bindBuffer(b.ARRAY_BUFFER,a._positionBuffer),b.vertexAttribPointer(c.vertexPositionAttr,a._positionBuffer.itemSize,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,a._textureCoordBuffer),b.vertexAttribPointer(c.textureCoordAttr,a._textureCoordBuffer.itemSize,b.FLOAT,!1,0,0),b.bindBuffer(b.ARRAY_BUFFER,a._normalVectorBuffer),b.vertexAttribPointer(c.vertexNormalAttr,a._normalVectorBuffer.itemSize,b.FLOAT,!1,0,0);for(f=0;f<e;f+=1)d[f].drawable&&a._drawElement(a._pMatrix,d[f])},_drawElement:function(a,b){var c=this,d=c._gl,h=c._shaderProgram,i=b.mvMatrix,j=b.texture,k=b.textureBuffer,l=b.textureBufferItemSize,m=c._lightsPositionStack,n,o;if(!i)return;d.activeTexture(d.TEXTURE0),j&&j.loaded&&d.bindTexture(d.TEXTURE_2D,j),d.uniform1i(h.sampleUniform,0),n=e.create(),e.normalize(m[0],n),e.scale(n,-8),d.uniform3fv(h.lightDirU_first,n),e.normalize(m[1],n),e.scale(n,-1),d.uniform3fv(h.lightDirU_second,n),d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,k),d.uniformMatrix4fv(h.perspectiveMU,!1,a),d.uniformMatrix4fv(h.transformMU,!1,i),o=f.create(),g.toInverseMat3(i,o),f.transpose(o),d.uniformMatrix3fv(h.normalMU,!1,o),d.drawElements(d.TRIANGLES,l,d.UNSIGNED_SHORT,0),d.bindBuffer(d.ARRAY_BUFFER,null),d.bindBuffer(d.ELEMENT_ARRAY_BUFFER,null),d.bindTexture(d.TEXTURE_2D,null)},_animate:function(b,d,e,f,g,h){var i=this,j=a.now(),k,l=0;b=b||"linear",g=g||0,h=h||0;if(i._sumTime>=d){i._setPosition(i._ANIMATION_END,e),i._stop();return}if(i._startTime===0)i._startTime=j;else{i._sumTime=j-i._startTime,k=a.easing[b](i._sumTime/d,i._sumTime,g,f+1,d),l=parseInt(Math.abs(k),10);if(h!==l){i._setPosition(i._ANIMATION_END,e),h=l,f-h>=0?i._animate(b,d,e,f,g,h):i._stop();return}i._setPosition(k-h,e)}i._animationID=c.requestAnimationFrame(function(){i._animate(b,d,e,f,g,h)})},_run:function(a,b,c){var d=this,e=b||0,f=d._DURATION_DEFAULT*(e+1);if(d._imageList.length<=1)return;c=c||0,f=f>=0?f:0,d._animationID&&(d._setPosition(d._ANIMATION_END,a),d._stop()),d._animate("easeOutExpo",f,a,e,c)},_reset:function(){if(!this._canvas||!this._gl)return;this._final(),this._init(),this.refresh()},_stop:function(){this._animationID&&c.cancelAnimationFrame(this._animationID),this._animationID=0,this._startTime=0,this._sumTime=0},_degreeToRadian:function(a){return a*Math.PI/180},next:function(){this._run(this._DIRECTION_LEFT,0)},prev:function(){this._run(this._DIRECTION_RIGHT,0)},refresh:function(){var a=this.element,b=a.find("canvas.ui-gallery3d-canvas");b.width()!==a.width()&&b.width(a.width()),this._animationID||this._setPosition(0,0)},select:function(a){var b=this._nodes,c,d,e,f=null,g=0,h=0;a&&this._animationID&&this._stop();for(d in b)if(b[d].level===1){f=this._imageList[b[d].imageID],e=b[d].imageID;break}if(!a)return f;if(a<0&&a>=this._imageList.length)return;g=a-e,h=g>0?this._DIRECTION_LEFT:g<0?this._DIRECTION_RIGHT:0,h&&this._run(h,Math.abs(g)-1)},add:function(a,b){if(!a)return;typeof a=="string"&&(a={src:a}),b=b||0;if(typeof b!="number"&&b<0&&b>=this._imageList.length)return;this._imageList.splice(b,0,a),this._gl&&this._reset()},remove:function(a){a=a||0;if(typeof a!="number"&&a<0&&a>=this._imageList.length)return;this._imageList.splice(a,1),this._gl&&this._reset()},clearThumbnailCache:function(){if(!this._nodes||this._nodes.length<=0)return;var b,c;for(b=0;b<this._imageList.length;b+=1)c=this._imageList[b].src,a.imageloader.removeThumbnail(c)},empty:function(){this._imageList=[],this._reset()},length:function(){return this._imageList.length}}),a(b).bind("pagecreate create",function(b){a(":jqmData(role='gallery3d')").gallery3d()})}(jQuery,document,window),function(a){a.widget("tizen.swipe",a.mobile.widget,{options:{theme:null},_create:function(){var a=this.element.jqmData("theme")||this.options.theme||this.element.parent().jqmData("theme")||"s";this.options.theme=a,this._isopen=!1,this.refresh()},refresh:function(){this._cleanupDom();var b=this,c,d,e,f,g;c="ui-body-"+this.options.theme,this.element.parent().hasClass("ui-listview")||this.element.parent().listview(),this.element.addClass("ui-swipe"),d=this.element.find(':jqmData(role="swipe-item-cover")'),f=this.element.find(':jqmData(role="swipe-item")'),this._covers=d,this._item=f,f.addClass("ui-swipe-item"),e=c,g=f.parent().attr("class").match(/ui\-body\-[a-z]|ui\-bar\-[a-z]/),d.each(function(){var c=a(this);g&&(e=g[0]),c.addClass("ui-swipe-item-cover"),c.addClass(e),c.has(".ui-swipe-item-cover-inner").length===0&&c.wrapInner(a("<span/>").addClass("ui-swipe-item-cover-inner"));if(!c.data("animateRight")||!c.data("animateLeft"))c.data("animateRight",function(){b._animateCover(c,110,f)}),c.data("animateLeft",function(){b._animateCover(c,0,f)});f.bind("swipeleft",c.data("animateLeft")),c.bind("swiperight",c.data("animateRight")),f.find(".ui-btn").bind("vclick",c.data("animateLeft"))})},_cleanupDom:function(){var a=this,b,c,d=b,e,f,g,h,i;b="ui-body-"+this.options.theme,this.element.removeClass("ui-swipe"),c=this.element.find(':jqmData(role="swipe-item-cover")'),e=this.element.find(':jqmData(role="swipe-item")'),e.removeClass("ui-swipe-item"),c.removeClass("ui-swipe-item-cover"),f=e.attr("class"),g=f&&f.match(/ui\-body\-[a-z]|ui\-bar\-[a-z]/),g&&(d=g[0]),c.removeClass(d),i=c.find(".ui-swipe-item-cover-inner"),i.children().unwrap(),h=i.text(),h&&(c.append(h),i.remove()),c.data("animateRight")&&c.data("animateLeft")&&(c.unbind("swiperight",c.data("animateRight")),e.unbind("swipeleft",c.data("animateLeft")),e.find(".ui-btn").unbind("vclick",c.data("animateLeft")),c.data("animateRight",null),c.data("animateLeft",null))},_animateCover:function(b,c,d){var e=this,f={easing:"linear",duration:"normal",queue:!0,complete:function(){b.trigger("animationend")}};a(this.element.parent()).find(":jqmData(role='swipe')").each(function(){this!==e.element.get(0)&&a(this).swipe("opened")&&a(this).swipe("close")}),c==110?this._isopen=!0:this._isopen=!1,b.stop(),b.clearQueue(),b.trigger("animationstart"),b.animate({left:c+"%"},f),c==0?d.animate({opacity:0},"slow"):d.animate({opacity:1},"slow")},destroy:function(){this._cleanupDom()},open:function(){var b=this;a(b._covers).each(function(){var c=a(this);b._animateCover(c,110,b._item)})},opened:function(){return this._isopen},close:function(){var b=this;a(b._covers).each(function(){var c=a(this);b._animateCover(c,0,b._item)})}}),a(document).bind("pagecreate",function(b){a(b.target).find(":jqmData(role='swipe')").swipe()})}(jQuery),function(a,b,c,d){a.widget("tizen.tokentextarea",a.mobile.widget,{_focusStatus:null,_items:null,_viewWidth:0,_reservedWidth:0,_currentWidth:0,_fontSize:0,_anchorWidth:0,_labelWidth:0,_marginWidth:0,options:{label:"To : ",link:null,description:"+ {0}"},_create:function(){var b=this,d=this.element,e=d.jqmData("role"),f=this.options,g="ui-tokentextarea-link",h=a(c.createElement
+("input")),i=a(c.createElement("span")),j=a(c.createElement("a"));d.hide().empty().addClass("ui-"+e),a(i).text(f.label).addClass("ui-tokentextarea-label").attr("tabindex",0),d.append(i),a(h).addClass("ui-tokentextarea-input ui-tokentextarea-input-visible ui-input-text ui-body-s").attr("role","textbox"),d.append(h);if(f.link===null||a.trim(f.link).length<1||a(f.link).length===0)g+="-dim";a(j).attr("data-role","button").buttonMarkup({inline:!0,icon:"plus",style:"circle"}).attr({href:a.trim(f.link),tabindex:0}).addClass("ui-tokentextarea-link-base").addClass(g).find("span.ui-btn-text").text("Add recipient"),d.append(j),this._bindEvents(),b._focusStatus="init",d.show(),b._viewWidth=d.innerWidth(),b._reservedWidth+=b._calcBlockWidth(j),b._reservedWidth+=b._calcBlockWidth(i),b._fontSize=parseInt(a(j).css("font-size"),10),b._currentWidth=b._reservedWidth,b._modifyInputBoxWidth()},_bindEvents:function(){var b=this,d=b.element,e=b.options,f=d.find(".ui-tokentextarea-input"),g=d.find(".ui-tokentextarea-link-base"),h=!1;d.delegate("div","click",function(c){a(this).hasClass("ui-tokentextarea-sblock")&&b._removeTextBlock();var e=d.find("div.ui-tokentextarea-sblock");typeof e!="undefined"&&e.removeClass("ui-tokentextarea-sblock").addClass("ui-tokentextarea-block"),a(this).removeClass("ui-tokentextarea-block").addClass("ui-tokentextarea-sblock"),d.trigger("select")}),f.bind("keyup",function(c){var d=c.keyCode,e=a(f).val(),g=[],i;if(d===8)e.length===0&&b._validateTargetBlock();else if(d===13||d===186||d===188){if(e.length!==0){g=e.split(/[,;]/);for(i=0;i<g.length;i++)g[i].length!==0&&g[i].replace(/\s/g,"").length!==0&&b._addTextBlock(g[i])}f.val(""),h=!0}else b._unlockTextBlock();return!h}),g.click(function(){if(a(g).hasClass("ui-tokentextarea-link-dim"))return;a(f).removeClass("ui-tokentextarea-input-visible").addClass("ui-tokentextarea-input-invisible"),a.mobile.changePage(e.link,{transition:"slide",reverse:!1,changeHash:!1})}),a(c).bind("pagechange.mbe",function(c){if(d.innerWidth()===0)return;b._modifyInputBoxWidth(),a(f).removeClass("ui-tokentextarea-input-invisible").addClass("ui-tokentextarea-input-visible")}),d.bind("click",function(a){b._focusStatus==="focusOut"&&b.focusIn()})},_addTextBlock:function(b,d){if(arguments.length===0)return;if(!b)return;var e=this,f=e.element,g=b,h=d,i=null,j=null;e._viewWidth===0&&(e._viewWidth=f.innerWidth()),j=a(c.createElement("div")),j.text(g).addClass("ui-tokentextarea-block").attr({"aria-label":"double tap to edit",tabindex:0}),j.css({visibility:"hidden"}),i=f.find("div"),h!==null&&h<=i.length?a(i[h]).before(j):f.find(".ui-tokentextarea-input").before(j),j=e._ellipsisTextBlock(j),j.css({visibility:"visible"}),e._modifyInputBoxWidth(),j.hide(),j.fadeIn("fast",function(){e._currentWidth+=e._calcBlockWidth(j),f.trigger("add")})},_removeTextBlock:function(){var a=this,b=this.element,c=b.find("div.ui-tokentextarea-sblock"),d=null,e=function(){};c!==null&&c.length>0?(a._currentWidth-=a._calcBlockWidth(c),c.fadeOut("fast",function(){c.remove(),a._modifyInputBoxWidth()}),this._eventRemoveCall=!0,b[0].remove&&(d=b[0].remove,b[0].remove=e),b.triggerHandler("remove"),d&&(b[0].remove=d),this._eventRemoveCall=!1):b.find("div:last").removeClass("ui-tokentextarea-block").addClass("ui-tokentextarea-sblock")},_calcBlockWidth:function(b){return a(b).outerWidth(!0)},_unlockTextBlock:function(){var a=this.element,b=a.find("div.ui-tokentextarea-sblock");b&&b.removeClass("ui-tokentextarea-sblock").addClass("ui-tokentextarea-block")},_validateTargetBlock:function(){var a=this,b=a.element,c=b.find("div:last"),d=null;c.hasClass("ui-tokentextarea-sblock")?a._removeTextBlock():(d=b.find("div.ui-tokentextarea-sblock"),d.removeClass("ui-tokentextarea-sblock").addClass("ui-tokentextarea-block"),c.removeClass("ui-tokentextarea-block").addClass("ui-tokentextarea-sblock"))},_ellipsisTextBlock:function(b){var c=this,d=c.element,e=c._viewWidth/2;return c._calcBlockWidth(b)>e&&a(b).width(e-c._marginWidth),b},_modifyInputBoxWidth:function(){var b=this,c=b.element,d=0,e=0,f=0,g=0,h=c.find("div"),i=0,j=0,k=10,l=c.find(".ui-tokentextarea-input");if(c.width()===0)return;b._labelWidth===0&&(b._labelWidth=c.find(".ui-tokentextarea-label").outerWidth(!0),b._anchorWidth=c.find(".ui-tokentextarea-link-base").outerWidth(!0),b._marginWidth=parseInt(a(l).css("margin-left"),10),b._marginWidth+=parseInt(a(l).css("margin-right"),10),b._viewWidth=c.innerWidth()),d=b._marginWidth,e=b._labelWidth,f=b._anchorWidth,g=b._viewWidth-e;for(j=0;j<h.length;j+=1)i=b._calcBlockWidth(h[j]),i>=g+f?i>=g?g=b._viewWidth-i:g=b._viewWidth:i>g?g=b._viewWidth-i:g-=i;g-=d,g<f*2&&(g=b._viewWidth-d),a(l).width(g-f-k)},_stringFormat:function(a){var b=null,c=a,d=0;for(d=1;d<arguments.length;d+=1)b="{"+(d-1)+"}",c=c.replace(b,arguments[d]);return c},_resizeBlocks:function(){var b=this,c=b.element,d=c.find("div"),e=0;for(e=0;e<d.length;e+=1)a(d[e]).css("width","auto"),d[e]=b._ellipsisTextBlock(d[e])},focusIn:function(){if(this._focusStatus==="focusIn")return;var a=this.element;a.find(".ui-tokentextarea-label").attr("tabindex",0).show(),a.find(".ui-tokentextarea-desclabel").remove(),a.find("div.ui-tokentextarea-sblock").removeClass("ui-tokentextarea-sblock").addClass("ui-tokentextarea-block"),a.find("div").attr({"aria-label":"double tap to edit",tabindex:0}).show(),a.find(".ui-tokentextarea-input").removeClass("ui-tokentextarea-input-invisible").addClass("ui-tokentextarea-input-visible").attr("tabindex",0),a.find("a").attr("tabindex",0).show(),this._modifyInputBoxWidth(),this._focusStatus="focusIn",a.removeClass("ui-tokentextarea-focusout").addClass("ui-tokentextarea-focusin").removeAttr("tabindex"),a.find(".ui-tokentextarea-input").focus()},focusOut:function(){if(this._focusStatus==="focusOut")return;var b=this,d=b.element,e=null,f=null,g=null,h="",i=0,j=10,k=d.find(".ui-tokentextarea-label"),l=d.find("span"),m=d.find("div"),n=d.outerWidth(!0)-l.outerWidth(!0)-k.outerWidth(!0),o=0;k.removeAttr("tabindex"),d.find(".ui-tokentextarea-input").removeClass("ui-tokentextarea-input-visible").addClass("ui-tokentextarea-input-invisible").removeAttr("tabindex"),d.find("a").removeAttr("tabindex").hide(),m.removeAttr("aria-label").removeAttr("tabindex").hide(),n-=b._reservedWidth;for(i=0;i<m.length;i++){o=a(m[i]).outerWidth(!0);if(n-o<=0){j=i-1;break}a(m[i]).show(),n-=o}j!==m.length&&(h=b._stringFormat(b.options.description,m.length-j-1),e=a(c.createElement("span")),e.addClass("ui-tokentextarea-desclabel").attr({"aria-label":"more, double tap to edit",tabindex:"-1"}),f=a(c.createElement("span")).text(h).attr("aria-hidden","true"),g=a(c.createElement("span")).text(m.length-j-1).attr("aria-label","and").css("visibility","hidden"),e.append(f),e.append(g),a(m[j]).after(e)),this._focusStatus="focusOut",d.removeClass("ui-tokentextarea-focusin").addClass("ui-tokentextarea-focusout").attr("tabindex",0)},inputText:function(a){var b=this.element;return arguments.length===0?b.find(".ui-tokentextarea-input").val():(b.find(".ui-tokentextarea-input").val(a),a)},select:function(b){var c=this.element,d=null,e=null;if(this._focusStatus==="focusOut")return;return arguments.length===0?(d=c.find("div.ui-tokentextarea-sblock"),d?d.text():null):(this._unlockTextBlock(),e=c.find("div"),e.length>b&&(a(e[b]).removeClass("ui-tokentextarea-block").addClass("ui-tokentextarea-sblock"),c.trigger("select")),null)},add:function(a,b){if(this._focusStatus==="focusOut")return;this._addTextBlock(a,b)},remove:function(b){var c=this,d=this.element,e=d.find("div"),f=0,g=null,h=function(){};if(this._focusStatus==="focusOut")return;arguments.length===0?e.fadeOut("fast",function(){e.remove(),c._modifyInputBoxWidth(),c._trigger("clear")}):isNaN(b)||(f=b<e.length?b:e.length-1,a(e[f]).fadeOut("fast",function(){a(e[f]).remove(),c._modifyInputBoxWidth()}),this._eventRemoveCall=!0,d[0].remove&&(g=d[0].remove,d[0].remove=h),d.triggerHandler("remove"),g&&(d[0].remove=g),this._eventRemoveCall=!1)},length:function(){return this.element.find("div").length},refresh:function(){var a=this,b=this.element;a._viewWidth=b.innerWidth(),a._resizeBlocks(),a._modifyInputBoxWidth()},destroy:function(){var a=this.element,b=null,c=function(){};if(this._eventRemoveCall)return;a.find(".ui-tokentextarea-label").remove(),a.find("div").undelegate("click").remove(),a.find("a").remove(),a.find(".ui-tokentextarea-input").unbind("keyup").remove(),this._eventRemoveCall=!0,a[0].remove&&(b=a[0].remove,a[0].remove=c),a.remove(),b&&(a[0].remove=b),this._eventRemoveCall=!1,this._trigger("destroy")}}),a(c).bind("pagecreate create",function(){a(":jqmData(role='tokentextarea')").tokentextarea()}),a(b).bind("resize",function(){a(":jqmData(role='tokentextarea')").tokentextarea("refresh")})}(jQuery,window,document),function(a,b){function c(){var b=a("script[data-framework-version][data-framework-root][data-framework-theme]");return b.attr("data-framework-root")+"/"+b.attr("data-framework-version")+"/themes/"+b.attr("data-framework-theme")+"/proto-html"}a.widget("tizen.widgetex",a.mobile.widget,{_createWidget:function(){a.tizen.widgetex.loadPrototype.call(this,this.namespace+"."+this.widgetName),a.mobile.widget.prototype._createWidget.apply(this,arguments)},_init:function(){if(this.element===b)return;var c=this.element.closest(".ui-page"),d=this,e={};c.is(":visible")?this._realize():c.bind("pageshow",function(){d._realize()}),a.extend(e,this.options),this.options={},this._setOptions(e)},_getCreateOptions:function(){if(this.element.is("input")&&this._value!==b){var c=this.element.attr("type")==="checkbox"||this.element.attr("type")==="radio"?this.element.is(":checked"):this.element.is("[value]")?this.element.attr("value"):b;c!=b&&this.element.attr(this._value.attr,c)}return a.mobile.widget.prototype._getCreateOptions.apply(this,arguments)},_setOption:function(c,d){var e="_set"+c.replace(/^[a-z]/,function(a){return a.toUpperCase()});this[e]!==b?this[e](d):a.mobile.widget.prototype._setOption.apply(this,arguments)},_setDisabled:function(b){a.Widget.prototype._setOption.call(this,"disabled",b),this.element.is("input")&&this.element.attr("disabled",b)},_setValue:function(b){a.tizen.widgetex.setValue(this,b)},_realize:function(){}}),a.tizen.widgetex.setValue=function(a,c){if(a._value!==b){var d=a._value.makeString?a._value.makeString(c):c,e;a.element.attr(a._value.attr,d),a._value.signal!==b&&a.element.triggerHandler(a._value.signal,c),a.element.is("input")&&(e=a.element.attr("type"),e==="checkbox"||e==="radio"?c?a.element.attr("checked",!0):a.element.removeAttr("checked"):a.element.attr("value",d),a.element.trigger("change"))}},a.tizen.widgetex.assignElements=function(b,c){var d={},e;for(e in c)typeof c[e]=="string"?(d[e]=b.find(c[e]),c[e].match(/^#/)&&d[e].removeAttr("id")):typeof c[e]=="object"&&(d[e]=a.tizen.widgetex.assignElements(b,c[e]));return d},a.tizen.widgetex.loadPrototype=function(d,e){var f=d.split("."),g,h,i,j=!1,k,l;f.length==2&&(g=f[0],h=f[1],a[g][h].prototype._htmlProto!==b&&(i=a[g][h].prototype._htmlProto.source,i===b&&(i=h,j=!0),typeof i=="string"?j?(d=i,l=c(),a.ajax({url:l+"/"+d+".prototype.html",async:!1,dataType:"html"}).success(function(b,c,d){i=a("<div></div>").html(b).jqmData("tizen.widgetex.ajax.fail",!1)}),i=a("<div></div>").text("Failed to load proto for widget "+g+"."+h+"!").css({background:"red",color:"blue",border:"1px solid black"}).jqmData("tizen.widgetex.ajax.fail",!0)):i=a(i).jqmData("tizen.widgetex.ajax.fail",!1):i.jqmData("tizen.widgetex.ajax.fail",!1),k=i,a[g][h].prototype._htmlProto.source=i,a[g][h].prototype._htmlProto.ui!==b&&a.extend(this,{_ui:a.tizen.widgetex.assignElements(k.clone(),a[g][h].prototype._htmlProto.ui)})))}}(jQuery),function(a,b){a.widget("tizen.notification",a.mobile.widget,{btn:null,text_bg:[],icon_img:[],interval:null,seconds:null,running:!1,_get_text:function(){var b=new Array(2);return this.type==="ticker"?(b[0]=a(this.text_bg[0]).text(),b[1]=a(this.text_bg[1]).text()):b[0]=a(this.text_bg[0]).text(),b},_set_text:function(b,c){var d=function(a,b){if(!b)return;a.text(b)};this.type==="ticker"?(d(a(this.text_bg[0]),b),d(a(this.text_bg[1]),c)):d(a(this.text_bg[0]),b)},text:function(a,b){if(a===undefined&&b===undefined)return this._get_text();this._set_text(a,b)},icon:function(b){if(b===undefined)return;this.icon_img.detach(),this.icon_img=a("<img src='"+b+"' class='ui-ticker-icon'>"),a(this.element).find(".ui-ticker").append(this.icon_img)},_refresh:function(){var b=this._get_container();a(b).addClass("fix").removeClass("show").removeClass("hide"),this._set_interval()},open:function(){var b=this._get_container();if(this.running){this._refresh();return}a(b).addClass("show").removeClass("hide").removeClass("fix"),this.running=!0,this.type==="popup"&&this._set_position(),this._set_interval()},close:function(){var b=this._get_container();if(!this.running)return;a(b).addClass("hide").removeClass("show").removeClass("fix"),this.running=!1,clearInterval(this.interval)},destroy:function(){var b=this._get_container();a(b).removeClass("show").removeClass("hide").removeClass("fix"),this._del_event(),this.running=!1},_get_container:function(){return this.type==="ticker"?a(this.element).find(".ui-ticker"):a(this.element).find(".ui-smallpopup")},_set_interval:function(){var a=this;clearInterval(this.interval),this.seconds!==undefined&&this.second!==0&&(this.interval=setInterval(function(){a.close()},this.seconds))},_add_event:function(){var a=this,b=this._get_container();this.type==="ticker"&&(b.find(".ui-ticker-btn").append(this.btn).trigger("create"),this.btn.bind("vmouseup",function(){a.close()})),b.bind("vmouseup",function(){a.close()})},_del_event:function(){var a=this._get_container();this.type==="ticker"&&this.btn.unbind("vmouseup"),a.unbind("vmouseup"),clearInterval(this.interval)},_set_position:function(){var b=this._get_container(),c=a(".ui-page-active").children(".ui-footer"),d=c.outerHeight()||0;b.css("bottom",d)},_create:function(){var c=this,d=a(this.element),e;this.btn=a('<div data-role="button" data-inline="true">Close</div>'),this.seconds=d.jqmData("interval"),this.type=d.jqmData("type")||"popup";if(this.type==="ticker"){d.wrapInner("<div class='ui-ticker'></div>"),d.find(".ui-ticker").append("<div class='ui-ticker-body'></div><div class='ui-ticker-btn'></div>"),this.text_bg=d.find("p");if(this.text_bg.length<2)d.find(".ui-ticker").append("<p></p><p></p>"),this.text_bg=d.find("p");else if(this.text_bg.length>2)for(e=2;e<this.text_bg.length;e++)a(this.text_bg[e]).css("display","none");a(this.text_bg[0]).addClass("ui-ticker-text1-bg"),a(this.text_bg[1]).addClass("ui-ticker-text2-bg"),this.icon_img=d.find("img");if(this.icon_img.length){a(this.icon_img).addClass("ui-ticker-icon");for(e=1;e<this.icon_img.length;e++)a(this.icon_img[e]).css("display","none")}}else{d.wrapInner("<div class='ui-smallpopup'></div>"),this.text_bg=d.find("p").addClass("ui-smallpopup-text-bg");if(this.text_bg.length<1)d.find(".ui-smallpopup").append("<p class='ui-smallpopup-text-bg'></p>"),this.text_bg=d.find("p");else if(this.text_bg.length>1)for(e=1;e<this.text_bg.length;e++)a(this.text_bg[e]).css("display","none");this._set_position()}this._add_event(),a(b).bind("resize",function(){if(!c.running)return;c._refresh(),c.type==="popup"&&c._set_position()})}}),a(document).bind("pagecreate create",function(b){a(b.target).find(":jqmData(role='notification')").notification()}),a(document).bind("pagebeforehide",function(b){a(b.target).find(":jqmData(role='notification')").notification("destroy")})}(jQuery,this),function(a,b){a.widget("tizen.tabbar",a.mobile.widget,{options:{iconpos:"top",grid:null,defaultList:4,initSelector:":jqmData(role='tabbar')"},_create:function(){var c=this.element,d,e,f,g=a.mobile.listview.prototype.options.theme,h=window.innerWidth||a(window).width(),i=window.innerHeight||a(window).height(),j="<div class='ui-tabbar-divider ui-tabbar-divider-left'></div>",k="<div class='ui-tabbar-divider ui-tabbar-divider-right'></div>",l;l=h>i&&h-i,l?c.removeClass("ui-portrait-tabbar").addClass("ui-landscape-tabbar"):c.removeClass("ui-landscape-tabbar").addClass("ui-portrait-tabbar"),c.find("a").length&&(d=c.find("a"),f=d.filter(":jqmData(icon)").length?this.options.iconpos:b,e=d.html().length?!0:!1),c.parents(".ui-header").length&&c.parents(".ui-scrollview-view").length?(c.find("li").addClass("tabbar-scroll-li"),c.find("ul").addClass("tabbar-scroll-ul"),a(j).appendTo(c.parents(".ui-scrollview-clip")),a(k).appendTo(c.parents(".ui-scrollview-clip")),a(".ui-tabbar-divider-left").hide(),a(".ui-tabbar-divider-right").hide(),c.parents(".ui-scrollview-view").data("default-list")&&(this.options.defaultList=c.parents(".ui-scrollview-view").data("default-list")),c.find("li").css("width",window.innerWidth/this.options.defaultList+"px")):c.find("ul").children().length&&c.addClass("ui-navbar").find("ul").grid({grid:this.options.grid}),c.parents(".ui-footer").length&&c.find("li").addClass("ui-tab-btn-style"),c.siblings(".ui-title").length&&c.parents(".ui-header").addClass("ui-title-tabbar"),f||c.addClass("ui-tabbar-noicons"),e||c.addClass("ui-tabbar-notext"),e&&f&&c.parents(".ui-header").addClass("ui-title-tabbar-multiline"),c.find("a").length&&d.buttonMarkup({corners:!1,shadow:!1,iconpos:f}),c.find(".ui-state-persist").length&&c.addClass("ui-tabbar-persist"),c.delegate("a","vclick",function(b){d.not(".ui-state-persist").removeClass(a.mobile.activeBtnClass),a(this).addClass(a.mobile.activeBtnClass)}),c.addClass("ui-tabbar"),a(document).bind("pagebeforeshow",function(b,c){var d=a(b.target).find(":jqmData(role='footer')"),e=d.find(":jqmData(role='tabbar')"),f=e.siblings(":jqmData(icon='naviframe-more')"),g=e.siblings(".ui-btn-back");d.css("position","fixed").css("bottom",0).css("height",e.height()),f.length&&e.addClass("ui-tabbar-margin-more"),g.length&&e.addClass("ui-tabbar-margin-back")}),c.bind("touchstart vmousedown",function(b){var c=a(b.target).parents(".ui-scrollview-view");c.offset()&&(c.offset().left<0?a(".ui-tabbar-divider-left").show():a(".ui-tabbar-divider-left").hide(),c.width()-c.parents(".ui-scrollview-clip").width()==Math.abs(c.offset().left)?a(".ui-tabbar-divider-right").hide():a(".ui-tabbar-divider-right").show())}),this._bindTabbarEvents(),this._initTabbarAnimation()},_initTabbarAnimation:function(){var b=!1,c=!1;a(document).bind("scrollstart.tabbar",function(d){a(d.target).find(".ui-tabbar").length&&(b=!0,c=!1)}),a(document).bind("scrollstop.tabbar",function(d){var e=a(d.target),f=a(d.target).find(".ui-tabbar"),g=a(d.target).find(".ui-tabbar li"),h=g.eq(0),i,j=-1;c=!0,f.length&&b==1&&(i=Math.abs(g.eq(0).offset().left),g.each(function(a){var b=g.eq(a).offset();Math.abs(b.left)<i&&(i=Math.abs(b.left),j=a,h=g.eq(a))}),e.length&&b==c&&j!=-1&&(b=!1,e.scrollview("scrollTo",-(window.innerWidth/f.data("defaultList")*j),0,357))),a(".ui-tabbar-divider-left").hide(),a(".ui-tabbar-divider-right").hide()})},_bindTabbarEvents:function(){var b=this.element;a(window).bind("orientationchange",function(c,d){var e=window.innerWidth||a(window).width(),f=window.innerHeight||a(window).height(),g=e>f&&e-f;g?b.removeClass("ui-portrait-tabbar").addClass("ui-landscape-tabbar"):b.removeClass("ui-landscape-tabbar").addClass("ui-portrait-tabbar")})},_setDisabled:function(a,b){this.element.find("li").eq(b).attr("disabled",a),this.element.find("li").eq(b).attr("aria-disabled",a)},disable:function(a){this._setDisabled(!0,a),this.element.find("li").eq(a).addClass("ui-disabled")},enable:function(a){this._setDisabled(!1,a),this.element.find("li").eq(a).removeClass("ui-disabled")}}),a(document).bind("pagecreate create",function(b){a(a.tizen.tabbar.prototype.options.initSelector,b.target).tabbar()})}(jQuery),function(a,b){a.widget("tizen.triangle",a.tizen.widgetex,{options:{extraClass:"",offset:null,color:null,location:"top",initSelector:":jqmData(role='triangle')"},_create:function(){var b=a("<div></div>",{"class":"ui-triangle"});a.extend(this,{_triangle:b}),this.element.addClass("ui-triangle-container").append(b)},_doCSS:function(){var b=this.options.location||"top",c=a.inArray(b,["top","bottom"])===-1?"top":"left",d={"border-bottom-color":"top"===b?this.options.color:"transparent","border-top-color":"bottom"===b?this.options.color:"transparent","border-left-color":"right"===b?this.options.color:"transparent","border-right-color":"left"===b?this.options.color:"transparent"};d[c]=this.options.offset,this._triangle.removeAttr("style").css(d)},_setOffset:function(b){this.options.offset=b,this.element.attr("data-"+(a.mobile.ns||"")+"offset",b),this._doCSS()},_setExtraClass:function(b){this._triangle.addClass(b),this.options.extraClass=b,this.element.attr("data-"+(a.mobile.ns||"")+"extra-class",b)},_setColor:function(b){this.options.color=b,this.element.attr("data-"+(a.mobile.ns||"")+"color",b),this._doCSS()},_setLocation:function(b){this.element.removeClass("ui-triangle-container-"+this.options.location).addClass("ui-triangle-container-"+b),this._triangle.removeClass("ui-triangle-"+this.options.location).addClass("ui-triangle-"+b),this.options.location=b,this.element.attr("data-"+(a.mobile.ns||"")+"location",b),this._doCSS()}}),a(document).bind("pagecreate create",function(b){a(a.tizen.triangle.prototype.options.initSelector,b.target).not(":jqmData(role='none'), :jqmData(role='nojs')").triangle()})}(jQuery),function(a,b){a.widget("tizen.popupwindow",a.tizen.widgetex,{options:{theme:null,overlayTheme:"s",style:"custom",disabled:!1,shadow:!0,corners:!0,fade:!1,opacity:.7,widthRatio:.8612,transition:a.mobile.defaultDialogTransition,initSelector:":jqmData(role='popupwindow')"},_htmlProto:{source:["<div><div>","    <div id='popupwindow-screen' class='ui-selectmenu-screen ui-screen-hidden ui-popupwindow-screen'></div>","    <div id='popupwindow-container' class='ui-popupwindow ui-popupwindow-padding ui-selectmenu-hidden ui-overlay-shadow ui-corner-all'></div>","</div>","</div>"].join(""),ui:{screen:"#popupwindow-screen",container:"#popupwindow-container"}},_setStyle:function(){var a=this.element,b=a.attr("data-style");b&&(this.options.style=b),a.addClass(this.options.style),a.find(":jqmData(role='title')").wrapAll("<div class='popup-title'></div>"),a.find(":jqmData(role='text')").wrapAll("<div class='popup-text'></div>"),a.find(":jqmData(role='button-bg')").wrapAll("<div class='popup-button-bg'></div>"),a.find(":jqmData(role='check-bg')").wrapAll("<div class='popup-check-bg'></div>"),a.find(":jqmData(role='scroller-bg')").addClass("popup-scroller-bg"),a.find(":jqmData(role='text-bottom-bg')").wrapAll("<div class='popup-text-bottom-bg'></div>"),a.find(":jqmData(role='text-left')").wrapAll("<div class='popup-text-left'></div>"),a.find(":jqmData(role='text-right')").wrapAll("<div class='popup-text-right'></div>"),a.find(":jqmData(role='progress-bg')").wrapAll("<div class='popup-progress-bg'></div>")},_create:function(){console.warn("popupwindow() was deprecated. use popup() instead.");var b=this.element.closest(":jqmData(role='page')"),c=this;b.length===0&&(b=a("body")),this._ui.placeholder=a("<div><!-- placeholder for "+this.element.attr("id")+" --></div>").css("display","none").insertBefore(this.element),b.append(this._ui.screen),this._ui.container.insertAfter(this._ui.screen),this._ui.container.append(this.element),this._setStyle(),this._isOpen=!1,this._ui.screen.bind("vclick",function(a){return c.close(),!1}),this.element.bind("vclick",function(b){a(b.target).is("ui-btn-ctxpopup-close")&&c.close()})},destroy:function(){this.element.insertBefore(this._ui.placeholder),this._ui.placeholder.remove(),this._ui.container.remove(),this._ui.screen.remove(),this.element.triggerHandler("destroyed"),a.Widget.prototype.destroy.call(this)},_placementCoords:function(b,c,d,e){var f=a(window).height(),g=a(window).width(),h=e/2,i=parseFloat(this._ui.container.css("max-width")),j=c,k=f-c,l,m;return j>e/2&&k>e/2?l=c-h:l=j>k?f-e-30:30,d<i?m=(g-d)/2:(m=b-d/2,m<10?m=10:m+d>g&&(m=g-d-10)),{x:m,y:l}},_setPosition:function(c,d){var e=b===c?a(window).width()/2:c,f=b===d?a(window).height()/2:d,g,h=this.element.data("ctxpopup"),i,j,k,l,m,n,o,p,q,r,s;h||(i=a(window).width()*this.options.widthRatio,this._ui.container.css("width",i),this._ui.container.outerWidth()>a(window).width()&&this._ui.container.css({"max-width":a(window).width()-30})),g=this._placementCoords(e,f,this._ui.container.outerWidth(),this._ui.container.outerHeight()),j=this._ui.container.innerHeight(),k=this._ui.container.innerWidth(),l=a(window).height(),m=a(window).width(),n=f,o=l-f,p=j/2,q=parseFloat(this._ui.container.css("max-width")),r=(l-j)/2,!q||k<q?s=(m-k)/2:(s=e-k/2,s<30?s=30:s+k>m&&(s=m-k-30)),h&&(r=g.y,s=g.x),this._ui.container.css({top:r,left:s}),this._ui.screen.css("height",l)},open:function(b,c,d){var e=this,f=0;if(this._isOpen||this.options.disabled)return;a(document).find("*").each(function(){var b=a(this),c=parseInt(b.css("z-index"),10);b.is(e._ui.container)||b.is(e._ui.screen)||isNaN(c)||(f=Math.max(f,c))}),this._ui.screen.css("height",a(window).height()),d?this._ui.screen.css("opacity",0).removeClass("ui-screen-hidden"):(this._ui.removeClass("ui-screen-hidden"),this.options.fade?this._ui.screen.animate({opacity:this.options.opacity},"fast"):this._ui.screen.css({opacity:this.options.opacity})),this._setPosition(b,c),this.element.trigger("popupbeforeposition"),this._ui.container.removeClass("ui-selectmenu-hidden").addClass("in").animationComplete(function(){e.element.trigger("popupafteropen")}),this._isOpen=!0,this._reflow||(this._reflow=function(){if(!e._isOpen)return;e._setPosition(b,c)},a(window).bind("resize",this._reflow))},close:function(){if(!this._isOpen)return;this._reflow&&(a(window).unbind("resize",this._reflow),this._reflow=null);var b=this,c=function(){b._ui.screen.addClass("ui-screen-hidden"),b._isOpen=!1};this._ui.container.removeClass("in").addClass("reverse out"),this.options.transition==="none"?(this._ui.container.addClass("ui-selectmenu-hidden").removeAttr("style"),this.element.trigger("popupafterclose")):this._ui.container.animationComplete(function(){b._ui.container.removeClass("reverse out").addClass("ui-selectmenu-hidden").removeAttr("style"),b.element.trigger("popupafterclose")}),this.options.fade?this._ui.screen.animate({opacity:0},"fast",c):c()},_realSetTheme:function(a,b){var c=(a.attr("class")||"").split(" "),d=!0,e=null,f;while(c.length>0){e=c.pop(),f=e.match(/^ui-body-([a-z])$/);if(f&&f.length>1){e=f[1];break}e=null}a.removeClass("ui-body-"+e),(b||"").match(/[a-z]/)&&a.addClass("ui-body-"+b)},_setTheme:function(b){this._realSetTheme(this.element,b),this.options.theme=b,this.element.attr("data-"+(a.mobile.ns||"")+"theme",b)},_setOverlayTheme:function(b){this._realSetTheme(this._ui.container,b),this.options.overlayTheme=b,this.element.attr("data-"+(a.mobile.ns||"")+"overlay-theme",b)},_setShadow:function(b){this.options.shadow=b,this.element.attr("data-"+(a.mobile.ns||"")+"shadow",b),this._ui.container[b?"addClass":"removeClass"]("ui-overlay-shadow")},_setCorners:function(b){this.options.corners=b,this.element.attr("data-"+(a.mobile.ns||"")+"corners",b),this._ui.container[b?"addClass":"removeClass"]("ui-corner-all")},_setFade:function(b){this.options.fade=b,this.element.attr("data-"+(a.mobile.ns||"")+"fade",b)},_setTransition:function(b){this._ui.container.removeClass(this.options.transition||"").addClass(b),this.options.transition=b,this.element.attr("data-"+(a.mobile.ns||"")+"transition",b)},_setDisabled:function(b){a.Widget.prototype._setOption.call(this,"disabled",b),b&&this.close()}}),a.tizen.popupwindow.bindPopupToButton=function(a,b){if(a.length===0||b.length===0)return;var c=function(c){return b.jqmData("overlay-theme-set")||b.popupwindow("option","overlayTheme",a.jqmData("theme")),b.popupwindow("open",a.offset().left+a.outerWidth()/2,a.offset().top+a.outerHeight()/2),!1};(b.popupwindow("option","overlayTheme")||"").match(/[a-z]/)&&b.jqmData("overlay-theme-set",!0),a.attr({"aria-haspopup":!0,"aria-owns":a.attr("href")}).removeAttr("href").bind("vclick",c),b.bind("destroyed",function(){a.unbind("vclick",c)})},a(document).bind("pagecreate create",function(b){a(a.tizen.popupwindow.prototype.options.initSelector,b.target).not(":jqmData(role='none'), :jqmData(role='nojs')").popupwindow(),a("a[href^='#']:jqmData(rel='popupwindow')",b.target).each(function(){a.tizen.popupwindow.bindPopupToButton(a(this),a(a(this).attr("href")))})})}(jQuery),function(a,b){a.widget("tizen.ctxpopup",a.tizen.widgetex,{options:a.extend({},a.tizen.popupwindow.prototype.options,{initSelector:":jqmData(show-arrow)"}),_htmlProto:{source:["<div><div id='outer' class='ui-ctxpopup'>","    <div id='top' class='ui-ctxpopup-row' data-role='triangle' data-location='top'></div>","    <div class='ui-ctxpopup-row'>","        <div id='left' class='ui-ctxpopup-cell' data-role='triangle' data-location='left'></div>","        <div id='container' class='ui-ctxpopup-cell'></div>","        <div id='right' class='ui-ctxpopup-cell' data-role='triangle' data-location='right'></div>","    </div>","    <div id='bottom' class='ui-ctxpopup-row' data-role='triangle' data-location='bottom'></div>","</div>","</div>"].join(""),ui:{outer:"#outer",container:"#container",arrow:{all:":jqmData(role='triangle')",l:"#left",t:"#top",r:"#right",b:"#bottom"}}},_create:function(){console.warn("ctxpopup() was deprecated. use popup() instead."),this.element.data("popupwindow")||this.element.popupwindow(),this.element.data("popupwindow")._ui.container.removeClass("ui-popupwindow-padding").append(this._ui.outer),this._ui.outer.trigger("create"),this._ui.container.addClass("ui-popupwindow-padding").append(this.element)},_setOption:function(b,c){a.tizen.popupwindow.prototype._setOption.apply(this.element.data("popupwindow"),arguments),this.options[b]=c}});var c=a.tizen.popupwindow.prototype.open,d=a.tizen.popupwindow.prototype._setOption,e=a.tizen.popupwindow.prototype._placementCoords;a.tizen.popupwindow.prototype._setOption=function(a,b){var c=this.element.data("ctxpopup"),e=!0,f;if(c){if("shadow"===a||"overlayTheme"===a||"corners"===a)f=this._ui.container,this._ui.container=c._ui.container,d.apply(this,arguments),this._ui.container=f,e=!1;c.options[a]=b}e&&d.apply(this,arguments)},a.tizen.popupwindow.prototype._placementCoords=function(c,d,f,g){function m(a,b,f){h._ui.arrow.all.hide(),h._ui.arrow[a].show();var g="b"===a||"t"===a,j=g?{point:"x",size:"cx",beg:"left",outerSize:"outerWidth",niceSize:"width",triangleSize:"height"}:{point:"y",size:"cy",beg:"top",outerSize:"outerHeight",niceSize:"height",triangleSize:"width"},k={cx:i._ui.container.width(),cy:i._ui.container.height()},l={cx:k.cx/2,cy:k.cy/2},m={x:c+l.cx*b,y:d+l.cy*f},n=e.call(i,m.x,m.y,k.cx,k.cy),o=h._ui.arrow[a].offset()[j.beg],p=h._ui.arrow[a][j.outerSize](!0),q=i.element.offset()[j.beg],r=i.element[j.outerSize](!0),s=h._ui.arrow[a][j.triangleSize](),t=Math.max(s+Math.max(0,q-o),Math.min(p-s-Math.max(0,o+p-(q+r)),p/2+m[j.point]-n[j.point]-l[j.size])),u={x:n.x+(g?t:0)+("r"===a?k.cx:0),y:n.y+(g?0:t)+("b"===a?k.cy:0)},v={actual:n,triangleOffset:t,absDiff:Math.abs(c-u.x)+Math.abs(d-u.y)};return h._ui.arrow[a].hide(),v}var h=this.element.data("ctxpopup"),i=this,j={},k,l;return h?(j={l:m("l",1,0),r:m("r",-1,0),t:m("t",0,1),b:m("b",0,-1)},a.each(j,function(a,c){if(k===b||c.absDiff<k)k=c.absDiff,l=a}),h._ui.arrow[l].show().triangle("option","offset",j[l].triangleOffset),j[l].actual):e.call(this,c,d,f,g)},a.tizen.popupwindow.prototype.open=function(b,d){var e=this.element.data("ctxpopup");e&&(this._setFade(!1),this._setShadow(!1),this._setCorners(!1),this._setOverlayTheme(null),this._setOption("overlayTheme",e.options.overlayTheme),e._ui.arrow.all.triangle("option","color",e._ui.container.css("background-color")),a(".ui-popupwindow").css("background","none")),c.call(this,b,d,!0)},a(document).bind("pagecreate create",function(b){var c=a(a.tizen.ctxpopup.prototype.options.initSelector,b.target);a.tizen.ctxpopup.prototype.enhanceWithin(b.target)})}(jQuery),function(a,b,c){a.widget("tizen.datetimepicker",a.tizen.widgetex,{options:{type:null,format:null,date:null,initSelector:"input[type='date'], input[type='datetime'], input[type='time'], :jqmData(role='datetimepicker')"},_calendar:function(){return b.Globalize.culture().calendars.standard},_value:{attr:"data-"+(a.mobile.ns||"")+"date",signal:"date-changed"},_daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],_isLeapYear:function(a){return a%4?0:a%100?1:a%400?0:1},_makeTwoDigits:function(a){var b=a.toString(10);return a<10&&(b="0"+b),b},_setType:function(b){switch(b){case"datetime":case"date":case"time":this.options.type=b;break;default:this.options.type="datetime"}return this.element.attr("data-"+(a.mobile.ns?a.mobile.ns+"-":"")+"type",this.options.type),this.options.type},_setFormat:function(b){if(this.options.format==b)return;this.options.format=b,this.ui.children().remove();var c=
+this._parsePattern(b),d=document.createElement("div"),e,f,g,h,i=this;while(c.length>0){e=c.shift(),f='<span class="ui-datefield-%1" data-pat="'+e+'">%2</span>';switch(e){case"H":case"HH":case"h":case"hh":a(d).append(f.replace("%1","hour"));break;case"mm":case"m":this.options.type=="date"?a(d).append(f.replace("%1","month")):a(d).append(f.replace("%1","min"));break;case"ss":case"s":a(d).append(f.replace("%1","sec"));break;case"d":case"dd":a(d).append(f.replace("%1","day"));break;case"M":case"MM":case"MMM":case"MMMM":a(d).append(f.replace("%1","month"));break;case"yy":case"yyyy":a(d).append(f.replace("%1","year"));break;case"t":case"tt":h='<a href="#" class="ui-datefield-period" data-role="button" data-inline="true">period</a>',a(d).append(h);break;case"g":case"gg":a(d).append(f.replace("%1","era").replace("%2",this._calendar().eras.name));break;case"\t":a(d).append(f.replace("%1","tab").replace("%2",e));break;default:a(d).append(f.replace("%1","seperator").replace("%2",e))}}return this.ui.append(d),this.options.date&&this._setDate(this.options.date),this.ui.find(".ui-datefield-period").buttonMarkup().bind("vclick",function(a){i._switchAmPm(i)}),this.element.attr("data-"+(a.mobile.ns?a.mobile.ns+"-":"")+"format",this.options.format),this.options.format},_setDate:function(b){function i(){return b.getMonth()+1}typeof b=="string"&&(b=new Date(b));var c=a("span,a",this.ui),d,e,f,g,h;for(h=0;h<c.length;h++){f=a(c[h]),d=f.attr("class").match(/ui-datefield-([\w]*)/),d||(d="");switch(d[1]){case"hour":e=b.getHours;break;case"min":e=b.getMinutes;break;case"sec":e=b.getSeconds;break;case"year":e=b.getFullYear;break;case"month":e=i;break;case"day":e=b.getDate;break;case"period":e=b.getHours()<12?this._calendar().AM[0]:this._calendar().PM[0],g=f.find(".ui-btn-text"),g.length==0?f.text(e):g.text()!=e&&g.text(e),e=null;break;default:e=null}e&&this._updateField(f,e.call(b))}return this.options.date=b,this._setValue(b),this.element.attr("data-"+(a.mobile.ns?a.mobile.ns+"-":"")+"date",this.options.date),this.options.date},destroy:function(){this.ui&&this.ui.remove(),this.element&&this.element.show()},value:function(a){function b(a,b){return b._makeTwoDigits(a.getHours())+":"+b._makeTwoDigits(a.getMinutes())+":"+b._makeTwoDigits(a.getSeconds())}function c(a,b){return(a.getFullYear()%1e4+1e4).toString().substr(1)+"-"+b._makeTwoDigits(a.getMonth()+1)+"-"+b._makeTwoDigits(a.getDate())}var d=null;if(a)d=this._setDate(a);else switch(this.options.type){case"time":d=b(this.options.date,this);break;case"date":d=c(this.options.date,this);break;default:d=c(this.options.date,this)+"T"+b(this.options.date,this)}return d},setValue:function(a){return console.warn("setValue was deprecated. use datetimepicker('option', 'date', value) instead."),this.value(a)},getValue:function(){return console.warn("getValue() was deprecated. use datetimepicker('value') instead."),this.value()},_updateField:function(a,b){if(!a||a.length==0)return;b==0&&(b="0");var c=a.jqmData("pat"),d,e,f=this;switch(c){case"H":case"HH":case"h":case"hh":d=b,c.charAt(0)=="h"&&(d>12?d-=12:d==0&&(d=12)),d=this._makeTwoDigits(d),e=d;break;case"m":case"M":case"d":case"s":e=b;break;case"mm":case"dd":case"MM":case"ss":e=this._makeTwoDigits(b);break;case"MMM":e=this._calendar().months.namesAbbr[b-1];break;case"MMMM":e=this._calendar().months.names[b-1];break;case"yy":e=this._makeTwoDigits(b%100);break;case"yyyy":b<10?b="000"+b:b<100?b="00"+b:b<1e3&&(b="0"+b),e=b}a.text()!=e&&(a.hasClass("ui-datefield-selected")?(a.addClass("out"),this._new_value=e,a.animationComplete(function(){a.text(f._new_value),a.addClass("in").removeClass("out"),a.animationComplete(function(){a.removeClass("in").removeClass("ui-datefield-selected")})})):a.text(e))},_switchAmPm:function(a){if(this._calendar().AM!=null){var b=new Date(this.options.date),c,d=432e5;b.getHours()>11&&(d=-d),b.setTime(b.getTime()+d),this._setDate(b)}},_parsePattern:function(a){var b=/\/|\s|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|f|gg|g|\'[\w\W]*\'$|[\w\W]/g,c,d;c=a.match(b);for(d=0;d<c.length;d++)c[d].charAt(0)=="'"&&(c[d]=c[d].substr(1,c[d].length-2));return c},changeTypeFormat:function(a,b){console.warn('changeTypeFormat() was deprecated. use datetimepicker("option", "type"|"format", value) instead'),a&&this._setType(a),b&&this._setFormat(b)},_create:function(){var b=this;this.element.is("input")&&function(a){var b,c,d;b=a.element.get(0).getAttribute("type"),a.options.type=b,c=a.element.get(0).getAttribute("value"),c&&(a.options.date=new Date(c))}(this);if(!this.options.format)switch(this.options.type){case"datetime":this.options.format=this._calendar().patterns.d+"\t"+this._calendar().patterns.t;break;case"date":this.options.format=this._calendar().patterns.d;break;case"time":this.options.format=this._calendar().patterns.t}this.options.date||(this.options.date=new Date),this.element.hide(),this.ui=a('<div class="ui-datefield"></div>'),a(this.element).after(this.ui),this._popup_open=!1,this.ui.bind("vclick",function(a){b._showDataSelector(b,this,a.target)})},_populateDataSelector:function(a,c){var d,e,f,g,h=b.range,i,j,k,l;switch(a){case"hour":c=="H"||c=="HH"?(d=h(0,23),g=h(0,23),f=this.options.date.getHours()):(d=h(1,12),f=this.options.date.getHours()-1,f>=11?(f-=12,g=h(13,23),g.push(12)):(g=h(1,11),g.push(0)),f<0&&(f=11)),c.length==2&&(d=d.map(this._makeTwoDigits)),e=d.length;break;case"min":case"sec":d=h(0,59),c.length==2&&(d=d.map(this._makeTwoDigits)),g=h(0,59),f=a=="min"?this.options.date.getMinutes():this.options.date.getSeconds(),e=d.length;break;case"year":j=1900,k=2100,g=h(j,k),f=this.options.date.getFullYear()-j,d=h(j,k),e=d.length;break;case"month":switch(c.length){case 1:d=h(1,12);break;case 2:d=h(1,12).map(this._makeTwoDigits);break;case 3:d=this._calendar().months.namesAbbr.slice();break;case 4:d=this._calendar().months.names.slice()}d.length==13&&d[12]==""&&d.pop(),g=h(1,d.length),f=this.options.date.getMonth(),e=d.length;break;case"day":l=this._daysInMonth[this.options.date.getMonth()],l==28&&(l+=this._isLeapYear(this.options.date.getFullYear())),d=h(1,l),c.length==2&&(d=d.map(this._makeTwoDigits)),g=h(1,l),f=this.options.date.getDate()-1,e=l}return{values:d,data:g,numItems:e,current:f}},_showDataSelector:function(d,e,f){f=a(f);var g=f.attr("class"),h=g?g.match(/ui-datefield-([\w]*)/):c,i,j,k,l,m,n,o,p,q,r,s,t,u,v=10,w=this;if(!g)return;if(!h)return;if(this._popup_open)return;f.not(".ui-datefield-seperator").addClass("ui-datefield-selected"),i=f.jqmData("pat"),j=d._populateDataSelector.call(d,h[1],i),k=j.values,l=j.numItems,m=j.current,n=j.data;if(k){p="data-"+(a.mobile.ns?a.mobile.ns+"-":"")+'val="';for(u=0;u<k.length;u++)o+='<li><a class="ui-link" '+p+n[u]+'">'+k[u]+"</a></li>";q=a("<ul></ul>"),r=a('<div class="ui-datetimepicker-selector" data-transition="fade" data-fade="false"></div>'),r.append(q).appendTo(e),s=r.ctxpopup(),s.parents(".ui-popupwindow").addClass("ui-datetimepicker"),t=a(o),a(t[m]).addClass("current"),r.jqmData("list",t),r.circularview(),d._reflow||(d._reflow=function(){r.circularview("reflow"),r.circularview("centerTo",".current",0)},a(b).bind("resize",d._reflow)),a(b).width()/2<f.offset().left&&(v=-10),s.popupwindow("open",f.offset().left+f.width()/2+v-b.pageXOffset,f.offset().top+f.height()-b.pageYOffset),this._popup_open=!0,r.bind("popupafterclose",function(c){d._reflow&&(a(b).unbind("resize",d._reflow),d._reflow=null),!f.hasClass("in")&&!f.hasClass("out")&&f.removeClass("ui-datefield-selected"),r.unbind("popupafterclose"),q.unbind("vclick"),a(d).unbind("update"),s.popupwindow("destroy"),r.remove(),w._popup_open=!1}),a(d).bind("update",function(a,b){var c=new Date(this.options.date),e,f=function(){c.setDate(1),c.setDate(c.getDate()-1)};switch(h[1]){case"min":c.setMinutes(b);break;case"hour":c.setHours(b);break;case"sec":c.setSeconds(b);break;case"year":e=c.getMonth(),c.setFullYear(b),c.getMonth()!=e&&f();break;case"month":c.setMonth(b-1),c.getMonth()==b&&f();break;case"day":c.setDate(b)}d._setDate(c),s.popupwindow("close")}),q.bind("click",function(b){if(a(b.target).is("a")){q.find(".current").removeClass("current"),a(b.target).parent().addClass("current");var c=a(b.target).jqmData("val");a(d).trigger("update",c)}}),r.circularview("centerTo",".current",500),r.bind("scrollend",function(c){d._reflow||(d._reflow=function(){r.circularview("reflow")},a(b).bind("resize",d._reflow))})}return e}}),a(document).bind("pagecreate create",function(b){a(a.tizen.datetimepicker.prototype.options.initSelector,b.target).not(":jqmData(role='none'), :jqmData(role='nojs')").datetimepicker()})}(jQuery,this),function(a){a.tizen.frameworkData.pkgVersion="0.2.23"}(jQuery);
\ No newline at end of file
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_multimedia.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_multimedia.png
new file mode 100644 (file)
index 0000000..611afcb
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_multimedia.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_picture.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_picture.png
new file mode 100644 (file)
index 0000000..be8c2d2
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_picture.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_text.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_text.png
new file mode 100644 (file)
index 0000000..1e2cb5d
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_text.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_unnamed.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_unnamed.png
new file mode 100644 (file)
index 0000000..ec6f36a
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_Nocontents_unnamed.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_delete.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_delete.png
new file mode 100644 (file)
index 0000000..bd66d4f
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_delete.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_dim.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_dim.png
new file mode 100644 (file)
index 0000000..859d3c6
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_dim.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_fullscreen_off.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_fullscreen_off.png
new file mode 100644 (file)
index 0000000..1afb045
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_fullscreen_off.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_fullscreen_on.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_fullscreen_on.png
new file mode 100644 (file)
index 0000000..fc1d516
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_fullscreen_on.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_off.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_off.png
new file mode 100644 (file)
index 0000000..fcdacaf
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_off.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_on.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_on.png
new file mode 100644 (file)
index 0000000..4a85c43
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_on.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_pause.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_pause.png
new file mode 100644 (file)
index 0000000..e32a1fb
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_pause.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_play.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_play.png
new file mode 100644 (file)
index 0000000..be36511
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_play.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_press.png
new file mode 100644 (file)
index 0000000..6844f26
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_radio.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_radio.png
new file mode 100644 (file)
index 0000000..e7e3428
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_radio.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_radio_select.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_radio_select.png
new file mode 100644 (file)
index 0000000..6abcb9c
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_button_radio_select.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_check_bg.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_check_bg.png
new file mode 100644 (file)
index 0000000..fbab13e
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_check_bg.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_check_bg_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_check_bg_press.png
new file mode 100644 (file)
index 0000000..2ac47ab
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_check_bg_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_check_checking.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_check_checking.png
new file mode 100644 (file)
index 0000000..e191167
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_check_checking.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_contacts_button_header.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_contacts_button_header.png
new file mode 100644 (file)
index 0000000..2046225
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_contacts_button_header.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_contacts_button_header_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_contacts_button_header_press.png
new file mode 100644 (file)
index 0000000..5c814b0
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_contacts_button_header_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_icon_cancel.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_icon_cancel.png
new file mode 100644 (file)
index 0000000..f244de0
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_icon_cancel.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_icon_cancel_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_icon_cancel_press.png
new file mode 100644 (file)
index 0000000..684bb8a
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_icon_cancel_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_list_process_01.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_list_process_01.png
new file mode 100644 (file)
index 0000000..46f6ea1
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_list_process_01.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_messagebubble_bg_receive.9.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_messagebubble_bg_receive.9.png
new file mode 100644 (file)
index 0000000..a4a7863
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_messagebubble_bg_receive.9.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_messagebubble_bg_sent.9.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_messagebubble_bg_sent.9.png
new file mode 100644 (file)
index 0000000..73abadf
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_messagebubble_bg_sent.9.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_messagebubble_date_bg.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_messagebubble_date_bg.png
new file mode 100644 (file)
index 0000000..5399cb3
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_messagebubble_date_bg.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_page_indicator_01.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_page_indicator_01.png
new file mode 100644 (file)
index 0000000..c950e3b
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_page_indicator_01.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_page_indicator_02.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_page_indicator_02.png
new file mode 100644 (file)
index 0000000..0533e9d
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_page_indicator_02.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_progress_bar.9.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_progress_bar.9.png
new file mode 100644 (file)
index 0000000..43ff4a7
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_progress_bar.9.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_progress_bg.9.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_progress_bg.9.png
new file mode 100644 (file)
index 0000000..8d93e95
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_progress_bg.9.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_scroll_bar_handler.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_scroll_bar_handler.png
new file mode 100644 (file)
index 0000000..52ffbef
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_scroll_bar_handler.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_scroll_bar_handler_hor.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_scroll_bar_handler_hor.png
new file mode 100644 (file)
index 0000000..76a84a9
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_scroll_bar_handler_hor.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_splite_handler_h.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_splite_handler_h.png
new file mode 100644 (file)
index 0000000..f6f2c97
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_splite_handler_h.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_splite_handler_v.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_splite_handler_v.png
new file mode 100644 (file)
index 0000000..d0cf6bb
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/00_splite_handler_v.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/ajax-loader.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/ajax-loader.png
new file mode 100644 (file)
index 0000000..811a2cd
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/ajax-loader.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_field_btn_clear.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_field_btn_clear.png
new file mode 100644 (file)
index 0000000..3b52443
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_field_btn_clear.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_field_btn_clear_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_field_btn_clear_press.png
new file mode 100644 (file)
index 0000000..7a2e7d3
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_field_btn_clear_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_icon_favorite_off.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_icon_favorite_off.png
new file mode 100644 (file)
index 0000000..79a4f26
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_icon_favorite_off.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_icon_favorite_on.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_icon_favorite_on.png
new file mode 100644 (file)
index 0000000..3737ff7
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_icon_favorite_on.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_search_icon.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_search_icon.png
new file mode 100644 (file)
index 0000000..0acca63
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_search_icon.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_01.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_01.png
new file mode 100644 (file)
index 0000000..2679543
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_01.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_01_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_01_press.png
new file mode 100644 (file)
index 0000000..859a98b
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_01_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_02.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_02.png
new file mode 100644 (file)
index 0000000..1f14556
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_02.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_02_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_02_press.png
new file mode 100644 (file)
index 0000000..f0d61cc
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_brightness_02_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_01.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_01.png
new file mode 100644 (file)
index 0000000..0a2673f
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_01.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_01_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_01_press.png
new file mode 100644 (file)
index 0000000..ae0578b
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_01_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_02.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_02.png
new file mode 100644 (file)
index 0000000..9e21b2f
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_02.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_02_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_02_press.png
new file mode 100644 (file)
index 0000000..69dfa48
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_button_volume_02_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_handle.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_handle.png
new file mode 100644 (file)
index 0000000..482a2fa
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_handle.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_handle_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_handle_press.png
new file mode 100644 (file)
index 0000000..6305ad4
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_handle_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_popup_bg.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_popup_bg.png
new file mode 100644 (file)
index 0000000..a79e582
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/00_slider_popup_bg.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_back.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_back.png
new file mode 100644 (file)
index 0000000..214f23e
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_back.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_back_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_back_press.png
new file mode 100644 (file)
index 0000000..9e4d1a5
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_back_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_bars.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_bars.png
new file mode 100644 (file)
index 0000000..0c34258
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_bars.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_bars_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_bars_press.png
new file mode 100644 (file)
index 0000000..8cf6cc1
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_bars_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_call.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_call.png
new file mode 100644 (file)
index 0000000..730892a
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_call.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_call_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_call_press.png
new file mode 100644 (file)
index 0000000..4c1da2f
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_call_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_check.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_check.png
new file mode 100644 (file)
index 0000000..1655814
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_check.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_check_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_check_press.png
new file mode 100644 (file)
index 0000000..a490855
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_check_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_cancel.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_cancel.png
new file mode 100644 (file)
index 0000000..6f5841a
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_cancel.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_cancel_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_cancel_press.png
new file mode 100644 (file)
index 0000000..5e58966
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_cancel_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_closed.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_closed.png
new file mode 100644 (file)
index 0000000..e4afb88
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_closed.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_closed_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_closed_press.png
new file mode 100644 (file)
index 0000000..4c445e8
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_closed_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_minus.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_minus.png
new file mode 100644 (file)
index 0000000..ee9f32b
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_minus.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_minus_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_minus_press.png
new file mode 100644 (file)
index 0000000..eb3707f
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_minus_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_opened.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_opened.png
new file mode 100644 (file)
index 0000000..3336b9e
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_opened.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_opened_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_opened_press.png
new file mode 100644 (file)
index 0000000..a10c218
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_opened_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_send.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_send.png
new file mode 100644 (file)
index 0000000..59af4d4
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_send.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_send_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_send_press.png
new file mode 100644 (file)
index 0000000..fb69c9a
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_expand_send_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_gear.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_gear.png
new file mode 100644 (file)
index 0000000..667c28a
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_gear.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_gear_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_gear_press.png
new file mode 100644 (file)
index 0000000..ec8a716
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_gear_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_grid.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_grid.png
new file mode 100644 (file)
index 0000000..5fc5342
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_grid.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_grid_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_grid_press.png
new file mode 100644 (file)
index 0000000..88e51aa
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_grid_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_home.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_home.png
new file mode 100644 (file)
index 0000000..620db17
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_home.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_home_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_home_press.png
new file mode 100644 (file)
index 0000000..a4d8834
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_home_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_info.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_info.png
new file mode 100644 (file)
index 0000000..333cdf2
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_info.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_info_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_info_press.png
new file mode 100644 (file)
index 0000000..cb4d600
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_info_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_left.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_left.png
new file mode 100644 (file)
index 0000000..2ca7c59
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_left.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_left_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_left_press.png
new file mode 100644 (file)
index 0000000..473968b
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_left_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_plus.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_plus.png
new file mode 100644 (file)
index 0000000..1f82d72
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_plus.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_plus_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_plus_press.png
new file mode 100644 (file)
index 0000000..d8b8d9a
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_plus_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_refresh.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_refresh.png
new file mode 100644 (file)
index 0000000..95ec713
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_refresh.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_refresh_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_refresh_press.png
new file mode 100644 (file)
index 0000000..473ec50
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_refresh_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_rename.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_rename.png
new file mode 100644 (file)
index 0000000..06d5c55
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_rename.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_rename_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_rename_press.png
new file mode 100644 (file)
index 0000000..07f2d3e
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_rename_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_right.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_right.png
new file mode 100644 (file)
index 0000000..bfd0b44
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_right.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_right_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_right_press.png
new file mode 100644 (file)
index 0000000..0af90fe
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_right_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_search.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_search.png
new file mode 100644 (file)
index 0000000..01c1081
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_search.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_search_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_search_press.png
new file mode 100644 (file)
index 0000000..aeb2a5b
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_search_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_star.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_star.png
new file mode 100644 (file)
index 0000000..a14d5ae
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_star.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_star_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_star_press.png
new file mode 100644 (file)
index 0000000..b021745
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_star_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_warning.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_warning.png
new file mode 100644 (file)
index 0000000..f721815
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_warning.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_warning_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_warning_press.png
new file mode 100644 (file)
index 0000000..3173a11
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_button_warning_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump.png
new file mode 100644 (file)
index 0000000..a109f42
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump_left.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump_left.png
new file mode 100644 (file)
index 0000000..ab98b9d
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump_left.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump_left_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump_left_press.png
new file mode 100644 (file)
index 0000000..b906204
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump_left_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump_press.png
new file mode 100644 (file)
index 0000000..b324447
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/controls/button/00_icon_jump_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_Back.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_Back.png
new file mode 100644 (file)
index 0000000..a790ba2
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_Back.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_Back_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_Back_press.png
new file mode 100644 (file)
index 0000000..54a2848
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_Back_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_edit.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_edit.png
new file mode 100644 (file)
index 0000000..3faa47d
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_edit.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_edit_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_edit_press.png
new file mode 100644 (file)
index 0000000..1ca9b52
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_edit_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_more.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_more.png
new file mode 100644 (file)
index 0000000..cdc16ec
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_more.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_more_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_more_press.png
new file mode 100644 (file)
index 0000000..d7e9113
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_more_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_plus.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_plus.png
new file mode 100644 (file)
index 0000000..e3aee60
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_plus.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_plus_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_plus_press.png
new file mode 100644 (file)
index 0000000..7ce2633
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_icon_plus_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_toolbar_button_bg.9.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_toolbar_button_bg.9.png
new file mode 100644 (file)
index 0000000..c909caf
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_toolbar_button_bg.9.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_toolbar_button_bg.9_press.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_toolbar_button_bg.9_press.png
new file mode 100644 (file)
index 0000000..5e6d4ba
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_toolbar_button_bg.9_press.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_toolbar_button_ef.9.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_toolbar_button_ef.9.png
new file mode 100644 (file)
index 0000000..c52cb9a
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/images/page/00_toolbar_button_ef.9.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/theme.js b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/theme.js
new file mode 100644 (file)
index 0000000..1a40465
--- /dev/null
@@ -0,0 +1,70 @@
+(function( $, undefined ) {
+//$.mobile.page.prototype.options.backBtnTheme = "s";
+
+// Clear default theme for child elements
+$( function ( o ) {
+       o.headerTheme = "s";
+       o.footerTheme = "s";
+} ( $.mobile.page.prototype.options ) );
+
+// clear listview
+( function ( o ) {
+       o.theme = "s";
+       o.countTheme = "s";
+       o.headerTheme = "s";
+       o.dividerTheme = "s";
+       o.splitTheme = "s";
+} ( $.mobile.listview.prototype.options ) );
+
+// Collapsible
+( function ( o ) {
+       o.heading = o.heading + ',li';          // Add listitem as a heading
+       o.inset = false;
+       o.iconPos = "right";    // Move iconPos to right position
+       o.collapsedIcon = "arrow-u";
+       o.expandedIcon = "arrow-d";
+       o.animation = true;
+       o.customEventHandler = function ( isCollapse ) {
+               var self = this,
+                       c = $(self).children('.ui-collapsible-content')[0];
+
+               function _getHeight( el ) {
+                       var h = 0,
+                               heading = $( el ).children('.ui-collapsible-heading')[0],
+                               content = $( el ).children('.ui-collapsible-content')[0];
+
+                       h += heading.clientHeight;
+                       $( content ).children().each ( function ( idx, _el ) {
+                               if ( $( _el ).hasClass( 'ui-collapsible' ) ) {  // recursive call for nested collapsible list
+                                       h += _getHeight( _el );
+
+                               } else {
+                                       h += _el.clientHeight;
+                               }
+                       } );
+                       return h;
+               }
+
+               if ( isCollapse ) {
+                       $( c ).data( 'max-height', _getHeight( self ) );
+               } else {
+                       if ( ! $( c ).data( 'max-height' ) ) {
+                               $( c ).data( 'max-height', document.body.clientHeight );
+                       }
+                       $( c ).css( 'max-height', $( c ).data( 'max-height' ) );
+               }
+       };
+} ( $.mobile.collapsible.prototype.options ) );
+
+//clear button theme
+$.mobile.button.prototype.options.theme = "s";
+$.fn.buttonMarkup.defaults.theme = "s";
+
+// Default theme swatch
+$.mobile.page.prototype.options.theme = "s";
+
+// Original scale of the theme
+$.tizen.frameworkData.defaultViewportWidth = 360;      // Fit to device-width
+$.tizen.frameworkData.defaultFontSize = 22;
+
+})(jQuery);
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/tizen-web-ui-fw-theme.css b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/tizen-web-ui-fw-theme.css
new file mode 100644 (file)
index 0000000..0623af7
--- /dev/null
@@ -0,0 +1,11244 @@
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+/***************************************************************************
+                    Header / Footer
+                    NavigationBar
+***************************************************************************/
+.ui-bar-s {
+  border: none;
+  background: #202327;
+  /* Header Background */
+
+  color: #70a9ee;
+  font-family: Helvetica, Arial, sans-serif;
+  font-weight: bold;
+  font-size: 1.2727272727272727rem;
+}
+.ui-bar-s .ui-link-inherit {
+  color: #70a9ee;
+}
+.ui-bar-s > .ui-btn.ui-btn-back,
+.ui-bar-s > .ui-btn.ui-btn-footer-down {
+  background: transparent;
+  position: absolute;
+  right: 0px;
+}
+.ui-bar-s > .ui-btn.ui-btn-back .ui-icon-header-back-btn,
+.ui-bar-s > .ui-btn.ui-btn-footer-down .ui-icon-header-back-btn {
+  top: 0.36363636363636365rem;
+  left: auto;
+  right: 0.5909090909090909rem;
+  margin-top: 0px;
+}
+.ui-bar-s > .ui-btn.ui-btn-footer-down {
+  border: none;
+  box-shadow: none;
+}
+.ui-bar-s > .ui-btn.ui-btn-footer-down .ui-icon {
+  top: 0.36363636363636365rem;
+  margin-top: 0px;
+}
+/* Header style */
+.ui-header.ui-bar-s {
+  position: fixed;
+  top: 0px;
+  min-height: 2.5rem;
+  /* header button position : need to press area more... */
+
+}
+.ui-header.ui-bar-s .ui-title {
+  display: inline-block;
+  color: #70a9ee;
+  min-height: 1.2727272727272727rem;
+  max-height: 1.5454545454545454rem;
+  /* temporary UX strange */
+
+  font-size: 1.2727272727272727rem;
+  font-weight: 500;
+  /* tizen font weight tuning */
+
+  text-overflow: ellipsis;
+  overflow: hidden;
+  white-space: nowrap;
+  outline: 0 !important;
+  text-align: left;
+  margin: 0.7272727272727273rem 0.36363636363636365rem 0.2272727272727273rem 0.36363636363636365rem;
+}
+.ui-header.ui-bar-s > .ui-btn .ui-btn-inner.ui-btn-icon-only {
+  -o-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  height: 100%;
+}
+.ui-header.ui-bar-s > .ui-btn .ui-btn-inner.ui-btn-icon-only .ui-icon {
+  top: 0px;
+}
+.ui-header.ui-bar-s > .ui-btn:not(.ui-btn-icon-notext) .ui-btn-inner.ui-btn-icon-only {
+  padding-left: 0px;
+}
+.ui-header.ui-bar-s > .ui-btn:not(.ui-btn-icon_only) {
+  width: 2.409090909090909rem;
+  height: 0.8181818181818182rem;
+  top: auto;
+  bottom: 0.4545454545454546rem;
+}
+.ui-header.ui-bar-s > .ui-btn:not(.ui-btn-icon_only) .ui-btn-inner {
+  padding: 0;
+}
+.ui-header.ui-bar-s > .ui-btn.ui-btn-back,
+.ui-header.ui-bar-s > .ui-btn.ui-btn-footer-down {
+  right: 0.5909090909090909rem;
+}
+.ui-header.ui-bar-s > .ui-btn.ui-btn-back .ui-icon-header-back-btn,
+.ui-header.ui-bar-s > .ui-btn.ui-btn-footer-down .ui-icon-header-back-btn {
+  left: 0px;
+}
+.ui-header.ui-bar-s img {
+  display: inline-block;
+  height: 0.7272727272727273rem;
+  width: 0.7272727272727273rem;
+  margin-left: 0.36363636363636365rem;
+}
+.ui-header.ui-bar-s .ui-title-text-sub {
+  position: absolute;
+  top: 1.6363636363636365rem;
+  left: 0.36363636363636365rem;
+  font-size: 0.5454545454545454rem;
+}
+.ui-header.ui-bar-s .ui-title-text-sub img {
+  height: 0.7272727272727273rem;
+  width: 0.7272727272727273rem;
+  margin-left: 0.36363636363636365rem;
+}
+.ui-header.ui-bar-s > .ui-btn {
+  position: absolute;
+  top: 0.7272727272727273rem;
+  margin-top: 0px;
+  height: 1.5454545454545454rem;
+  width: 1.5454545454545454rem;
+  background: transparent;
+  color: #3a3a3a;
+}
+.ui-header.ui-bar-s.ui-title-tabbar > .ui-btn {
+  top: 0.36363636363636365rem;
+}
+.ui-header.ui-bar-s > .ui-btn.ui-btn-icon_only {
+  -o-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -moz-border-radius: 0px;
+  -webkit-border-radius: 0px;
+  border-radius: 0px;
+}
+.ui-header.ui-bar-s .ui-btn-right-0 {
+  right: 0.5rem;
+}
+.ui-header.ui-bar-s .ui-btn-right-1 {
+  right: 2.5454545454545454rem;
+}
+.ui-header.ui-bar-s > .ui-btn:not(.ui-btn-icon_only):nth-child(2) {
+  right: 0.3181818181818182rem;
+}
+.ui-header.ui-bar-s > .ui-btn:not(.ui-btn-icon_only):nth-child(3) {
+  right: 2.8181818181818183rem;
+}
+.ui-header.ui-bar-s > img + h1 + .ui-btn:not(.ui-btn-icon_only):nth-child(3) {
+  right: 0.3181818181818182rem;
+}
+.ui-header.ui-bar-s > img + h1 + .ui-btn:not(.ui-btn-icon_only):nth-child(3) + .ui-btn:not(.ui-btn-icon_only) {
+  right: 2.8181818181818183rem;
+}
+.ui-header.ui-bar-s > img + h1 + span.ui-title-text-sub + .ui-btn:not(.ui-btn-icon_only):nth-child(4) {
+  right: 0.3181818181818182rem;
+}
+.ui-header.ui-bar-s > img + h1 + span.ui-title-text-sub + .ui-btn:not(.ui-btn-icon_only):nth-child(4) + .ui-btn:not(.ui-btn-icon_only) {
+  right: 2.8181818181818183rem;
+}
+.ui-header.ui-bar-s > .ui-btn.ui-btn-down-s {
+  background: rgba(64, 147, 247, 0.1);
+  color: #3b73b6;
+}
+.ui-header.ui-bar-s.ui-title-multiline .ui-title {
+  min-height: 1.0909090909090908rem;
+  max-height: 1.0909090909090908rem;
+  /* temporary UX strange */
+
+  font-size: 1rem;
+  margin: 0.4090909090909091rem 0.36363636363636365rem 1rem 0.36363636363636365rem;
+}
+.ui-footer.ui-bar-s {
+  height: 2.2272727272727275rem;
+  text-align: center;
+  bottom: 0px;
+}
+.ui-footer.ui-bar-s > .ui-btn.ui-btn-back,
+.ui-footer.ui-bar-s > .ui-btn.ui-btn-footer-down,
+.ui-footer.ui-bar-s > [data-icon="naviframe-more"] {
+  background: transparent;
+}
+.ui-footer.ui-bar-s > .ui-btn.ui-btn-back > .ui-btn-icon-only,
+.ui-footer.ui-bar-s > .ui-btn.ui-btn-footer-down > .ui-btn-icon-only,
+.ui-footer.ui-bar-s > [data-icon="naviframe-more"] > .ui-btn-icon-only {
+  width: 2.5454545454545454rem;
+  height: 2.2272727272727275rem;
+  padding: 0px;
+  -webkit-box-shadow: none /* temp code */
+;
+}
+.ui-footer.ui-bar-s > .ui-btn.ui-btn-back,
+.ui-footer.ui-bar-s > .ui-btn.ui-btn-footer-down {
+  top: 0px;
+}
+.ui-footer.ui-bar-s > .ui-btn.ui-btn-footer-down .ui-icon {
+  left: auto;
+  right: 0.5909090909090909rem;
+}
+.ui-footer.ui-bar-s [data-icon="naviframe-more"] {
+  position: absolute;
+  left: 0rem;
+  top: 0rem;
+  box-shadow: none;
+  border-width: 0px;
+}
+.ui-footer.ui-bar-s [data-icon="naviframe-more"] .ui-icon-naviframe-more {
+  left: 0.5909090909090909rem;
+  top: 0.36363636363636365rem;
+  margin-top: 0px;
+}
+.ui-footer.ui-bar-s [data-icon="naviframe-more"] .ui-btn-inner {
+  border: none;
+  background: transparent;
+  box-shadow: none;
+}
+.ui-footer.ui-bar-s > [data-role="button"] {
+  font-size: 0.6818181818181819rem;
+  font-weight: bold;
+  color: #bababa;
+}
+.ui-footer.ui-bar-s [data-role="controlgroup"] {
+  margin-left: auto;
+  margin-right: auto;
+  margin-top: 0.2727272727272727rem;
+  margin-bottom: 0.2727272727272727rem;
+  /* temp value */
+
+  padding-left: 2.6363636363636362rem;
+  padding-right: 2.6363636363636362rem;
+}
+.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] {
+  background: transparent;
+  border-style: solid;
+  border-color: #3b3e40;
+  border-top-width: 0px;
+  border-bottom-width: 0px;
+  border-left-width: 1px;
+  border-right-width: 1px;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  border-radius: 0;
+  box-shadow: none;
+  padding: 0px;
+  margin-left: -0.18181818181818182rem;
+  margin-right: -0.2272727272727273rem;
+}
+.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-hover-s {
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  border-radius: 0;
+}
+.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-down-s,
+.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-active-s {
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  border-radius: 0;
+}
+.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-down-s .ui-btn-inner,
+.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-active-s .ui-btn-inner {
+  background: #202327;
+}
+.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-down-s .ui-btn-inner .ui-btn-text,
+.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-active-s .ui-btn-inner .ui-btn-text {
+  color: #70a9ee;
+}
+.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] > .ui-btn-inner {
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  border-radius: 0;
+  border: 0px solid;
+  box-shadow: none;
+}
+.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-text {
+  font-size: 0.7727272727272727rem;
+  color: #3a3a3a;
+}
+.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-corner-right {
+  border-right-width: 0px;
+}
+.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-corner-left {
+  border-left-width: 0px;
+}
+.ui-footer.ui-bar-s > [data-role="button"]:not([data-icon="naviframe-more"]) {
+  top: 0.2727272727272727rem;
+}
+.ui-footer.ui-bar-s > p {
+  margin-top: 0.36363636363636365rem;
+  margin-bottom: 0.36363636363636365rem;
+}
+.ui-footer.ui-bar-s > h1,
+.ui-footer.ui-bar-s h2,
+.ui-footer.ui-bar-s h3,
+.ui-footer.ui-bar-s h4,
+.ui-footer.ui-bar-s h5,
+.ui-footer.ui-bar-s h6 {
+  display: inline-block;
+}
+/***************************************************************************
+                    Content Top calculate
+***************************************************************************/
+.ui-content {
+  position: relative;
+  top: 0;
+}
+/***************************************************************************
+                    Content Top calculate
+***************************************************************************/
+.ui-body-s {
+  border: 1px solid #2a2a2a;
+  background: #202327;
+  color: #f9f9f9;
+  font-weight: normal;
+  font-family: Helvetica, Arial, sans-serif;
+}
+.ui-body-s .ui-link-inherit {
+  color: #fff;
+}
+.ui-body-s .ui-link {
+  /* ui-body-link */
+
+  color: #2489CE;
+  font-weight: bold;
+}
+.ui-body-s .ui-link:hover {
+  color: #2489CE;
+}
+.ui-body-s .ui-link:active {
+  color: #2489CE;
+}
+.ui-body-s .ui-link:visited {
+  color: #2489CE;
+}
+.ui-btn-box-s {
+  padding: 0.045454545454545456rem;
+}
+.ui-btn-box-s.ui-btn-up-s {
+  color: #3a3a3a;
+  background: #202327;
+  background: -webkit-linear-gradient(top, #202327, #202327);
+  background: -moz-linear-gradient(top, #ebe8e3, #eae7e2);
+  background: -o-linear-gradient(top, #ebe8e3, #eae7e2);
+  background: -ms-linear-gradient(top, #ebe8e3, #eae7e2);
+  border: 1px solid;
+  border-color: #000000;
+  -o-box-shadow: 0 0 1px 1px #000000;
+  -ms-box-shadow: 0 0 1px 1px #000000;
+  -moz-box-shadow: 0 0 1px 1px #000000;
+  -webkit-box-shadow: 0 0 1px 1px #000000;
+  box-shadow: 0 0 1px 1px #000000;
+  -o-border-radius: 0.3rem;
+  -ms-border-radius: 0.3rem;
+  -moz-border-radius: 0.3rem;
+  -webkit-border-radius: 0.3rem;
+  border-radius: 0.3rem;
+  font-family: Helvetica, Arial, sans-serif;
+  font-weight: normal;
+  font-size: 1.0rem;
+  font-style: normal;
+  color: #bababa;
+}
+.ui-btn.ui-btn-corner-all .ui-btn-box-s.ui-btn-up-s {
+  -o-border-radius: 1.2rem;
+  -ms-border-radius: 1.2rem;
+  -moz-border-radius: 1.2rem;
+  -webkit-border-radius: 1.2rem;
+  border-radius: 1.2rem;
+}
+.ui-btn-box-s .ui-btn-inner {
+  border: 1px solid;
+  border-color: #000000;
+  -o-border-radius: 0.3rem;
+  -ms-border-radius: 0.3rem;
+  -moz-border-radius: 0.3rem;
+  -webkit-border-radius: 0.3rem;
+  border-radius: 0.3rem;
+  -o-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  background: #202327;
+  background: -webkit-linear-gradient(top, #202327, #202327);
+  background: -ms-linear-gradient(top, #faf7f2, #f8f5f0);
+  background: -o-linear-gradient(top, #faf7f2, #f8f5f0);
+  background: -moz-linear-gradient(top, #faf7f2, #f8f5f0);
+  -o-box-shadow: none;
+  -ms-box-shadow: none;
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  height: 100%;
+}
+.ui-btn.ui-btn-corner-all.ui-btn-box-s .ui-btn-inner {
+  -o-border-radius: 1.2rem;
+  -ms-border-radius: 1.2rem;
+  -moz-border-radius: 1.2rem;
+  -webkit-border-radius: 1.2rem;
+  border-radius: 1.2rem;
+}
+.ui-ctxpopup .ui-btn-box-s.ui-btn-up-s,
+.ui-ctxpopup .ui-btn-box-s.ui-btn-hover-s {
+  background: transparent !important;
+  border: none;
+  box-shadow: none;
+  padding: 0;
+  color: white !important;
+}
+.ui-ctxpopup .ui-btn-box-s.ui-btn-down-s {
+  background: #3b73b6 !important;
+  border: none;
+  box-shadow: none;
+  padding: 0;
+  color: white !important;
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  border-radius: 0;
+}
+.ui-ctxpopup .ui-btn-box-s .ui-btn-inner {
+  background: transparent ! important;
+  box-shadow: none;
+  border: none;
+}
+.ui-ctxpopup .ui-btn-down-s {
+  background: #3b73b6 !important;
+}
+.ui-header .ui-btn-box-s,
+.ui-footer .ui-btn-box-s,
+.ui-btn-back.ui-btn-up-s,
+.ui-btn-back.ui-btn-hover-s,
+.ui-btn-back.ui-btn-down-s,
+.ui-btn-footer-down.ui-btn-up-s,
+.ui-btn-footer-down.ui-btn-hover-s,
+.ui-btn-footer-down.ui-btn-down-s,
+.ui-popup-container .ui-btn-box-s {
+  font-weight: normal;
+  -o-border-radius: 0.9 rem;
+  -ms-border-radius: 0.9 rem;
+  -moz-border-radius: 0.9 rem;
+  -webkit-border-radius: 0.9 rem;
+  border-radius: 0.9 rem;
+}
+.ui-btn-box-s.ui-btn-hover-s {
+  color: #3a3a3a;
+  font-family: Helvetica, Arial, sans-serif;
+  font-weight: normal;
+  font-size: 1.0rem;
+  font-style: normal;
+  color: #bababa;
+  -o-border-radius: 0.3em ! important;
+  -ms-border-radius: 0.3em ! important;
+  -moz-border-radius: 0.3em ! important;
+  -webkit-border-radius: 0.3em ! important;
+  border-radius: 0.3em ! important;
+}
+.ui-btn-box-s.ui-btn-hover-s.ui-btn-corner-circle {
+  -o-border-radius: 1em ! important;
+  -ms-border-radius: 1em ! important;
+  -moz-border-radius: 1em ! important;
+  -webkit-border-radius: 1em ! important;
+  border-radius: 1em ! important;
+}
+.ui-btn-box-s.ui-btn-hover-s.ui-btn-corner-all {
+  -o-border-radius: 1.2em ! important;
+  -ms-border-radius: 1.2em ! important;
+  -moz-border-radius: 1.2em ! important;
+  -webkit-border-radius: 1.2em ! important;
+  border-radius: 1.2em ! important;
+}
+.ui-btn-box-s.ui-btn-hover-s.ui-btn-round {
+  -o-border-radius: 1.2em ! important;
+  -ms-border-radius: 1.2em ! important;
+  -moz-border-radius: 1.2em ! important;
+  -webkit-border-radius: 1.2em ! important;
+  border-radius: 1.2em ! important;
+}
+.ui-btn-box-s.ui-btn-down-s .ui-btn-inner {
+  background: #3b73b6;
+  color: #ffffff;
+}
+.ui-btn-up-s,
+.ui-btn-hover-s,
+.ui-btn-down-s {
+  font-family: Helvetica, Arial, sans-serif;
+  text-decoration: none;
+}
+/*
+/* Structure */
+/* links within "buttons" 
+-----------------------------------------------------------------------------------------------------------*/
+a.ui-link-inherit {
+  text-decoration: none !important;
+}
+/* Active class used as the "on" state across all themes
+-----------------------------------------------------------------------------------------------------------*/
+/* button default color for active state */
+.ui-btn-active {
+  /* global-active */
+
+  color: #3a3a3a;
+  cursor: pointer;
+  text-decoration: none;
+  background: #3b73b6;
+  outline: none;
+}
+.ui-btn-active a.ui-link-inherit {
+  color: #3a3a3a;
+}
+/* button inner top highlight
+-----------------------------------------------------------------------------------------------------------*/
+/* corner rounding classes
+-----------------------------------------------------------------------------------------------------------*/
+.ui-corner-tl {
+  -moz-border-radius-topleft: 0.3em;
+  -webkit-border-top-left-radius: 0.3em;
+  border-top-left-radius: 0.3em;
+}
+.ui-corner-tr {
+  -moz-border-radius-topright: 0.3em;
+  -webkit-border-top-right-radius: 0.3em;
+  border-top-right-radius: 0.3em;
+}
+.ui-corner-bl {
+  -moz-border-radius-bottomleft: 0.3em;
+  -webkit-border-bottom-left-radius: 0.3em;
+  border-bottom-left-radius: 0.3em;
+}
+.ui-corner-br {
+  -moz-border-radius-bottomright: 0.3em;
+  -webkit-border-bottom-right-radius: 0.3em;
+  border-bottom-right-radius: 0.3em;
+}
+.ui-corner-top {
+  -moz-border-radius-topleft: 0.3em;
+  -webkit-border-top-left-radius: 0.3em;
+  border-top-left-radius: 0.3em;
+  -moz-border-radius-topright: 0.3em;
+  -webkit-border-top-right-radius: 0.3em;
+  border-top-right-radius: 0.3em;
+}
+.ui-corner-bottom {
+  -moz-border-radius-bottomleft: 0.3em;
+  -webkit-border-bottom-left-radius: 0.3em;
+  border-bottom-left-radius: 0.3em;
+  -moz-border-radius-bottomright: 0.3em;
+  -webkit-border-bottom-right-radius: 0.3em;
+  border-bottom-right-radius: 0.3em;
+}
+.ui-corner-right {
+  -moz-border-radius-topright: 0.3em;
+  -webkit-border-top-right-radius: 0.3em;
+  border-top-right-radius: 0.3em;
+  -moz-border-radius-bottomright: 0.3em;
+  -webkit-border-bottom-right-radius: 0.3em;
+  border-bottom-right-radius: 0.3em;
+}
+.ui-corner-left {
+  -moz-border-radius-topleft: 0.3em;
+  -webkit-border-top-left-radius: 0.3em;
+  border-top-left-radius: 0.3em;
+  -moz-border-radius-bottomleft: 0.3em;
+  -webkit-border-bottom-left-radius: 0.3em;
+  border-bottom-left-radius: 0.3em;
+}
+.ui-corner-none {
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  border-radius: 0;
+}
+/*************************************************************************** 
+                    Icon (Naviframe)
+***************************************************************************/
+.ui-header .ui-btn .ui-btn-icon-only .ui-icon,
+.ui-footer .ui-btn .ui-btn-icon-only .ui-icon {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+}
+.ui-btn-back .ui-btn-inner .ui-icon-header-back-btn,
+.ui-btn-footer-down .ui-btn-inner .ui-icon {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  background-repeat: no-repeat;
+  background-size: 100% 100%;
+}
+.ui-btn-up-s {
+  /* less parsing problem : divide css */
+
+  /* FIXME : check ux if it needs to be deprecated... */
+
+}
+.ui-btn-up-s .ui-icon-header-back-btn {
+  background-image: url(images/page/00_icon_Back.png);
+}
+.ui-btn-up-s .ui-icon-naviframe-more {
+  background-image: url(images/page/00_icon_more.png);
+}
+.ui-btn-up-s .ui-icon-naviframe-cancel {
+  background-image: url(images/00_icon_cancel.png);
+}
+.ui-btn-up-s .ui-icon-naviframe-edit {
+  background-image: url(images/page/00_icon_edit.png);
+}
+.ui-btn-up-s .ui-icon-naviframe-plus {
+  background-image: url(images/page/00_icon_plus.png);
+}
+.ui-btn-up-s .ui-icon-down {
+  background-image: url(images/controls/button/00_icon_SIP_close_web_web.png);
+}
+
+.ui-btn-hover-s .ui-icon-header-back-btn {
+  background-image: url(images/page/00_icon_Back.png);
+}
+.ui-btn-hover-s .ui-icon-naviframe-more {
+  background-image: url(images/page/00_icon_more.png);
+}
+.ui-btn-hover-s .ui-icon-naviframe-cancel {
+  background-image: url(images/00_icon_cancel.png);
+}
+.ui-btn-hover-s .ui-icon-naviframe-edit {
+  background-image: url(images/page/00_icon_edit.png);
+}
+.ui-btn-hover-s .ui-icon-naviframe-plus {
+  background-image: url(images/page/00_icon_plus.png);
+}
+.ui-btn-hover-s .ui-icon-down {
+  background-image: url(images/controls/button/00_icon_SIP_close_web_web.png);
+}
+
+.ui-btn-down-s .ui-icon-header-back-btn {
+  background-image: url(images/page/00_icon_Back_press.png);
+}
+.ui-btn-down-s .ui-icon-naviframe-more {
+  background-image: url(images/page/00_icon_more_press.png);
+}
+.ui-btn-down-s .ui-icon-naviframe-cancel {
+  background-image: url(images/00_icon_cancel_press.png);
+}
+.ui-btn-down-s .ui-icon-naviframe-edit {
+  background-image: url(images/page/00_icon_edit_press.png);
+}
+.ui-btn-down-s .ui-icon-naviframe-plus {
+  background-image: url(images/page/00_icon_plus_press.png);
+}
+.ui-btn-down-s .ui-icon-down {
+  background-image: url(images/controls/button/00_icon_SIP_close_press_web.png);
+}
+/* Interaction cues
+-----------------------------------------------------------------------------------------------------------*/
+.ui-disabled {
+  filter: alpha(opacity=30);
+  opacity: .3;
+  zoom: 1;
+}
+.ui-disabled,
+.ui-disabled a {
+  cursor: default !important;
+  pointer-events: none;
+}
+/*
+* jQuery Mobile Framework
+* Copyright (c) jQuery Project
+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
+*/
+/*** less definitions ***/
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+/************************/
+/* some unsets - more probably needed */
+.ui-mobile,
+.ui-mobile body {
+  height: 100%;
+  font-size: 22px;
+}
+@media all and (max-width: 359px) {
+  .ui-mobile,
+  .ui-mobile body {
+    font-size: 19px;
+  }
+}
+.ui-mobile fieldset,
+.ui-page {
+  padding: 0;
+  margin: 0;
+}
+.ui-mobile a img,
+.ui-mobile fieldset {
+  border: 0;
+}
+/* responsive page widths */
+.ui-mobile-viewport {
+  margin: 0;
+  overflow-x: hidden;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+/* "page" containers - full-screen views, one should always be in view post-pageload */
+.ui-mobile [data-role=page],
+.ui-mobile [data-role=dialog],
+.ui-page {
+  top: 0;
+  left: 0;
+  width: 100%;
+  position: absolute;
+  display: none;
+  border: 0;
+}
+.ui-mobile .ui-page-active {
+  display: block;
+  overflow: visible;
+}
+/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */
+.ui-page {
+  outline: none;
+}
+.ui-mobile,
+.ui-mobile .ui-page {
+  background: #202327;
+  color: #f9f9f9;
+}
+/* native overflow scrolling */
+.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 * {
+  /* some level of transform keeps elements from blinking out of visibility on iOS */
+
+  transform: rotateY(0);
+  -ms-transform: rotateY(0);
+  -moz-transform: rotateY(0);
+  -webkit-transform: rotateY(0);
+  -o-transform: rotateY(0);
+}
+.ui-page.ui-mobile-pre-transition {
+  display: block;
+}
+/* loading screen */
+.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: 1.4545454545454546rem;
+  text-align: center;
+}
+.ui-loader .ui-icon {
+  position: static;
+  display: block;
+  opacity: .9;
+  margin: 0 auto;
+  width: 35px;
+  height: 35px;
+  background-color: transparent;
+}
+.ui-blocker {
+  width: 100%;
+  height: 100%;
+  z-index: 2147483647;
+}
+/*fouc*/
+.ui-mobile-rendering > * {
+  visibility: hidden;
+}
+/*headers, content panels*/
+.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: fixed;
+  /*position: relative;*/
+  z-index: 1000;
+}
+/* Title button packing order */
+.ui-header .ui-btn-left {
+  top: .4em;
+  float: left;
+}
+.ui-header .ui-btn-right {
+  float: right;
+  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;
+}
+/*content area*/
+.ui-content {
+  border-width: 0;
+  overflow: visible;
+  overflow-x: hidden;
+  padding: 15px;
+}
+.ui-page-fullscreen .ui-content {
+  padding: 0;
+}
+/* native fixed headers and footers */
+.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;
+}
+/* icons sizing */
+.ui-icon {
+  width: 18px;
+  height: 18px;
+}
+/* fullscreen class on ui-content div */
+.ui-fullscreen img {
+  max-width: 100%;
+}
+/* non-js content hiding */
+.ui-nojs {
+  position: absolute;
+  left: -9999px;
+}
+/* Transitions originally inspired by those from jQtouch, nice work, folks */
+.ui-mobile-viewport-transitioning,
+.ui-mobile-viewport-transitioning .ui-page {
+       width: 100%;
+       height: 100%;
+       overflow: hidden;
+}
+
+.in {
+       -ms-animation-timing-function: ease-out;
+        -ms-animation-duration: 350ms;
+       -o-animation-timing-function: ease-out;
+        -o-animation-duration: 350ms;
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+}
+
+.out {
+       -ms-animation-timing-function: ease-in;
+        -ms-animation-duration: 225ms;
+        -o-animation-timing-function: ease-in;
+        -o-animation-duration: 225;
+       -webkit-animation-timing-function: ease-in;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-timing-function: ease-in;
+       -moz-animation-duration: 225;
+}
+
+
+/* fade */
+
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+
+@-webkit-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+
+@-moz-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+
+.fade.out {
+       opacity: 0;
+       -ms-animation-duration: 125ms;
+        -ms-animation-name: fadeout;
+        -o-animation-duration: 125ms;
+        -o-animation-name: fadeout;
+       -webkit-animation-duration: 125ms;
+       -webkit-animation-name: fadeout;
+       -moz-animation-duration: 125ms;
+       -moz-animation-name: fadeout;
+}
+
+.fade.in {
+       opacity: 1;
+       -ms-animation-duration: 225ms;
+        -ms-animation-name: fadein;
+        -o-animation-duration: 225ms;
+        -o-animation-name: fadein;
+       -webkit-animation-duration: 225ms;
+       -webkit-animation-name: fadein;
+       -moz-animation-duration: 225ms;
+       -moz-animation-name: fadein;
+}
+
+
+/* flip */
+
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+
+.viewport-flip {
+       -ms-perspective: 1000;
+       -o-perspective: 1000;
+       -webkit-perspective: 1000;
+       -moz-perspective: 1000;
+       position: absolute;
+}
+.flip {
+       -webkit-backface-visibility:hidden;
+       -webkit-transform:translate3d(0, 0, 0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+       -moz-backface-visibility:hidden;
+       -moz-transform:translate3d(0, 0, 0);
+}
+
+.flip.out {
+       -webkit-transform: rotateY(-90deg) scale(.9);
+       -webkit-animation-name: flipouttoleft;
+       -webkit-animation-duration: 175ms;
+       -moz-transform: rotateY(-90deg) scale(.9);
+       -moz-animation-name: flipouttoleft;
+       -moz-animation-duration: 175ms;
+}
+
+.flip.in {
+       -webkit-animation-name: flipintoright;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-name: flipintoright;
+       -moz-animation-duration: 225ms;
+}
+
+.flip.out.reverse {
+       -webkit-transform: rotateY(90deg) scale(.9);
+       -webkit-animation-name: flipouttoright;
+       -moz-transform: rotateY(90deg) scale(.9);
+       -moz-animation-name: flipouttoright;
+}
+
+.flip.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+}
+
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+
+
+/* flow transition */
+
+.flow {
+       -webkit-transform-origin: 50% 30%;
+       -moz-transform-origin: 50% 30%;
+       -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4);
+       -moz-box-shadow: 0 0 20px rgba(0,0,0,.4);
+}
+.ui-dialog.flow {
+       -webkit-transform-origin: none;
+       -moz-transform-origin: none;
+       -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+}
+.flow.out {
+       -webkit-transform: translate3d(-100%, 0, 0) scale(.7);
+       -webkit-animation-name: flowouttoleft;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translate3d(-100%, 0, 0) scale(.7);
+       -moz-animation-name: flowouttoleft;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+}
+
+.flow.in {
+       -webkit-transform: translate3d(0, 0, 0) scale(1);
+       -webkit-animation-name: flowinfromright;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translate3d(0, 0, 0) scale(1);
+       -moz-animation-name: flowinfromright;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+}
+
+.flow.out.reverse {
+       -webkit-transform: translate3d(100%, 0, 0);
+       -webkit-animation-name: flowouttoright;
+       -moz-transform: translate3d(100%, 0, 0);
+       -moz-animation-name: flowouttoright;
+}
+
+.flow.in.reverse {
+       -webkit-animation-name: flowinfromleft;
+       -moz-animation-name: flowinfromleft;
+}
+
+@-webkit-keyframes flowouttoleft {
+    0% { -webkit-transform: translate3d(0, 0, 0) scale(1); }
+       60%, 70% { -webkit-transform: translate3d(0, 0, 0) scale(.7); }
+    100% { -webkit-transform: translate3d(-100%, 0, 0) scale(.7); }
+}
+@-moz-keyframes flowouttoleft {
+    0% { -moz-transform: translate3d(0, 0, 0) scale(1); }
+       60%, 70% { -moz-transform: translate3d(0, 0, 0) scale(.7); }
+    100% { -moz-transform:  translateX(-100%) scale(.7); }
+}
+
+@-webkit-keyframes flowouttoright {
+    0% { -webkit-transform: translate3d(0, 0, 0) scale(1); }
+       60%, 70% { -webkit-transform: translate3d(0, 0, 0) scale(.7); }
+    100% { -webkit-transform:  translate3d(100%, 0, 0) scale(.7); }
+}
+@-moz-keyframes flowouttoright {
+    0% { -moz-transform: translate3d(0, 0, 0) scale(1); }
+       60%, 70% { -moz-transform: translate3d(0, 0, 0) scale(.7); }
+    100% { -moz-transform:  translate3d(100%, 0, 0) scale(.7); }
+}
+
+@-webkit-keyframes flowinfromleft {
+    0% { -webkit-transform: translate3d(-100%, 0, 0) scale(.7); }
+       30%, 40% { -webkit-transform: translate3d(0, 0, 0) scale(.7); }
+    100% { -webkit-transform: translate3d(0, 0, 0) scale(1); }
+}
+@-moz-keyframes flowinfromleft {
+    0% { -moz-transform: translate3d(-100%, 0, 0) scale(.7); }
+       30%, 40% { -moz-transform: translate3d(0, 0, 0) scale(.7); }
+    100% { -moz-transform: translate3d(0, 0, 0) scale(1); }
+}
+@-webkit-keyframes flowinfromright {
+    0% { -webkit-transform: translate3d(100%, 0, 0) scale(.7); }
+       30%, 40% { -webkit-transform: translate3d(0, 0, 0) scale(.7); }
+    100% { -webkit-transform: translate3d(0, 0, 0) scale(1); }
+}
+@-moz-keyframes flowinfromright {
+    0% { -moz-transform: translate3d(100%, 0, 0) scale(.7); }
+       30%, 40% { -moz-transform: translate3d(0, 0, 0) scale(.7); }
+    100% { -moz-transform: translate3d(0, 0, 0) scale(1); }
+}
+
+
+/* pop */
+
+.pop {
+       -webkit-transform-origin: 50% 50%;
+       -moz-transform-origin: 50% 50%;
+}
+
+.pop.in {
+       -webkit-transform: scale(1);
+       -moz-transform: scale(1);
+    opacity: 1;
+       -webkit-animation-name: popin;
+       -moz-animation-name: popin;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-duration: 350ms;
+}
+
+.pop.out {
+       -webkit-animation-name: fadeout;
+       -moz-animation-name: fadeout;
+       opacity: 0;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-duration: 100ms;
+}
+
+.pop.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+}
+
+.pop.out.reverse {
+       -webkit-transform: scale(.8);
+       -moz-transform: scale(.8);
+       -webkit-animation-name: popout;
+       -moz-animation-name: popout;
+}
+
+@-webkit-keyframes popin {
+    from {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+}
+
+@-moz-keyframes popin {
+    from {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+}
+
+@-webkit-keyframes popout {
+    from {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+}
+
+@-moz-keyframes popout {
+    from {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+}
+
+
+/* slide */
+
+/* keyframes for slidein from sides */
+@-webkit-keyframes slideinfromright {
+    from { -webkit-transform: translate3d(100%, 0, 0); }
+    to { -webkit-transform: translate3d(0, 0, 0); }
+}
+@-moz-keyframes slideinfromright {
+    from { -moz-transform: translate3d(100%, 0, 0); }
+    to { -moz-transform: translate3d(0, 0, 0); }
+}
+
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translate3d(-100%, 0, 0); }
+    to { -webkit-transform: translate3d(0, 0, 0); }
+}
+@-moz-keyframes slideinfromleft {
+    from { -moz-transform: translate3d(-100%, 0, 0); }
+    to { -moz-transform: translate3d(0, 0, 0); }
+}
+
+/* keyframes for slideout to sides */
+@-webkit-keyframes slideouttoleft {
+    from { -webkit-transform: translate3d(0, 0, 0); }
+    to { -webkit-transform: translate3d(-100%, 0, 0); }
+}
+@-moz-keyframes slideouttoleft {
+    from { -moz-transform: translate3d(0, 0, 0); }
+    to { -moz-transform: translate3d(-100%, 0, 0); }
+}
+
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translate3d(0, 0, 0); }
+    to { -webkit-transform: translate3d(100%, 0, 0); }
+}
+@-moz-keyframes slideouttoright {
+    from { -moz-transform: translate3d(0, 0, 0); }
+    to { -moz-transform: translate3d(100%, 0, 0); }
+}
+
+.slide.out, .slide.in {
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+}
+.slide.out {
+       -webkit-transform: translate3d(-100%, 0, 0);
+       -webkit-animation-name: slideouttoleft;
+       -moz-transform: translate3d(-100%, 0, 0);
+       -moz-animation-name: slideouttoleft;
+}
+
+.slide.in {
+       -webkit-transform: translate3d(0, 0, 0);
+       -webkit-animation-name: slideinfromright;
+       -moz-transform: translate3d(0, 0, 0);
+       -moz-animation-name: slideinfromright;
+}
+
+.slide.out.reverse {
+       -webkit-transform: translate3d(100%, 0, 0);
+       -webkit-animation-name: slideouttoright;
+       -moz-transform: translate3d(100%, 0, 0);
+       -moz-animation-name: slideouttoright;
+}
+
+.slide.in.reverse {
+       -webkit-transform: translate3d(0, 0, 0);
+       -webkit-animation-name: slideinfromleft;
+       -moz-transform: translate3d(0, 0, 0);
+       -moz-animation-name: slideinfromleft;
+}
+
+/* slide down */
+
+.slidedown.out {
+       -webkit-animation-name: fadeout;
+       -moz-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-duration: 100ms;
+}
+
+.slidedown.in {
+       -webkit-transform: translate3d(0, 0, 0);
+       -webkit-animation-name: slideinfromtop;
+       -moz-transform: translate3d(0, 0, 0);
+       -moz-animation-name: slideinfromtop;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-duration: 250ms;
+}
+
+.slidedown.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-duration: 150ms;
+}
+
+.slidedown.out.reverse {
+       -webkit-transform: translate3d(0, -100%, 0);
+       -moz-transform: translate3d(0, -100%, 0);
+       -webkit-animation-name: slideouttotop;
+       -moz-animation-name: slideouttotop;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translate3d(0, -100%, 0); }
+    to { -webkit-transform: translate3d(0, 0, 0); }
+}
+@-moz-keyframes slideinfromtop {
+    from { -moz-transform: translate3d(0, -100%, 0); }
+    to { -moz-transform: translate3d(0, 0, 0); }
+}
+
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translate3d(0, 0, 0); }
+    to { -webkit-transform: translate3d(0, -100%, 0); }
+}
+@-moz-keyframes slideouttotop {
+    from { -moz-transform: translate3d(0, 0, 0); }
+    to { -moz-transform: translate3d(0, -100%, 0); }
+}
+
+/* slide up */
+
+.slideup.out {
+       -webkit-animation-name: fadeout;
+       -moz-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-duration: 100ms;
+}
+
+.slideup.in {
+       -webkit-transform: translate3d(0, 0, 0);
+       -webkit-animation-name: slideinfrombottom;
+       -moz-transform: translate3d(0, 0, 0);
+       -moz-animation-name: slideinfrombottom;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-duration: 250ms;
+}
+
+.slideup.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-duration: 150ms;
+}
+
+.slideup.out.reverse {
+       -webkit-transform: translate3d(0, 100%, 0);
+       -moz-transform: translate3d(0, 100%, 0);
+       -webkit-animation-name: slideouttobottom;
+       -moz-animation-name: slideouttobottom;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translate3d(0, 100%, 0); }
+    to { -webkit-transform: translate3d(0, 0, 0); }
+}
+@-moz-keyframes slideinfrombottom {
+    from { -moz-transform: translate3d(0, 100%, 0); }
+    to { -moz-transform: translate3d(0, 0, 0); }
+}
+
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translate3d(0, 0, 0); }
+    to { -webkit-transform: translate3d(0, 100%, 0); }
+}
+@-moz-keyframes slideouttobottom {
+    from { -moz-transform: translate3d(0, 0, 0); }
+    to { -moz-transform: translate3d(0, 100%, 0); }
+}
+
+/* slide up + fade */
+
+.slideupfade.out {
+       -webkit-animation-name: fadeout;
+       -moz-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-duration: 100ms;
+}
+
+.slideupfade.in {
+       -webkit-transform: translate3d(0, 0, 0);
+       -webkit-animation-name: slideupfadeinfrombottom;
+       -moz-transform: translate3d(0, 0, 0);
+       -moz-animation-name: slideupfadeinfrombottom;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-duration: 250ms;
+}
+
+.slideupfade.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-duration: 150ms;
+}
+
+.slideupfade.out.reverse {
+       -webkit-transform: translate3d(0, 5%, 0);
+       -moz-transform: translate3d(0, 5%, 0);
+       -webkit-animation-name: slideupfadeouttobottom;
+       -moz-animation-name: slideupfadeouttobottom;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+
+@-webkit-keyframes slideupfadeinfrombottom {
+    from {
+               opacity: 0;
+               -webkit-transform: translate3d(0, 5%, 0);
+       }
+    to {
+               opacity: 1;
+               -webkit-transform: translate3d(0, 0, 0);
+       }
+}
+@-moz-keyframes slideupfadeinfrombottom {
+    from {
+               opacity: 0;
+               -moz-transform: translate3d(0, 5%, 0);
+       }
+    to {
+               opacity: 1;
+               -moz-transform: translate3d(0, 0, 0);
+       }
+}
+
+@-webkit-keyframes slideupfadeouttobottom {
+    from {
+               opacity: 1;
+               -webkit-transform: translate3d(0, 0, 0);
+       }
+    to {
+               opacity: 0;
+               -webkit-transform: translate3d(0, 5%, 0);
+       }
+}
+@-moz-keyframes slideupfadeouttobottom {
+    from {
+               opacity: 1;
+               -moz-transform: translate3d(0, 0, 0);
+       }
+    to {
+               opacity: 0;
+               -moz-transform: translate3d(0, 5%, 0);
+       }
+}
+
+/* slide down + fade */
+
+.slidedownfade.out {
+       -webkit-animation-name: fadeout;
+       -moz-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-duration: 100ms;
+}
+
+.slidedownfade.in {
+       -webkit-transform: translate3d(0, 0, 0);
+       -webkit-animation-name: slidedownfadeinfromtop;
+       -moz-transform: translate3d(0, 0, 0);
+       -moz-animation-name: slidedownfadeinfromtop;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-duration: 250ms;
+}
+
+.slidedownfade.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-duration: 150ms;
+}
+
+.slidedownfade.out.reverse {
+       -webkit-transform: translate3d(0, -5%, 0);
+       -moz-transform: translate3d(0, -5%, 0);
+       -webkit-animation-name: slidedownfadeouttotop;
+       -moz-animation-name: slidedownfadeouttotop;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+
+@-webkit-keyframes slidedownfadeinfromtop {
+    from {
+               opacity: 0;
+               -webkit-transform: translate3d(0, -5%, 0);
+       }
+    to {
+               opacity: 1;
+               -webkit-transform: translate3d(0, 0, 0);
+       }
+}
+@-moz-keyframes slidedownfadeinfromtop {
+    from {
+               opacity: 0;
+               -moz-transform: translate3d(0, -5%, 0);
+       }
+    to {
+               opacity: 1;
+               -moz-transform: translate3d(0, 0, 0);
+       }
+}
+
+@-webkit-keyframes slidedownfadeouttotop {
+    from {
+               opacity: 1;
+               -webkit-transform: translate3d(0, 0, 0);
+       }
+    to {
+               opacity: 0;
+               -webkit-transform: translate3d(0, -5%, 0);
+       }
+}
+@-moz-keyframes slidedownfadeouttotop {
+    from {
+               opacity: 1;
+               -moz-transform: translate3d(0, 0, 0);
+       }
+    to {
+               opacity: 0;
+               -moz-transform: translate3d(0, -5%, 0);
+       }
+}
+
+/* slide fade */
+
+.slidefade.out {
+       -webkit-transform: translate3d(-100%, 0, 0);
+       -webkit-animation-name: slideouttoleft;
+       -moz-transform: translate3d(-100%, 0, 0);
+       -moz-animation-name: slideouttoleft;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-duration: 225ms;
+}
+
+.slidefade.in {
+       -webkit-transform: translate3d(0, 0, 0);
+       -webkit-animation-name: fadein;
+       -moz-transform: translate3d(0, 0, 0);
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+
+.slidefade.out.reverse {
+       -webkit-transform: translate3d(100%, 0, 0);
+       -webkit-animation-name: slideouttoright;
+       -moz-transform: translate3d(100%, 0, 0);
+       -moz-animation-name: slideouttoright;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+
+.slidefade.in.reverse {
+       -webkit-transform: translate3d(0, 0, 0);
+       -webkit-animation-name: fadein;
+       -moz-transform: translate3d(0, 0, 0);
+       -moz-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-animation-duration: 200ms;
+}
+
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+
+.viewport-turn {
+       -webkit-perspective: 1000;
+       -moz-perspective: 1000;
+       position: absolute;
+}
+.turn {
+       -webkit-backface-visibility:hidden;
+       -webkit-transform:translate3d(0, 0, 0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+       -webkit-transform-origin: 0;
+       -moz-backface-visibility:hidden;
+       -moz-transform:translate3d(0, 0, 0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+       -moz-transform-origin: 0;
+}
+
+.turn.out {
+       -webkit-transform: rotateY(-90deg) scale(.9);
+       -webkit-animation-name: flipouttoleft;
+       -moz-transform: rotateY(-90deg) scale(.9);
+       -moz-animation-name: flipouttoleft;
+       -webkit-animation-duration: 125ms;
+       -moz-animation-duration: 125ms;
+}
+
+.turn.in {
+       -webkit-animation-name: flipintoright;
+       -moz-animation-name: flipintoright;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-duration: 250ms;
+}
+
+.turn.out.reverse {
+       -webkit-transform: rotateY(90deg) scale(.9);
+       -webkit-animation-name: flipouttoright;
+       -moz-transform: rotateY(90deg) scale(.9);
+       -moz-animation-name: flipouttoright;
+}
+
+.turn.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+}
+
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+
+
+/* depth */
+
+.depth {
+       -webkit-transform-origin: 50% 50%;
+       -moz-transform-origin: 50% 50%;
+}
+
+.depth.out {
+       -webkit-animation-name: depthout;
+       -moz-animation-name: depthout;
+       opacity: 0;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-duration: 250ms;
+       -webkit-animation-timing-function: ease;
+       -moz-animation-timing-function: ease;
+}
+
+.depth.in {
+       -webkit-transform: scale(1);
+       -moz-transform: scale(1);
+       opacity: 1;
+       -webkit-animation-name: depthin;
+       -moz-animation-name: depthin;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-duration: 350ms;
+       -webkit-animation-timing-function: ease;
+       -moz-animation-timing-function: ease;
+}
+
+.depth.in.reverse {
+       -webkit-animation-name: depthinreverse;
+       -moz-animation-name: depthinreverse;
+}
+
+.depth.out.reverse {
+       -webkit-transform: scale(.9);
+       -moz-transform: scale(.9);
+       -webkit-animation-name: depthoutreverse;
+       -moz-animation-name: depthoutreverse;
+}
+
+@-webkit-keyframes depthout {
+    from {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -webkit-transform: scale(1.1);
+        opacity: 0;
+    }
+}
+
+@-moz-keyframes depthout {
+    from {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -moz-transform: scale(1.1);
+        opacity: 0;
+    }
+}
+
+@-webkit-keyframes depthin {
+    0% {
+        -webkit-transform: scale(.9);
+        opacity: 0;
+    }
+    30% {
+        -webkit-transform: scale(.9);
+        opacity: 0;
+    }
+    100% {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+}
+
+@-moz-keyframes depthin {
+    0% {
+        -moz-transform: scale(.9);
+        opacity: 0;
+    }
+    30% {
+        -moz-transform: scale(.9);
+        opacity: 0;
+    }
+    100% {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+}
+
+@-webkit-keyframes depthinreverse {
+    0% {
+        -webkit-transform: scale(1.1);
+        opacity: 0;
+    }
+    30% {
+        -webkit-transform: scale(1.1);
+        opacity: 0;
+    }
+    100% {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+}
+
+@-moz-keyframes depthinreverse {
+    0% {
+        -moz-transform: scale(1.1);
+        opacity: 0;
+    }
+    30% {
+        -moz-transform: scale(1.1);
+        opacity: 0;
+    }
+    100% {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+}
+
+@-webkit-keyframes depthoutreverse {
+    from {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -webkit-transform: scale(.9);
+        opacity: 0;
+    }
+}
+
+@-moz-keyframes depthoutreverse {
+    from {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -moz-transform: scale(.9);
+        opacity: 0;
+    }
+}
+/*
+* jQuery Mobile Framework
+* Copyright (c) jQuery Project
+* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses.
+*/
+
+/* content configurations. */
+.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;}
+
+/* grid solo: 100 - single item fallback */
+.ui-grid-solo .ui-block-a { width: 100%; float: none; }
+
+/* grid a: 50/50 */
+.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 50%; }
+.ui-grid-a .ui-block-a { clear: left; }
+
+/* grid b: 33/33/33 */
+.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; }
+
+/* grid c: 25/25/25/25 */
+.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; }
+
+/* grid d: 20/20/20/20/20 */
+.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; }
+/*
+* jQuery Mobile Framework
+* Copyright (c) jQuery Project
+* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses.
+*/
+/* fixed page header & footer configuration */
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.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);
+  /* Force header/footer rendering to go through the same rendering pipeline as native page scrolling. */
+
+}
+.ui-footer-duplicate,
+.ui-page-fullscreen .ui-fixed-inline {
+  display: none;
+}
+.ui-page-fullscreen .ui-header,
+.ui-page-fullscreen .ui-footer {
+  opacity: .9;
+}
+/*
+* jQuery Mobile Framework
+* Copyright (c) jQuery Project
+* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses.
+*/
+.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; }
+/*expanded page styles*/
+.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; }
+/*
+* jQuery Mobile Framework
+* Copyright (c) jQuery Project
+* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses.
+*/
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+/* Button colors are defined in config.less
+
+/* Edit button size */
+.ui-btn {
+  display: block;
+  text-align: center;
+  cursor: pointer;
+  position: relative;
+  /*margin: .2em 0px; padding: 0; */
+  vertical-align: middle;
+}
+/* wongi_1018 : For button align. */
+.ui-btn:focus,
+.ui-btn:active {
+  outline: none;
+}
+.ui-header .ui-btn,
+.ui-footer .ui-btn,
+.ui-bar .ui-btn {
+  display: inline-block;
+  font-size: 0.5909090909090909rem;
+  margin: 0;
+}
+.ui-btn-inline {
+  display: inline-block;
+}
+.ui-btn-inner {
+  padding: 0.5em 0.4090909090909091rem;
+  display: block;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  white-space: nowrap;
+  position: relative;
+  zoom: 1;
+}
+.ui-btn-icon-notext {
+  width: 1.6363636363636365rem;
+  height: 1.6363636363636365rem;
+}
+.ui-btn-icon-notext .ui-btn-inner {
+  padding: 0.09090909090909091rem 0.045454545454545456rem 0.09090909090909091rem 0.13636363636363635rem;
+}
+.ui-btn-icon-notext .ui-btn-inner .ui-icon {
+  margin-left: -0.7272727272727273rem;
+  margin-top: -0.7272727272727273rem;
+}
+.ui-btn-icon-notext .ui-btn-text {
+  position: absolute;
+  left: -45.409090909090914rem;
+}
+.ui-btn-icon-left .ui-btn-inner {
+  padding-left: 1.5rem;
+}
+.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: 1.2272727272727273rem;
+}
+.ui-btn-icon-right .ui-btn-inner {
+  padding-right: 1.5rem;
+}
+.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: 1.2272727272727273rem;
+}
+.ui-btn-icon-top .ui-btn-inner {
+  padding-top: 1.2272727272727273rem;
+}
+.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: 1.2272727272727273rem;
+}
+.ui-btn-icon-bottom .ui-btn-inner {
+  padding-bottom: 1.5rem;
+}
+.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: 1.2272727272727273rem;
+}
+/*btn icon positioning*/
+.ui-btn-icon-notext .ui-icon {
+  display: block;
+}
+.ui-btn-icon-left .ui-icon,
+.ui-btn-icon-right .ui-icon,
+.ui-btn-icon-circle .ui-icon {
+  position: absolute;
+  /*top: 50%; margin-top: -9px;*/
+}
+/* wongi_1018 : do not use. No more use 18px default icons. */
+.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;*/ 0rem;
+}
+/* wongi_1018 : with 64px icon, left 10 -> 0 for good looking. */
+.ui-btn-icon-circle .ui-icon {
+  left: 0rem;
+}
+/* wongi_1018 : for circle icon center positioning. */
+.ui-btn-icon-right .ui-icon {
+  right: 0.4545454545454546rem;
+}
+.ui-btn-icon-top .ui-icon {
+  top: 0rem;
+  margin-top: 0;
+}
+.ui-btn-icon-bottom .ui-icon {
+  bottom: 0rem;
+}
+.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: 0.18181818181818182rem;
+}
+.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: 0.18181818181818182rem;
+}
+.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: 0.18181818181818182rem;
+}
+/*hiding native button,inputs */
+.ui-btn-hidden {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  -webkit-appearance: button;
+  opacity: .1;
+  cursor: pointer;
+  background: transparent;
+  font-size: 0.045454545454545456rem;
+  border: none;
+  line-height: 45.409090909090914rem;
+}
+.ui-btn-text {
+  /*padding-left : 80px;*/
+  margin-left: auto;
+  margin-right: auto;
+  padding: 0 1px;
+  /* Webkit width(ellipsis) problem workaround */
+
+}
+.ui-li .ui-btn.ui-btn-icon_only {
+  top: 50%;
+  margin-top: -0.7272727272727273rem;
+}
+.ui-li .ui-btn .ui-btn-inner.ui-btn-hastxt {
+  padding: 0.2em 0.5em;
+}
+.ui-btn-icon-nobg.ui-btn-down-s .ui-btn-inner {
+  background: transparent ! important;
+}
+.ui-btn.ui-btn-box-s.ui-btn-down-s .ui-btn-inner {
+  color: #ffffff;
+}
+.ui-header .ui-btn-box-s:not(.ui-input-cancel):not(.ui-btn-search-front-icon),
+.ui-header .ui-btn-box-s:not(.ui-input-cancel):not(.ui-btn-search-front-icon) .ui-btn-inner,
+.ui-header .ui-btn.ui-btn-box-s.ui-btn-down-s:not(.ui-input-cancel):not(.ui-btn-search-front-icon) .ui-btn-inner,
+.ui-btn.ui-btn-back.ui-btn-up-s .ui-btn-inner,
+.ui-btn.ui-btn-back.ui-btn-hover-s .ui-btn-inner,
+.ui-btn.ui-btn-back.ui-btn-down-s .ui-btn-inner,
+.ui-btn.ui-btn-footer-down.ui-btn-up-s > .ui-btn-inner,
+.ui-btn.ui-btn-footer-down.ui-btn-hover-s > .ui-btn-inner,
+.ui-btn.ui-btn-footer-down.ui-btn-down-s > .ui-btn-inner {
+  background: transparent;
+  border: none;
+  box-shadow: none;
+}
+.ui-btn-icon-top .ui-btn-inner.ui-btn-hastxt,
+.ui-li .ui-btn-icon-top .ui-btn-inner.ui-btn-hastxt {
+  padding-top: 2.3636363636363638rem;
+}
+.ui-btn-icon-bottom .ui-btn-inner.ui-btn-hastxt,
+.ui-li .ui-btn-icon-bottom .ui-btn-inner.ui-btn-hastxt {
+  padding-bottom: 2.3636363636363638rem;
+}
+/* wongi_1017 : Icons */
+/* icons sizing */
+.ui-btn .ui-icon {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+}
+.ui-btn.ui-btn-edit .ui-icon {
+  width: 3.3636363636363638rem;
+  height: 3.3636363636363638rem;
+}
+/* Padding for Icon with text */
+.ui-btn .ui-btn-text.ui-btn-text-padding-left {
+  padding-left: 2rem;
+}
+.ui-btn .ui-btn-text.ui-btn-text-padding-right {
+  padding-right: 2.1818181818181817rem;
+}
+.ui-btn .ui-btn-text.ui-btn-text-padding-top {
+  padding-top: 1.4545454545454546rem;
+}
+.ui-icon {
+  background-repeat: no-repeat;
+  vertical-align: middle;
+  background-position: 0% 0%;
+  background-size: 100%;
+}
+.ui-btn-box.s .ui-icon {
+  position: absolute;
+}
+.ui-btn-box-s.ui-btn-icon-left .ui-icon,
+.ui-btn-box-s.ui-btn-icon-right .ui-icon {
+  margin-top: -0.7272727272727273rem;
+  top: 50%;
+}
+.ui-btn-box-s.ui-btn-icon-top .ui-icon,
+.ui-btn-box-s.ui-btn-icon-bottom .ui-icon {
+  margin-left: -0.7272727272727273rem;
+  left: 50%;
+}
+.tizen-icon-common {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+}
+.tizen-smallicon-common {
+  width: 0.9090909090909092rem ! important;
+  height: 0.9090909090909092rem ! important;
+  top: 50% ! important;
+  left: 50% ! important;
+  margin-top: -0.4545454545454546rem ! important;
+  margin-left: -0.4545454545454546rem ! important;
+}
+.ui-icon-bg {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/00_btn_circle_bg_normal.png);
+  z-index: 0;
+}
+.ui-icon-arrow-l {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_left.png);
+}
+.ui-icon-arrow-r {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_right.png);
+}
+.ui-icon-arrow-u {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_expand_opened.png);
+}
+.ui-icon-arrow-d {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_expand_closed.png);
+}
+.ui-icon-delete {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_expand_cancel.png);
+}
+.ui-icon-plus {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_plus.png);
+}
+.ui-icon-minus {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_expand_minus.png);
+}
+.ui-icon-check {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_check.png);
+}
+.ui-icon-gear {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_gear.png);
+}
+.ui-icon-refresh {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_refresh.png);
+}
+.ui-icon-forward {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_expand_send.png);
+}
+.ui-icon-back {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_back.png);
+}
+.ui-icon-grid {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_grid.png);
+}
+.ui-icon-star {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_star.png);
+}
+.ui-icon-alert {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_warning.png);
+}
+.ui-icon-info {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_info.png);
+}
+.ui-icon-home {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_home.png);
+}
+.ui-icon-search {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_search.png);
+}
+.ui-icon-call {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_call.png);
+}
+.ui-icon-rename {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_rename.png);
+}
+.ui-icon-scrolltop {
+  width: 0.9090909090909092rem ! important;
+  height: 0.9090909090909092rem ! important;
+  top: 50% ! important;
+  left: 50% ! important;
+  margin-top: -0.4545454545454546rem ! important;
+  margin-left: -0.4545454545454546rem ! important;
+  background-image: url(images/controls/button/00_icon_jump.png);
+}
+.ui-icon-scrollleft {
+  width: 0.9090909090909092rem ! important;
+  height: 0.9090909090909092rem ! important;
+  top: 50% ! important;
+  left: 50% ! important;
+  margin-top: -0.4545454545454546rem ! important;
+  margin-left: -0.4545454545454546rem ! important;
+  background-image: url(images/controls/button/00_icon_jump_left.png);
+}
+.ui-icon-expandable-divider-opened {
+  width: 1.9090909090909092rem;
+  height: 1.9090909090909092rem;
+  position: absolute;
+  right: 1.2727272727272727rem;
+  top: 0rem;
+  background-repeat: no-repeat;
+  background-size: 100% 100%;
+  background-image: url(images/00_indexlist_icon_opened.png);
+}
+.ui-icon-expandable-divider-closed {
+  width: 1.9090909090909092rem;
+  height: 1.9090909090909092rem;
+  position: absolute;
+  right: 1.2727272727272727rem;
+  top: 0rem;
+  background-repeat: no-repeat;
+  background-size: 100% 100%;
+  background-image: url(images/00_indexlist_icon_closed.png);
+}
+/* Pressed images */
+.ui-btn-down-s .ui-icon-bg,
+.ui-btn-down-s.ui-tizen-icon-bg {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/00_btn_circle_bg_press.png);
+  z-index: 0;
+}
+.ui-btn-down-s .ui-icon-arrow-l {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_left_press.png);
+}
+.ui-btn-down-s .ui-icon-arrow-r {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_right_press.png);
+}
+.ui-btn-down-s .ui-icon-arrow-u {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_expand_opened_press.png);
+}
+.ui-btn-down-s .ui-icon-arrow-d {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_expand_closed_press.png);
+}
+.ui-btn-down-s .ui-icon-delete {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_expand_cancel_press.png);
+}
+.ui-btn-down-s .ui-icon-plus {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_plus_press.png);
+}
+.ui-btn-down-s .ui-icon-minus {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_expand_minus_press.png);
+}
+.ui-btn-down-s .ui-icon-check {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_check_press.png);
+}
+.ui-btn-down-s .ui-icon-gear {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_gear_press.png);
+}
+.ui-btn-down-s .ui-icon-refresh {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_refresh_press.png);
+}
+.ui-btn-down-s .ui-icon-forward {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_expand_send_press.png);
+}
+.ui-btn-down-s .ui-icon-back {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_back_press.png);
+}
+.ui-btn-down-s .ui-icon-grid {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_grid_press.png);
+}
+.ui-btn-down-s .ui-icon-star {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_star_press.png);
+}
+.ui-btn-down-s .ui-icon-alert {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_warning_press.png);
+}
+.ui-btn-down-s .ui-icon-info {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_info_press.png);
+}
+.ui-btn-down-s .ui-icon-home {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_home_press.png);
+}
+.ui-btn-down-s .ui-icon-search {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_search_press.png);
+}
+.ui-btn-down-s .ui-icon-call {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_call_press.png);
+}
+.ui-btn-down-s .ui-icon-rename {
+  /* Overlap original property */
+
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  /* margin-top : 50 */
+
+  /* top : -32 * @unit_base; */
+
+  background-image: url(images/controls/button/00_button_rename_press.png);
+}
+.ui-btn-down-s .ui-icon-scrolltop {
+  width: 0.9090909090909092rem ! important;
+  height: 0.9090909090909092rem ! important;
+  top: 50% ! important;
+  left: 50% ! important;
+  margin-top: -0.4545454545454546rem ! important;
+  margin-left: -0.4545454545454546rem ! important;
+  background-image: url(images/controls/button/00_icon_jump_press.png);
+}
+.ui-btn-down-s .ui-icon-scrollleft {
+  width: 0.9090909090909092rem ! important;
+  height: 0.9090909090909092rem ! important;
+  top: 50% ! important;
+  left: 50% ! important;
+  margin-top: -0.4545454545454546rem ! important;
+  margin-left: -0.4545454545454546rem ! important;
+  background-image: url(images/controls/button/00_icon_jump_left_press.png);
+}
+.ui-btn-inner.ui-btn-icon-only {
+  padding: 0.7272727272727273rem 0.7272727272727273rem;
+}
+.ui-btn-icon-only .ui-btn-text {
+  display: none;
+  width: 0;
+  height: 0;
+  overflow: hidden;
+}
+.ui-btn.ui-btn-corner-all {
+  -o-border-radius: 1.2em ! important;
+  -ms-border-radius: 1.2em ! important;
+  -moz-border-radius: 1.2em ! important;
+  -webkit-border-radius: 1.2em ! important;
+  border-radius: 1.2em ! important;
+}
+/* No BG button : data-iconbg = "nobg" */
+.ui-btn.ui-btn-icon-nobg {
+  box-shadow: none;
+}
+.ui-btn-corner-circle {
+  -o-border-radius: 1em ! important;
+  -ms-border-radius: 1em ! important;
+  -moz-border-radius: 1em ! important;
+  -webkit-border-radius: 1em ! important;
+  border-radius: 1em ! important;
+}
+.ui-btn-round {
+  -o-border-radius: 1.2em ! important;
+  -ms-border-radius: 1.2em ! important;
+  -moz-border-radius: 1.2em ! important;
+  -webkit-border-radius: 1.2em ! important;
+  border-radius: 1.2em ! important;
+}
+.ui-btn-round .ui-btn-inner {
+  -o-border-radius: 1.2em ! important;
+  -ms-border-radius: 1.2em ! important;
+  -moz-border-radius: 1.2em ! important;
+  -webkit-border-radius: 1.2em ! important;
+  border-radius: 1.2em ! important;
+}
+.ui-btn.ui-btn-icon-nobg,
+.ui-btn .ui-btn-icon-nobg {
+  background: transparent;
+  background-color: transparent;
+  border: none;
+}
+/* Contact Edit Style */
+.ui-btn.ui-btn-edit .ui-btn-text {
+  color: #f9f9f9;
+}
+.ui-btn.ui-btn-edit .ui-btn-inner {
+  background: #c95858;
+  background: -webkit-gradient(linear, left top, left bottom, from(#c95858), to(#a12828));
+  background: -moz_linear-gradient(top, #c95858, #a12828);
+}
+.ui-btn-box-s {
+  color: #3a3a3a;
+  background: #202327;
+  background: -webkit-linear-gradient(top, #202327, #202327);
+  background: -moz-linear-gradient(top, #ebe8e3, #eae7e2);
+  background: -o-linear-gradient(top, #ebe8e3, #eae7e2);
+  background: -ms-linear-gradient(top, #ebe8e3, #eae7e2);
+  border: 1px solid;
+  border-color: #000000;
+  -o-box-shadow: 0 0 1px 1px #000000;
+  -ms-box-shadow: 0 0 1px 1px #000000;
+  -moz-box-shadow: 0 0 1px 1px #000000;
+  -webkit-box-shadow: 0 0 1px 1px #000000;
+  box-shadow: 0 0 1px 1px #000000;
+}
+/*
+ * jQuery Mobile Collapsible CSS
+ * for Tizen Web UI
+ */
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-collapsible-inset {
+  margin: .5em 0;
+}
+.ui-collapsible-inset .ui-collapsible-heading {
+  margin: 0;
+}
+.ui-collapsible-inset .ui-collapsible-heading .ui-btn {
+  border-right-width: 1px;
+  border-left-width: 1px;
+}
+.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn {
+  border-top-width: 0;
+}
+.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn {
+  border-top-width: 1px;
+}
+.ui-collapsible-heading,
+.ui-collapsible-content > li {
+  position: relative;
+}
+.ui-collapsible-heading {
+  font-size: 1rem;
+  display: block;
+  margin: 0 -15px;
+  padding: 0;
+  position: relative;
+}
+.ui-collapsible-heading .ui-btn {
+  text-align: left;
+  margin: 0;
+  border-left-width: 0;
+  border-right-width: 0;
+}
+.ui-collapsible-heading .ui-btn-text {
+  color: #f9f9f9;
+}
+.ui-collapsible-heading .ui-btn-inner,
+.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner {
+  padding-left: 40px;
+}
+.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner {
+  padding-left: 12px;
+  padding-right: 40px;
+}
+.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,
+.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner {
+  padding-right: 40px;
+  text-align: center;
+}
+.ui-collapsible-heading .ui-btn-inner > .ui-icon-arrow-d {
+  -webkit-transition: all 0.33s ease;
+  -moz-transition: all 0.33s ease;
+  -ms-transition: all 0.33s ease;
+  -o-transition: all 0.33s ease;
+  transition: all 0.33s ease;
+  -webkit-transform: rotate(180deg);
+  -moz-transform: rotate(180deg);
+  -ms-transform: rotate(180deg);
+  -o-transform: rotate(180deg);
+  transform: rotate(180deg);
+}
+.ui-collapsible-heading .ui-btn-inner > .ui-icon-arrow-u {
+  background-image: url(images/controls/button/00_button_expand_closed.png);
+  -webkit-transition: all 0.33s ease;
+  -moz-transition: all 0.33s ease;
+  -ms-transition: all 0.33s ease;
+  -o-transition: all 0.33s ease;
+  transition: all 0.33s ease;
+  -webkit-transform: rotate(0deg);
+  -moz-transform: rotate(0deg);
+  -ms-transform: rotate(0deg);
+  -o-transform: rotate(0deg);
+  transform: rotate(0deg);
+}
+.ui-collapsible-heading .ui-btn span.ui-btn {
+  position: absolute;
+  left: 6px;
+  top: 50%;
+  margin: -12px 0 0 0;
+  width: 20px;
+  height: 20px;
+  padding: 1px 0px 1px 2px;
+  text-indent: -9999px;
+}
+.ui-collapsible-heading .ui-btn span.ui-btn .ui-btn-inner {
+  padding: 10px 0;
+}
+.ui-collapsible-heading .ui-btn span.ui-btn .ui-icon {
+  left: 0;
+  margin-top: -10px;
+}
+.ui-collapsible-heading-status {
+  position: absolute;
+  top: -9999px;
+  left: 0px;
+}
+.ui-collapsible-content {
+  display: block;
+  margin: 0 -15px;
+  padding: 0px 15px;
+  border-left-width: 0;
+  border-right-width: 0;
+  border-top: none;
+  background-image: none;
+  /* Overrides ui-body-* */
+
+  visibility: visible;
+  overflow: auto;
+  -webkit-transition: all 0.5s ease;
+  -moz-transition: all 0.5s ease;
+  -ms-transition: all 0.5s ease;
+  -o-transition: all 0.5s ease;
+  transition: all 0.5s ease;
+}
+.ui-collapsible-inset .ui-collapsible-content {
+  margin: 0;
+  border-right-width: 1px;
+  border-left-width: 1px;
+}
+.ui-collapsible-content-collapsed {
+  overflow: hidden;
+  max-height: 0px !important;
+  visibility: hidden;
+}
+.ui-collapsible-set {
+  margin: .5em 0;
+}
+.ui-collapsible-set .ui-collapsible {
+  margin: -1px 0 0;
+}
+.ui-collapsible-set .ui-collapsible:first-child {
+  margin-top: 0;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-dialog {
+  min-height: 480px;
+}
+.ui-dialog .ui-header,
+.ui-dialog .ui-content,
+.ui-dialog .ui-footer {
+  margin: 15px;
+  position: relative;
+}
+.ui-dialog .ui-header,
+.ui-dialog .ui-footer {
+  z-index: 10;
+  width: auto;
+}
+.ui-dialog .ui-header .ui-btn-left {
+  width: 0px;
+  border-width: 0px;
+}
+.ui-dialog .center_info {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+}
+.ui-dialog .center_info .popup-text {
+  font-size: 42px;
+  background: #213c49;
+  width: 100%;
+}
+.ui-dialog .center_info .popup-text p {
+  text-align: center;
+  padding: 22px 16px;
+}
+/*
+* jQuery Mobile Framework
+* Copyright (c) jQuery Project
+* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses.
+*/
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-checkbox .ui-btn-inner,
+.ui-radio .ui-btn-inner {
+  white-space: normal;
+}
+.ui-checkbox,
+.ui-radio {
+  position: relative;
+  margin: 0;
+}
+.ui-checkbox .ui-btn-corner-all,
+.ui-radio .ui-btn-corner-all {
+  -o-border-radius: 0;
+  -ms-border-radius: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  border-radius: 0;
+}
+.ui-checkbox .ui-btn-inner,
+.ui-radio .ui-btn-inner {
+  border-top: 0;
+}
+.ui-checkbox .ui-btn-up-s,
+.ui-radio .ui-btn-up-s {
+  border: 0;
+  background: transparent;
+  font-weight: normal;
+}
+.ui-checkbox .ui-btn-hover-s,
+.ui-radio .ui-btn-hover-s {
+  border: 0;
+  background: transparent;
+  font-weight: normal;
+}
+.ui-checkbox .ui-btn-down-s,
+.ui-radio .ui-btn-down-s {
+  border: 0;
+  background: transparent;
+  font-weight: normal;
+}
+.ui-checkbox input,
+.ui-radio input {
+  z-index: 1;
+  margin: 0px;
+  left: 0.4545454545454546rem;
+  position: absolute;
+  outline: 0 !important;
+}
+.ui-checkbox > input,
+.ui-radio > input {
+  display: none;
+}
+.ui-checkbox .ui-btn,
+.ui-radio .ui-btn {
+  z-index: 2;
+  height: 100%;
+  margin: 0;
+  text-align: left;
+}
+.ui-checkbox .ui-btn.ui-btn-icon-left,
+.ui-radio .ui-btn.ui-btn-icon-left {
+  display: inline-block;
+}
+.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner,
+.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner {
+  min-width: 1.8181818181818183rem;
+  display: inline-block;
+  line-height: 1.4545454545454546rem;
+  padding: 0 0.7272727272727273rem 0 0.7272727272727273rem;
+  /* TODO : after button fixed, recheck! */
+
+}
+.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text,
+.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text {
+  display: inline-block;
+  vertical-align: middle;
+  min-height: 1.4545454545454546rem;
+}
+.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text.ui-btn-text-padding-left,
+.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text.ui-btn-text-padding-left {
+  padding-left: 1.0909090909090908rem;
+}
+.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-icon,
+.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-icon {
+  position: absolute;
+  top: 50%;
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  margin-top: -0.7272727272727273rem;
+}
+.ui-checkbox.favorite input {
+  position: absolute;
+  left: -10000px;
+  height: 100%;
+  outline: 0 !important;
+}
+.ui-checkbox.favorite .ui-btn.ui-btn-icon-left {
+  display: block;
+}
+.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner {
+  display: inline-block;
+  line-height: 1.4545454545454546rem;
+  padding: 0 0 0 0.7272727272727273rem;
+  /* TODO : after button fixed, recheck! */
+
+}
+.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text {
+  display: inline-block;
+  vertical-align: middle;
+}
+.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text.ui-btn-text-padding-left {
+  padding-left: 1.0909090909090908rem;
+}
+.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-icon {
+  position: absolute;
+  top: 50%;
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  margin-top: -0.7272727272727273rem;
+}
+/* put img inside of checkbox(normal, favorite style) */
+.ui-icon-checkbox-off,
+.ui-icon-checkbox-on,
+.favorite .ui-icon-checkbox-off,
+.favorite .ui-icon-checkbox-on,
+.ui-icon-checkbox-on-press,
+.ui-icon-checkbox-off-press,
+.ui-icon-radio-off,
+.ui-icon-radio-on,
+.ui-icon-radio-on-press,
+.ui-icon-radio-off-press {
+  background-size: 100% 100%;
+  background-color: transparent;
+}
+.ui-icon-checkbox-off {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  background-image: url(images/00_check_bg.png);
+}
+.ui-icon-checkbox-on {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  background-image: url(images/00_check_checking.png), url(images/00_check_bg.png);
+  background-repeat: no-repeat;
+}
+.ui-icon-checkbox-off-press {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  background-image: url(images/00_check_bg_press.png);
+}
+.ui-icon-checkbox-on-press {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  background-image: url(images/00_check_checking.png), url(images/00_check_bg_press.png);
+  background-repeat: no-repeat;
+}
+.favorite .ui-icon-checkbox-off,
+.favorite .ui-icon-checkbox-off-press {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  background-image: url(images/controls/00_icon_favorite_off.png);
+}
+.favorite .ui-icon-checkbox-on,
+.favorite .ui-icon-checkbox-on-press {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  background-image: url(images/controls/00_icon_favorite_on.png);
+}
+.ui-icon-radio-off {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  background-image: url(images/00_button_radio.png);
+}
+.ui-icon-radio-on {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  background-image: url(images/00_button_radio_select.png), url(images/00_button_radio.png);
+}
+.ui-icon-radio-on-press {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  background-image: url(images/00_button_radio.png);
+}
+.ui-icon-radio-off-press {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  background-image: url(images/00_button_radio.png);
+}
+/*
+* jQuery Mobile Framework
+* Copyright (c) jQuery Project
+* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses.
+*/
+.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 {
+       .ui-field-contain { border-width: 0; padding: 0; margin: 0.8em 0; }
+}
+/*
+* jQuery Mobile Framework
+* Copyright (c) jQuery Project
+* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses.
+*/
+.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 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: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); z-index: 2; }
+@-moz-document url-prefix() {.ui-select .ui-btn select { opacity: 0.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;  }
+
+/* labels */
+label.ui-select { font-size: 16px; line-height: 1.4;  font-weight: normal; margin: 0 0 .3em; display: block; }
+
+/*listbox*/
+.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; }
+.ui-select .ui-btn-text { text-overflow: ellipsis; overflow: hidden;}
+
+.ui-selectmenu { position: absolute; padding: 0; z-index: 100 !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: 0.6em 46px 0.8em; }
+
+@media all and (min-width: 450px){
+       label.ui-select { vertical-align: top;  display: inline-block;  width: 20%;  margin: 0 2% 0 0; }
+       .ui-select { width: 60%; display: inline-block; }
+}
+
+/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button.  this shim's content in there */
+.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; }
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+label.ui-input-text {
+  font-size: 1rem;
+  line-height: 1.2;
+  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: 0.7272727272727273rem;
+  display: block;
+}
+input.ui-input-text {
+  appearance: none;
+  -webkit-appearance: none;
+}
+textarea.ui-input-text {
+  height: 2.272727272727273rem;
+  width: 95%;
+  resize: none;
+  -webkit-transition: height 200ms linear;
+  -moz-transition: height 200ms linear;
+  -o-transition: height 200ms linear;
+  -ms-transition: height 200ms linear;
+  transition: height 200ms linear;
+}
+.ui-input-search {
+  position: relative;
+  padding-right: 1.6363636363636365rem;
+  padding-left: 1.6363636363636365rem;
+  border: 1px solid #999999;
+  -webkit-box-shadow: inset 0.09090909090909091rem 0.09090909090909091rem 0.09090909090909091rem #999999;
+  -moz-box-shadow: inset 0.09090909090909091rem 0.09090909090909091rem 0.09090909090909091rem #999999;
+  -o-box-shadow: inset 0.09090909090909091rem 0.09090909090909091rem 0.09090909090909091rem #999999;
+  -ms-box-shadow: inset 0.09090909090909091rem 0.09090909090909091rem 0.09090909090909091rem #999999;
+  box-shadow: inset 0.09090909090909091rem 0.09090909090909091rem 0.09090909090909091rem #999999;
+}
+.ui-input-search input.ui-input-text {
+  width: 100%;
+  border: none;
+  background: transparent none;
+  outline: 0 !important;
+}
+.ui-input-search .ui-btn-down-s,
+.ui-input-search .ui-btn-up-s,
+.ui-input-search .ui-btn-hover-s {
+  border: none;
+  background: transparent none;
+}
+.ui-input-search .ui-btn-icon-notext.ui-input-clear {
+  width: 1.6363636363636365rem;
+  height: 1.5rem;
+}
+.ui-input-search .ui-btn-icon-notext.ui-input-clear .ui-btn-inner {
+  padding: 0.2727272727272727rem;
+}
+.ui-input-search .ui-btn-inner .ui-icon-deleteSearch {
+  width: 1rem;
+  height: 1rem;
+  margin-top: 0px;
+  margin-left: 0px;
+}
+.ui-input-search .ui-input-clear {
+  position: absolute;
+  right: 0;
+  top: 0;
+  vertical-align: middle;
+}
+.ui-input-search .ui-input-clear-hidden {
+  display: none;
+}
+/* code for label+inputbox : remove this code if webApp dev. controls input area */
+@media all and (min-width: 721px) {
+  label.ui-input-text:not([data-type='search']) {
+    vertical-align: top;
+    display: inline-block;
+    margin: 0 2% 0 0;
+  }
+  input.ui-input-text:not([data-type='search']),
+  textarea.ui-input-text:not([data-type='search']) {
+    width: 60%;
+    display: inline-block;
+  }
+  .ui-input-search input.ui-input-text:not([data-type='search']) {
+    width: 85%;
+  }
+}
+/* search bar */
+.ui-body-s > div > .ui-field-contain > .input-search-bar,
+.ui-body-s > .ui-field-contain > .input-search-bar {
+  margin: -2.1818181818181817rem -0.6818181818181819rem -1.4545454545454546rem -0.6818181818181819rem;
+}
+/* Need to confirm exact concept */
+.input-search-bar {
+  position: relative;
+  background-color: #202327;
+  padding: 0.5909090909090909rem;
+  vertical-align: middle;
+}
+.input-search-bar .ui-corner-all {
+  -o-border-radius: 0.3em;
+  -ms-border-radius: 0.3em;
+  -moz-border-radius: 0.3em;
+  -webkit-border-radius: 0.3em;
+  border-radius: 0.3em;
+}
+.input-search-bar .ui-input-search {
+  font-size: 0.7272727272727273rem;
+  display: block;
+  position: relative;
+  background-color: #3c4147;
+}
+.input-search-bar .ui-input-search .ui-input-text {
+  height: 1.5rem;
+  padding: 0px;
+  margin-right: 1.7272727272727273rem;
+}
+.input-search-bar .ui-input-search .ui-image-search {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+  width: 1rem;
+  height: 1rem;
+  margin: 0.2727272727272727rem;
+}
+.input-search-bar .ui-input-search-default {
+  margin-right: 3.409090909090909rem;
+  -webkit-transition: all 400ms linear;
+  -moz-transition: all 400ms linear;
+  -o-transition: all 400ms linear;
+  -ms-transition: all 400ms linear;
+  transition: all 400ms linear;
+}
+.input-search-bar .ui-input-search-wide {
+  margin-right: 0rem;
+  -webkit-transition: all 400ms linear;
+  -moz-transition: all 400ms linear;
+  -o-transition: all 400ms linear;
+  -ms-transition: all 400ms linear;
+  transition: all 400ms linear;
+}
+.input-search-bar .ui-btn-icon-cancel.ui-input-cancel {
+  display: inline-block;
+  position: absolute;
+  top: 0.13636363636363635rem;
+  right: 0rem;
+  height: 1.5rem;
+  margin-right: 0.4545454545454546rem;
+  vertical-align: middle;
+  padding: 0px;
+  border-color: none;
+  width: 3.090909090909091rem;
+  -webkit-transition: all 400ms linear;
+  -moz-transition: all 400ms linear;
+  -o-transition: all 400ms linear;
+  -ms-transition: all 400ms linear;
+  transition: all 400ms linear;
+}
+.input-search-bar .ui-btn-icon-cancel.ui-input-cancel .ui-btn-inner {
+  padding-top: 0.2727272727272727rem;
+  padding-bottom: 0.2727272727272727rem;
+}
+.input-search-bar .ui-btn-icon-cancel.ui-input-cancel .ui-btn-inner .ui-btn-text {
+  font-size: 0.6818181818181819rem;
+}
+.input-search-bar .ui-btn-icon-cancel.ui-input-cancel.ui-btn-cancel-hide {
+  right: -3.409090909090909rem;
+  visibility: hidden;
+}
+.input-search-bar .ui-btn-icon-cancel.ui-input-cancel.ui-btn-cancel-show {
+  right: 0px;
+  visibility: visible;
+}
+.input-search-bar .ui-search-bar-icon {
+  margin-left: 1.9090909090909092rem;
+}
+.input-search-bar .ui-btn.ui-btn-search-front-icon {
+  position: absolute;
+  width: 1.590909090909091rem;
+  height: 1.590909090909091rem;
+  top: 0.09090909090909091rem;
+  border-radius: 3rem;
+}
+.input-search-bar .ui-btn.ui-btn-search-front-icon > .ui-btn-inner.ui-btn-icon-only {
+  border-radius: 3rem;
+}
+.ui-header .input-search-bar {
+  padding-top: 0.18181818181818182rem;
+  padding-bottom: 0.18181818181818182rem;
+}
+.ui-image-search {
+  background-image: url(images/controls/00_search_icon.png);
+  background-repeat: no-repeat;
+  background-size: 100% 100%;
+}
+.ui-icon-deleteSearch {
+  background-image: url(images/controls/00_field_btn_clear.png);
+  background-repeat: no-repeat;
+  background-size: 100% 100%;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-controlgroup,
+fieldset.ui-controlgroup {
+  padding: 0;
+  margin: .5em 0 1em;
+}
+.ui-bar .ui-controlgroup {
+  margin: 0 .3em;
+}
+.ui-controlgroup-label {
+  font-size: 1em;
+  line-height: 1.4;
+  font-weight: normal;
+  margin: 0 0 .3em;
+}
+.ui-controlgroup-controls {
+  display: block;
+}
+.ui-controlgroup li {
+  list-style: none;
+}
+.ui-controlgroup .ui-btn-inner {
+  white-space: nowrap;
+}
+.ui-controlgroup .ui-checkbox label label,
+.ui-controlgroup .ui-radio label {
+  font-size: 1em;
+}
+.ui-controlgroup .ui-radio {
+  width: 25%;
+  overflow: hidden;
+}
+.ui-controlgroup .ui-radio label {
+  text-align: center;
+  white-space: nowrap;
+}
+.ui-controlgroup .ui-radio-on .ui-btn-inner {
+  background: #202327;
+}
+.ui-controlgroup .ui-radio-on .ui-btn-inner .ui-btn-text {
+  color: #70a9ee;
+}
+.ui-controlgroup .ui-corner-left {
+  border-left-width: 0px;
+}
+.ui-controlgroup .ui-corner-right {
+  border-right-width: 0px;
+}
+.ui-controlgroup-vertical .ui-btn,
+.ui-controlgroup-vertical .ui-checkbox,
+.ui-controlgroup-vertical .ui-radio {
+  margin: 0;
+  border-bottom-width: 0;
+}
+.ui-controlgroup-vertical .ui-controlgroup-last {
+  border-bottom-width: 1px;
+}
+.ui-controlgroup-vertical .ui-radio {
+  width: 100%;
+}
+.ui-controlgroup-vertical .ui-radio label {
+  text-align: left;
+}
+.ui-controlgroup-vertical .ui-radio label .ui-btn-inner {
+  margin-left: 0.7272727272727273rem;
+  margin-right: 0.7272727272727273rem;
+}
+.ui-controlgroup-horizontal {
+  padding: 0;
+}
+.ui-controlgroup-horizontal .ui-btn {
+  display: inline-block;
+  margin-left: -0.18181818181818182rem;
+  margin-right: -0.13636363636363635rem;
+}
+.ui-controlgroup-horizontal .ui-checkbox,
+.ui-controlgroup-horizontal .ui-radio {
+  float: left;
+  margin: 0 -1px 0 0;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-last {
+  margin-right: 0;
+}
+.ui-controlgroup-horizontal [data-role="button"] {
+  border-top: 0px;
+  border-bottom: 0px;
+  border-radius: 0px;
+  box-shadow: none;
+  background: none;
+}
+.ui-controlgroup-horizontal [data-role="button"].ui-btn-down-s .ui-btn-inner,
+.ui-controlgroup-horizontal [data-role="button"] .ui-btn-active-s .ui-btn-inner {
+  background: #202327;
+}
+.ui-controlgroup-horizontal [data-role="button"].ui-btn-down-s .ui-btn-inner .ui-btn-text,
+.ui-controlgroup-horizontal [data-role="button"] .ui-btn-active-s .ui-btn-inner .ui-btn-text {
+  color: #70a9ee;
+}
+.ui-controlgroup-horizontal [data-role="button"].ui-btn-down-s .ui-btn-inner {
+  background: -webkit-linear-gradient(top, #000000 0%, #202327 100%);
+}
+.ui-controlgroup-horizontal [data-role="button"] > .ui-btn-inner {
+  border: 0px solid;
+  box-shadow: none;
+  padding-top: 0.2272727272727273rem;
+  padding-bottom: 0.2272727272727273rem;
+  padding-left: 0.4545454545454546rem;
+  padding-right: 0.4545454545454546rem;
+}
+.ui-controlgroup-horizontal label > span.ui-btn-inner {
+  padding-top: 0.13636363636363635rem;
+  padding-bottom: 0.13636363636363635rem;
+}
+/*
+* jQuery Mobile Framework
+* Copyright (c) jQuery Project
+* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses.
+*/
+/*** less definitions ***/
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+/************************/
+.ui-listview {
+  margin: 0;
+  counter-reset: listnumbering;
+  border-top-color: rgba(45, 45, 45, 0.5);
+  /* listview: fonts for li with a link */
+
+}
+.ui-listview li.ui-btn > .ui-btn-hastxt > .ui-btn-text.ui-btn-text-padding-right {
+  padding-right: 0rem;
+}
+.ui-listview .ui-li {
+  border-left-width: 0px;
+  border-right-width: 0px;
+  border-top-width: 0px;
+}
+.ui-listview .ui-li > .ui-btn-inner {
+  border-bottom-width: 1px;
+  border-bottom-style: solid;
+  border-bottom-color: rgba(45, 45, 45, 0.5);
+  margin-left: 0.5909090909090909rem;
+  margin-right: 0.5909090909090909rem;
+}
+.ui-listview .ui-li-static {
+  background-color: #202327;
+  border-bottom-width: 1px;
+  border-bottom-style: solid;
+  border-bottom-color: rgba(45, 45, 45, 0.5);
+  margin-left: 0.5909090909090909rem;
+  margin-right: 0.5909090909090909rem;
+}
+.ui-listview .ui-li:not(.ui-li-divider):not(.ui-li-static) {
+  min-height: 2.5rem;
+}
+.ui-listview .ui-li.ui-li-has-multiline:not(.ui-li-divider):not(.ui-li-static) {
+  min-height: 2.909090909090909rem;
+}
+.ui-listview li.ui-btn-up-s,
+.ui-listview li.ui-btn-hover-s {
+  background: none;
+  background-color: #202327;
+  color: #f9f9f9;
+}
+.ui-listview li.ui-btn-down-s {
+  background: none;
+  background-color: #5787c2;
+  color: #f9f9f9;
+}
+.ui-listview li.ui-btn-up-s > .ui-li > .ui-btn-text > a.ui-link-inherit,
+.ui-listview li.ui-btn-hover-s > .ui-li > .ui-btn-text > a.ui-link-inherit {
+  color: #d7d7d7;
+}
+.ui-listview li.ui-btn-down-s > .ui-li > .ui-btn-text > a.ui-link-inherit {
+  color: #ffffff;
+}
+.ui-content .ui-listview {
+  margin-left: -0.36363636363636365rem;
+  margin-right: -0.36363636363636365rem;
+  padding-bottom: 1px;
+}
+.ui-content .ui-listview .ui-listview {
+  margin: 0;
+}
+.ui-content .ui-listview-inset {
+  margin: 1em 0;
+}
+.ui-listview,
+.ui-li,
+.ui-collapsible-heading {
+  list-style: none;
+  padding: 0;
+  font-size: 1rem;
+}
+.ui-li,
+.ui-collapsible-heading,
+.ui-li.ui-field-contain {
+  display: block;
+  margin: 0;
+  position: relative;
+  overflow: visible;
+  text-align: left;
+}
+.ui-li .ui-btn {
+  top: 50%;
+  margin-top: -0.8em;
+}
+.ui-li h3,
+.ui-collapsible-heading h3,
+.ui-collapsible > .ui-collapsible-content h3,
+.ui-listview li h3 {
+  margin-top: 0px;
+  margin-bottom: 0px;
+  font-size: 1rem;
+  font-weight: normal;
+}
+.ui-li form,
+.ui-collapsible-heading form,
+.ui-collapsible > .ui-collapsible-content form,
+.ui-listview li form {
+  display: inline-block;
+}
+.ui-li .ui-btn-text,
+.ui-collapsible-heading .ui-btn-text,
+.ui-collapsible > .ui-collapsible-content .ui-btn-text,
+.ui-listview li .ui-btn-text {
+  position: relative;
+}
+.ui-li .ui-btn-text a.ui-link-inherit,
+.ui-collapsible-heading .ui-btn-text a.ui-link-inherit,
+.ui-collapsible > .ui-collapsible-content .ui-btn-text a.ui-link-inherit,
+.ui-listview li .ui-btn-text a.ui-link-inherit {
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden !important;
+}
+.ui-li:last-child,
+.ui-collapsible-heading:last-child,
+.ui-collapsible > .ui-collapsible-content:last-child,
+.ui-listview li:last-child,
+.ui-li.ui-field-contain:last-child,
+.ui-collapsible-heading.ui-field-contain:last-child,
+.ui-collapsible > .ui-collapsible-content.ui-field-contain:last-child,
+.ui-listview li.ui-field-contain:last-child {
+  border-bottom-width: 1px;
+}
+.ui-li > .ui-btn-inner,
+.ui-collapsible-heading > .ui-btn-inner,
+.ui-collapsible > .ui-collapsible-content > .ui-btn-inner,
+.ui-listview li > .ui-btn-inner,
+.ui-li.ui-collapsible-heading > .ui-collapsible-heading-toggle,
+.ui-collapsible-heading.ui-collapsible-heading > .ui-collapsible-heading-toggle,
+.ui-collapsible > .ui-collapsible-content.ui-collapsible-heading > .ui-collapsible-heading-toggle,
+.ui-listview li.ui-collapsible-heading > .ui-collapsible-heading-toggle {
+  display: block;
+  position: relative;
+  padding: 0;
+  border-width: 0;
+}
+.ui-li > .ui-btn-inner.ui-btn-hastxt,
+.ui-collapsible-heading > .ui-btn-inner.ui-btn-hastxt,
+.ui-collapsible > .ui-collapsible-content > .ui-btn-inner.ui-btn-hastxt,
+.ui-listview li > .ui-btn-inner.ui-btn-hastxt {
+  padding: 0px 0px;
+}
+.ui-li .ui-btn-inner a.ui-link-inherit,
+.ui-collapsible-heading .ui-btn-inner a.ui-link-inherit,
+.ui-collapsible > .ui-collapsible-content .ui-btn-inner a.ui-link-inherit,
+.ui-listview li .ui-btn-inner a.ui-link-inherit,
+.ui-li .ui-collapsible-heading-toggle > .ui-btn-inner,
+.ui-collapsible-heading .ui-collapsible-heading-toggle > .ui-btn-inner,
+.ui-collapsible > .ui-collapsible-content .ui-collapsible-heading-toggle > .ui-btn-inner,
+.ui-listview li .ui-collapsible-heading-toggle > .ui-btn-inner,
+.ui-li > li,
+.ui-collapsible-heading > li,
+.ui-collapsible > .ui-collapsible-content > li,
+.ui-listview li > li,
+.ui-li.ui-li-static,
+.ui-collapsible-heading.ui-li-static,
+.ui-collapsible > .ui-collapsible-content.ui-li-static,
+.ui-listview li.ui-li-static {
+  padding-top: 0.6818181818181819rem;
+  padding-bottom: 0.6818181818181819rem;
+  display: block;
+  white-space: normal;
+  border-left-width: 0px;
+  border-right-width: 0px;
+}
+.ui-li .ui-btn-inner a.ui-link-inherit,
+.ui-collapsible-heading .ui-btn-inner a.ui-link-inherit,
+.ui-collapsible > .ui-collapsible-content .ui-btn-inner a.ui-link-inherit,
+.ui-listview li .ui-btn-inner a.ui-link-inherit,
+.ui-li .ui-collapsible-heading-toggle,
+.ui-collapsible-heading .ui-collapsible-heading-toggle,
+.ui-collapsible > .ui-collapsible-content .ui-collapsible-heading-toggle,
+.ui-listview li .ui-collapsible-heading-toggle {
+  white-space: normal;
+  overflow: visible !important;
+}
+.ui-li .ui-toggle-switch:last-child,
+.ui-collapsible-heading .ui-toggle-switch:last-child,
+.ui-collapsible > .ui-collapsible-content .ui-toggle-switch:last-child,
+.ui-listview li .ui-toggle-switch:last-child {
+  top: 50%;
+  margin-top: -0.7727272727272727rem;
+  display: inline-block;
+  position: absolute;
+  right: 0px;
+}
+.ui-li [data-role="button"]:last-child,
+.ui-collapsible-heading [data-role="button"]:last-child,
+.ui-collapsible > .ui-collapsible-content [data-role="button"]:last-child,
+.ui-listview li [data-role="button"]:last-child {
+  position: absolute;
+  right: 0px;
+}
+.ui-li .ui-radio:first-child,
+.ui-collapsible-heading .ui-radio:first-child,
+.ui-collapsible > .ui-collapsible-content .ui-radio:first-child,
+.ui-listview li .ui-radio:first-child,
+.ui-li .ui-checkbox:first-child,
+.ui-collapsible-heading .ui-checkbox:first-child,
+.ui-collapsible > .ui-collapsible-content .ui-checkbox:first-child,
+.ui-listview li .ui-checkbox:first-child {
+  position: absolute;
+  top: 50%;
+  margin-top: -0.6818181818181819rem;
+  left: -0.18181818181818182rem;
+  width: 1.3636363636363638rem;
+  height: 1.3636363636363638rem;
+}
+.ui-li .ui-radio:first-child .ui-btn-inner,
+.ui-collapsible-heading .ui-radio:first-child .ui-btn-inner,
+.ui-collapsible > .ui-collapsible-content .ui-radio:first-child .ui-btn-inner,
+.ui-listview li .ui-radio:first-child .ui-btn-inner,
+.ui-li .ui-checkbox:first-child .ui-btn-inner,
+.ui-collapsible-heading .ui-checkbox:first-child .ui-btn-inner,
+.ui-collapsible > .ui-collapsible-content .ui-checkbox:first-child .ui-btn-inner,
+.ui-listview li .ui-checkbox:first-child .ui-btn-inner {
+  line-height: 0.9090909090909092rem;
+  color: transparent;
+}
+.ui-li .ui-radio:first-child .ui-btn-inner .ui-icon,
+.ui-collapsible-heading .ui-radio:first-child .ui-btn-inner .ui-icon,
+.ui-collapsible > .ui-collapsible-content .ui-radio:first-child .ui-btn-inner .ui-icon,
+.ui-listview li .ui-radio:first-child .ui-btn-inner .ui-icon,
+.ui-li .ui-checkbox:first-child .ui-btn-inner .ui-icon,
+.ui-collapsible-heading .ui-checkbox:first-child .ui-btn-inner .ui-icon,
+.ui-collapsible > .ui-collapsible-content .ui-checkbox:first-child .ui-btn-inner .ui-icon,
+.ui-listview li .ui-checkbox:first-child .ui-btn-inner .ui-icon {
+  left: 0.2272727272727273rem;
+}
+.ui-li .ui-radio:first-child label.ui-btn-icon_only,
+.ui-collapsible-heading .ui-radio:first-child label.ui-btn-icon_only,
+.ui-collapsible > .ui-collapsible-content .ui-radio:first-child label.ui-btn-icon_only,
+.ui-listview li .ui-radio:first-child label.ui-btn-icon_only,
+.ui-li .ui-checkbox:first-child label.ui-btn-icon_only,
+.ui-collapsible-heading .ui-checkbox:first-child label.ui-btn-icon_only,
+.ui-collapsible > .ui-collapsible-content .ui-checkbox:first-child label.ui-btn-icon_only,
+.ui-listview li .ui-checkbox:first-child label.ui-btn-icon_only {
+  top: 0px;
+  margin-top: 0px;
+}
+.ui-li img.ui-li-bigicon,
+.ui-collapsible-heading img.ui-li-bigicon,
+.ui-collapsible > .ui-collapsible-content img.ui-li-bigicon,
+.ui-listview li img.ui-li-bigicon {
+  position: absolute;
+  width: 1.590909090909091rem;
+  height: 1.590909090909091rem;
+  top: 50%;
+  margin-top: -0.8181818181818182rem;
+}
+.ui-li img.ui-li-bigicon:first-child,
+.ui-collapsible-heading img.ui-li-bigicon:first-child,
+.ui-collapsible > .ui-collapsible-content img.ui-li-bigicon:first-child,
+.ui-listview li img.ui-li-bigicon:first-child {
+  left: 0px;
+}
+.ui-li img.ui-li-bigicon:nth-child(2),
+.ui-collapsible-heading img.ui-li-bigicon:nth-child(2),
+.ui-collapsible > .ui-collapsible-content img.ui-li-bigicon:nth-child(2),
+.ui-listview li img.ui-li-bigicon:nth-child(2) {
+  left: 1.6363636363636365rem;
+}
+.ui-li img.ui-li-bigicon:last-child,
+.ui-collapsible-heading img.ui-li-bigicon:last-child,
+.ui-collapsible > .ui-collapsible-content img.ui-li-bigicon:last-child,
+.ui-listview li img.ui-li-bigicon:last-child {
+  right: 0.7272727272727273rem;
+}
+.ui-li .ui-li-color-bar + img.ui-li-bigicon:nth-child(2),
+.ui-collapsible-heading .ui-li-color-bar + img.ui-li-bigicon:nth-child(2),
+.ui-collapsible > .ui-collapsible-content .ui-li-color-bar + img.ui-li-bigicon:nth-child(2),
+.ui-listview li .ui-li-color-bar + img.ui-li-bigicon:nth-child(2) {
+  left: 0px;
+}
+.ui-li .ui-li-color-bar,
+.ui-collapsible-heading .ui-li-color-bar,
+.ui-collapsible > .ui-collapsible-content .ui-li-color-bar,
+.ui-listview li .ui-li-color-bar {
+  position: absolute;
+  width: 0.13636363636363635rem;
+  height: 100%;
+  top: 0rem;
+  left: -0.5909090909090909rem;
+  background-color: #000000;
+}
+li.ui-li-thumbnail-right img.ui-li-bigicon.ui-li-thumb {
+  left: auto;
+  right: 0px;
+  width: 2.3181818181818183rem;
+  height: 2.3181818181818183rem;
+  margin-top: -1.1363636363636365rem;
+}
+.ui-li.ui-li-has-multiline .ui-btn-inner a.ui-link-inherit,
+.ui-li.ui-li-has-multiline.ui-li-static {
+  padding-top: 0.3181818181818182rem;
+  padding-bottom: 1.2727272727272727rem;
+}
+.ui-li.ui-li-has-multiline a {
+  white-space: normal;
+  overflow: visible !important;
+  padding-right: 0.7272727272727273rem;
+  /* ellipsis for normal text */
+
+}
+/********************************************/
+/************  Add ellipsis *****************/
+/********************************************/
+.ui-li.ui-li-text-ellipsis .ui-btn-inner a.ui-link-inherit {
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden !important;
+}
+.ui-li.ui-li-text-ellipsis a {
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden !important;
+}
+.ui-li.ui-li-text-ellipsis.ui-li-static {
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden !important;
+}
+/********************************************/
+/*************** Edit Field *****************/
+/********************************************/
+.ui-li > input {
+  border-style: none;
+  border-width: 0px;
+  outline-color: #202327;
+  font-size: 1.0454545454545454rem;
+  line-height: 1;
+  padding-top: 0px;
+  padding-bottom: 0px;
+}
+/********************************************/
+/*************** Divider ********************/
+/********************************************/
+.ui-listview li.ui-li-divider {
+  background: #202327;
+  color: #70a9ee;
+  border-bottom-width: 0px;
+  border-top-width: 0px;
+  cursor: default;
+  counter-reset: listnumbering;
+  font-weight: bold;
+  height: 1.7272727272727273rem;
+  font-size: 0.7272727272727273rem;
+}
+.ui-listview li.ui-li-divider > .ui-btn-inner > .ui-btn-text {
+  font-size: 0.7272727272727273rem;
+}
+.ui-listview li.ui-li-divider.ui-btn {
+  top: 0px;
+  margin-top: 0rem;
+  border-radius: 0px;
+  font-size: 0.7272727272727273rem;
+}
+.ui-listview li.ui-li-divider.ui-btn .ui-btn-inner.ui-btn-hastxt {
+  height: 100%;
+  padding-left: 0px;
+}
+.ui-listview li.ui-li-divider.ui-btn .ui-btn-inner.ui-btn-hastxt .ui-btn-text {
+  position: absolute;
+  top: 0.2272727272727273rem;
+  height: 0.8181818181818182rem;
+  padding-right: 0.4545454545454546rem;
+}
+.ui-listview li.ui-li-divider:not(.ui-btn) {
+  margin-left: 0.5454545454545454rem;
+  margin-right: 0.5454545454545454rem;
+}
+.ui-listview li.ui-li-divider > .ui-btn-text {
+  position: absolute;
+  top: 0.2272727272727273rem;
+  height: 0.8181818181818182rem;
+  padding-right: 0.4545454545454546rem;
+}
+.ui-listview li.ui-li-divider[data-style="dialogue"] {
+  height: 0.9090909090909092rem;
+  padding: 0px;
+  padding-top: 0.9090909090909092rem;
+  padding-bottom: 0rem;
+  padding-left: 0.4545454545454546rem;
+  margin-left: 0.18181818181818182rem;
+  margin-right: 0.18181818181818182rem;
+  font-size: 0.7272727272727273rem;
+  font-weight: bold;
+  color: #3b73b6;
+  background: #202327;
+}
+.ui-listview li.ui-li-divider[data-style="check"] {
+  height: 1.7272727272727273rem;
+  padding-top: 0px;
+  padding-bottom: 0px;
+  padding-left: 0px;
+}
+.ui-listview li.ui-li-divider[data-style="check"] label {
+  top: 0px;
+  margin: 0;
+}
+.ui-listview li.ui-li-divider[data-style="check"] label .ui-btn-inner {
+  z-index: 5;
+  position: absolute;
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  background: #202327;
+  padding: 0;
+}
+.ui-listview li.ui-li-divider[data-style="check"] .ui-btn-text {
+  padding-left: 1.6818181818181819rem;
+}
+.ui-listview li.ui-li-divider .ui-divider-normal-line {
+  display: inline-block;
+  position: absolute;
+  top: 1.0454545454545454rem;
+  width: 100%;
+  height: 0.09090909090909091rem;
+  background: #70a9ee;
+}
+.ui-listview li.ui-li-divider.ui-btn-down-s {
+  background: #70a9ee;
+  color: #202327;
+}
+.ui-listview li.ui-li-divider.ui-btn-down-s .ui-divider-normal-line {
+  background: #202327;
+}
+.ui-listview li.ui-li-divider.ui-btn-down-s label > .ui-btn-inner {
+  background: #70a9ee;
+}
+.ui-listview li.ui-li-divider + li.ui-li-dialogue {
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.ui-divider-expand-div {
+  position: absolute;
+  width: 4.454545454545455rem;
+  height: 1.9090909090909092rem;
+  top: 0.4545454545454546rem;
+  right: 0px;
+  border-left-width: 1px;
+  border-left-style: solid;
+  border-left-color: rgba(0, 0, 0, 0.5);
+}
+.ui-li-has-thumb:not(.ui-li-thumbnail-right) .ui-btn-inner a.ui-link-inherit,
+.ui-li-has-thumb:not(.ui-li-thumbnail-right).ui-li-static {
+  padding-left: 2.0454545454545454rem;
+}
+.ui-li-has-thumb:not(.ui-li-thumbnail-right) .ui-li-text-sub {
+  padding-left: 2.0454545454545454rem;
+  padding-right: 0px;
+  /* ellipsis for sub text */
+
+}
+.ui-li-has-checkbox .ui-btn-inner a.ui-link-inherit,
+.ui-li-has-radio .ui-btn-inner a.ui-link-inherit,
+.ui-li-has-checkbox.ui-li-static,
+.ui-li-has-radio.ui-li-static {
+  padding-left: 1.6363636363636365rem;
+}
+.ui-li-has-checkbox .ui-li-text-sub,
+.ui-li-has-radio .ui-li-text-sub {
+  padding-left: 1.6363636363636365rem;
+}
+.ui-li-has-thumb.ui-li-has-checkbox .ui-btn-inner a.ui-link-inherit,
+.ui-li-has-thumb.ui-li-has-radio .ui-btn-inner a.ui-link-inherit,
+.ui-li-has-thumb.ui-li-has-checkbox.ui-li-static,
+.ui-li-has-thumb.ui-li-has-radio.ui-li-static {
+  padding-left: 3.5454545454545454rem;
+}
+.ui-li-has-thumb.ui-li-has-checkbox .ui-li-text-sub,
+.ui-li-has-thumb.ui-li-has-radio .ui-li-text-sub {
+  padding-left: 3.5454545454545454rem;
+}
+.ui-li.ui-li-has-right-circle-btn .ui-btn-inner a {
+  padding-right: 2.1818181818181817rem;
+}
+.ui-li.ui-li-has-right-btn:not(.ui-swipe) .ui-btn-inner a {
+  padding-right: 3.590909090909091rem;
+}
+.ui-li.ui-li-thumbnail-right .ui-btn-inner a {
+  padding-right: 2.3636363636363638rem;
+}
+.ui-li.ui-li-static.ui-li-has-right-circle-btn {
+  padding-right: 2.1818181818181817rem;
+}
+.ui-li.ui-li-static.ui-li-has-right-btn:not(.ui-swipe) {
+  padding-right: 3.590909090909091rem;
+}
+.ui-li.ui-li-static.ui-li-thumbnail-right {
+  padding-right: 2.3636363636363638rem;
+}
+.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,
+.ui-li-has-icon.ui-li-static {
+  min-height: 20px;
+  padding-left: 40px;
+}
+.ui-li-has-icon .ui-li-text-sub {
+  padding-left: 40px;
+}
+.ui-li-heading {
+  font-size: 16px;
+  font-weight: bold;
+  display: block;
+  margin: .6em 0;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden !important;
+}
+.ui-li-thumb,
+.ui-li-icon {
+  position: absolute;
+  left: 1px;
+  top: 0;
+  max-height: 3.272727272727273rem;
+  max-width: 3.272727272727273rem;
+}
+.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner {
+  border-top: 0px;
+}
+.ui-li-sub,
+.ui-li-sub-setting {
+  float: right;
+  text-align: right;
+  font-size: 0.7272727272727273rem;
+  margin: .3em 0;
+}
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+/* ~~~~~~~~~~~~~~              NEW   LIST   STYLE                   ~~~~~~~~~ */
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+.ui-li-text-sub {
+  float: right;
+  text-align: right;
+  font-size: 0.7272727272727273rem;
+  color: #808080;
+  position: absolute;
+  right: 0px;
+  top: 0.9090909090909092rem;
+  width: 95%;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden !important;
+}
+.ui-li-text-sub > img {
+  position: relative;
+  width: 0.7727272727272727rem;
+  height: 0.7727272727272727rem;
+  margin: 0 0.36363636363636365rem 0 0.36363636363636365rem;
+}
+.ui-li-text-sub2 {
+  float: right;
+  text-align: right;
+  font-size: 0.7272727272727273rem;
+  color: #808080;
+  position: absolute;
+  right: 0px;
+  top: 0.7272727272727273rem;
+  width: 60%;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden !important;
+}
+.ui-li-text-sub2 > img {
+  width: 0.7727272727272727rem;
+  height: 0.7727272727272727rem;
+  margin: 0 0 0 0.36363636363636365rem;
+}
+/*
+li:not(.ui-li-has-multiline) .ui-li-text-sub {
+       position : absolute;
+       right : 16 * @unit_base;
+       top: 22 * @unit_base;
+       margin-top: 0px;
+}*/
+.ui-li-has-multiline .ui-li-text-sub {
+  position: absolute;
+  text-align: left;
+  right: auto;
+  left: 0px;
+  top: 1.590909090909091rem;
+  margin-top: 0px;
+  width: 90%;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden !important;
+}
+.ui-li-has-multiline.ui-li-has-right-btn .ui-btn-inner a .ui-li-text-sub {
+  width: 74%;
+}
+.ui-li-has-multiline.ui-li-has-right-btn.ui-li-has-thumb .ui-btn-inner a .ui-li-text-sub {
+  width: 64%;
+}
+.ui-li-has-multiline.ui-li-static.ui-li-has-right-btn .ui-li-text-sub {
+  width: 74%;
+}
+.ui-li-has-multiline.ui-li-static.ui-li-has-right-btn.ui-li-has-thumb .ui-li-text-sub {
+  width: 64%;
+}
+.ui-li-icon-sub-right,
+.ui-li-icon-sub {
+  position: absolute;
+  left: auto;
+  width: 0.7727272727272727rem;
+  height: 0.7727272727272727rem;
+  margin: 0 0;
+}
+.ui-li-icon-sub-right {
+  right: 0.36363636363636365rem;
+}
+.ui-listview li.ui-li-dialogue {
+  margin-left: 0.18181818181818182rem;
+  margin-right: 0.18181818181818182rem;
+  padding-left: 0.4545454545454546rem;
+  padding-right: 0.4545454545454546rem;
+  border-style: solid;
+  border-color: #0c0f14;
+  border-width: 1px;
+  border-top-width: 0px;
+}
+.ui-listview li.ui-li-dialogue > .ui-btn-inner {
+  margin-left: 0px;
+  margin-right: 0px;
+  border-bottom-width: 0px;
+}
+.ui-listview li.ui-li-dialogue:first-child {
+  border-top-width: 1px;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.ui-listview li.ui-li-dialogue:last-child {
+  border-bottom-left-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.ui-listview li.ui-li-dialogue > img {
+  margin-left: 0.2727272727272727rem;
+}
+.ui-listview li.ui-li-dialogue [data-role="button"]:last-child {
+  margin-right: 0.4545454545454546rem;
+}
+.ui-listview li.ui-li-dialogue .ui-link-inherit > .ui-btn {
+  margin-right: 0px;
+}
+.ui-listview li.ui-li-dialogue.ui-li-static .ui-li-text-sub,
+.ui-listview li.ui-li-dialogue.ui-li-static .ui-toggle-switch {
+  right: 0.4545454545454546rem;
+}
+.ui-listview li.ui-li-dialogue.ui-li-static.ui-li-has-checkbox,
+.ui-listview li.ui-li-dialogue.ui-li-static.ui-li-has-radio {
+  padding-left: 1.6363636363636365rem;
+}
+.ui-listview li.ui-li-dialogue.ui-li-static .ui-checkbox,
+.ui-listview li.ui-li-dialogue.ui-li-static .ui-radio {
+  left: 0px;
+}
+.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static .ui-li-text-sub {
+  padding-left: 0.4545454545454546rem;
+}
+.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static .ui-li-text-sub2 {
+  padding-right: 0.4545454545454546rem;
+}
+.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static.ui-li-has-checkbox .ui-li-text-sub,
+.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static.ui-li-has-radio .ui-li-text-sub {
+  padding-left: 1.9090909090909092rem;
+}
+.ui-listview li.ui-li-divider + .ui-li-dialogue {
+  border-top-width: 1px;
+}
+.ui-listview > li.ui-li-dialogue.ui-body-s:not(.ui-li-expanded),
+.ui-listview > li.ui-li-dialogue.ui-btn-hover-up-s:not(.ui-btn-down-s):not(.ui-li-expanded),
+.ui-listview > li.ui-li-dialogue.ui-btn-up-s:not(.ui-li-expanded) {
+  background: #2a2d30;
+}
+.ui-listview > li.ui-li-dialogue.ui-li-expanded {
+  padding-left: 1.1818181818181819rem;
+  background: #dcdad3;
+}
+.ui-listview > li.ui-li-dialogue.ui-li-divider {
+  height: 1.4545454545454546rem;
+  padding: 0px;
+}
+.ui-listview > li.ui-li-group-title {
+  padding-top: 1.4545454545454546rem;
+}
+.ui-listview > li.ui-li-group-title span {
+  padding-left: 0.7272727272727273rem;
+}
+.ui-listview > li.ui-li-dialogue-divider {
+  padding-top: 0.9090909090909092rem;
+  padding-bottom: 0rem;
+  padding-left: 0.4545454545454546rem;
+  margin-left: 0.18181818181818182rem;
+  margin-right: 0.18181818181818182rem;
+  background: #2a2d30;
+  font-size: 0.7272727272727273rem;
+  font-weight: bold;
+  color: #3b73b6;
+}
+.ui-listview li.ui-li-dialogue-edit {
+  padding-left: 5.2727272727272725rem;
+  padding-top: 0.5454545454545454rem;
+  padding-bottom: 0.5454545454545454rem;
+}
+.ui-listview li.ui-li-dialogue-edit .ui-edit-title {
+  position: absolute;
+  left: 0.4545454545454546rem;
+  width: 4.136363636363637rem;
+  padding-right: 0.36363636363636365rem;
+  display: inline-block;
+  top: 50%;
+  margin-top: -0.5909090909090909rem;
+  border-right-color: #b9b8b2;
+  border-right-width: 1px;
+  border-right-style: solid;
+}
+.ui-listview li.ui-li-dialogue-edit input {
+  font-size: 1rem;
+  background: transparent;
+  outline-color: transparent;
+  width: 100%;
+  padding-left: 0px;
+  padding-right: 0px;
+}
+.ui-listview > .ui-li.ui-li-dialogue-edit.ui-li-has-right-btn {
+  padding-right: 5rem;
+}
+.ui-listview .ui-li-static.ui-li-bubble-receive,
+.ui-listview .ui-li-static.ui-li-bubble-left {
+  color: #ffffff;
+}
+.ui-listview .ui-li-static.ui-li-bubble-receive > .ui-li-bubble-time,
+.ui-listview .ui-li-static.ui-li-bubble-left > .ui-li-bubble-time {
+  color: #d30000;
+}
+.ui-listview .ui-li-static.ui-li-bubble-sent,
+.ui-listview .ui-li-static.ui-li-bubble-right {
+  color: #000000;
+}
+.ui-listview .ui-li-static.ui-li-bubble-sent > .ui-li-bubble-time,
+.ui-listview .ui-li-static.ui-li-bubble-right > .ui-li-bubble-time {
+  color: #39a6d7;
+}
+.ui-listview .ui-li-static.ui-li-bubble-sos {
+  color: #e94949;
+}
+.ui-listview .ui-li-static.ui-li-bubble-sos > .ui-li-bubble-time {
+  color: #d30000;
+}
+.ui-listview .ui-li-static.ui-li-bubble-date {
+  background-color: rgba(225, 225, 225, 0);
+  color: #686868;
+  font-style: italic;
+}
+.ui-listview span.ui-li-bubble-time {
+  font-weight: bold;
+}
+.ui-listview .ui-li-bubble-receive,
+.ui-listview .ui-li-bubble-left,
+.ui-listview .ui-li-bubble-sent,
+.ui-listview .ui-li-bubble-right,
+.ui-listview .ui-li-bubble-sos {
+  display: inline-block;
+  background-clip: padding-box;
+  max-width: 100%;
+  word-wrap: break-word;
+  font-size: 0.8636363636363636rem;
+}
+.ui-listview .ui-li-bubble-receive p,
+.ui-listview .ui-li-bubble-left p,
+.ui-listview .ui-li-bubble-sent p,
+.ui-listview .ui-li-bubble-right p,
+.ui-listview .ui-li-bubble-sos p,
+.ui-listview .ui-li-bubble-receive span,
+.ui-listview .ui-li-bubble-left span,
+.ui-listview .ui-li-bubble-sent span,
+.ui-listview .ui-li-bubble-right span,
+.ui-listview .ui-li-bubble-sos span {
+  font-size: 0.8636363636363636rem;
+}
+.ui-listview .ui-li-bubble-receive img,
+.ui-listview .ui-li-bubble-left img,
+.ui-listview .ui-li-bubble-sent img,
+.ui-listview .ui-li-bubble-right img,
+.ui-listview .ui-li-bubble-sos img {
+  position: relative;
+  min-width: 7.272727272727273rem;
+  min-height: 7.272727272727273rem;
+}
+.ui-listview .ui-li-bubble-receive,
+.ui-listview .ui-li-bubble-left {
+  margin-left: 0px;
+  margin-right: 1.6rem;
+  border-image-source: url(images/00_messagebubble_bg_receive.9.png);
+  border-image-slice: 57 14 21 48 fill;
+  border-image-width: auto;
+  padding: 9px 14px 21px 48px;
+}
+.ui-listview .ui-li-bubble-receive > .ui-li-bubble-time,
+.ui-listview .ui-li-bubble-left > .ui-li-bubble-time {
+  position: absolute;
+  display: inline-block;
+  bottom: 0.36363636363636365rem;
+  left: 100%;
+  font-size: 0.5rem;
+}
+.ui-listview .ui-li-bubble-sent,
+.ui-listview .ui-li-bubble-right {
+  margin-left: 1.6rem;
+  margin-right: 0px;
+  border-image-source: url(images/00_messagebubble_bg_sent.9.png);
+  border-image-slice: 55 47 20 13 fill;
+  border-image-width: auto;
+  padding: 9px 47px 20px 13px;
+}
+.ui-listview .ui-li-bubble-sent > .ui-li-bubble-time,
+.ui-listview .ui-li-bubble-right > .ui-li-bubble-time {
+  position: absolute;
+  display: inline-block;
+  bottom: 0.36363636363636365rem;
+  right: 100%;
+  font-size: 0.5rem;
+}
+.ui-listview .ui-li-bubble-date {
+  float: left;
+  width: 100%;
+  height: 1.0909090909090908rem;
+  background-image: url(images/00_messagebubble_date_bg.png);
+  background-repeat: repeat-x;
+  background-position: center center;
+  font-size: 0.7272727272727273rem;
+  margin: 0.9090909090909092rem 0.2727272727272727rem;
+  border: 0px none red;
+  padding: 0 0;
+  padding-top: 0.5em;
+  text-align: center;
+}
+.ui-listview .ui-li-bubble-date * {
+  display: inline-block;
+  background-color: #202327;
+  padding-left: 0.5em;
+  padding-right: 0.5em;
+}
+@-webkit-keyframes addliitem {
+  from {
+    -webkit-transform: scale(0.5);
+    -moz-transform: scale(0.5);
+    opacity: 0;
+  }
+  to {
+    -webkit-transform: scale(1);
+    -moz-transform: scale(1);
+    opacity: 1;
+  }
+}
+.addli {
+  -webkit-animation-name: addliitem;
+  -moz-animation-name: addliitem;
+  -webkit-animation-duration: 0.5s;
+  -moz-animation-duration: 0.5s;
+  -webkit-transition-timing-function: linear;
+  -moz-transition-timing-function: linear;
+}
+@-webkit-keyframes removeliitem {
+  from {
+    -webkit-transform: scale(1);
+    -moz-transform: scale(1);
+    opacity: 1;
+  }
+  to {
+    -webkit-transform: scale(0.5);
+    -moz-transform: scale(0.5);
+    opacity: 0;
+  }
+}
+.removeli {
+  -webkit-animation-name: removeliitem;
+  -moz-animation-name: removeliitem;
+  -webkit-animation-duration: 0.5s;
+  -moz-animation-duration: 0.5s;
+  -webkit-transition-timing-function: linear;
+  -moz-transition-timing-function: linear;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-controlgroup .ui-radio > .ui-btn {
+  background: #202327;
+}
+.ui-controlgroup .ui-btn-text {
+  font-size: 0.7727272727272727rem;
+  font-weight: bold;
+  color: #c7c7c7;
+}
+.ui-controlgroup .ui-btn-inner .ui-corner-left .ui-controlgroup-first {
+  -o-border-radius: .3em;
+  -ms-border-radius: .3em;
+  -moz-border-radius: .3em ;
+  -webkit-border-radius: .3em ;
+  border-radius: .3em ;
+}
+.ui-controlgroup .ui-btn-inner .ui-corner-right .ui-controlgroup-last {
+  -o-border-radius: .3em;
+  -ms-border-radius: .3em;
+  -moz-border-radius: .3em ;
+  -webkit-border-radius: .3em ;
+  border-radius: .3em ;
+}
+.ui-controlgroup .ui-radio-off.ui-btn-hover-s.ui-btn-down-s .ui-btn-inner,
+.ui-controlgroup .ui-radio-on .ui-btn-inner {
+  color: #3b7796;
+}
+.ui-controlgroup .ui-radio-off .ui-btn-inner {
+  color: #c7c7c7;
+}
+.ui-controlgroup.ui-controlgroup-horizontal .ui-radio .ui-btn-down-s .ui-btn-inner {
+  background: -webkit-linear-gradient(top, #000000 0%, #202327 100%);
+}
+/*
+* jQuery Mobile Framework
+* Copyright (c) jQuery Project
+* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses.
+*/
+/*** less definitions ***/
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+ul.ui-virtual-list-container > li.position_absolute {
+  position: absolute;
+}
+ul.ui-virtual-list-container > ul.position_absolute {
+  position: absolute;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-scrollview-clip {
+  position: relative;
+}
+.ui-scrollview-view {
+  overflow-x: hidden;
+  overflow-y: visible;
+}
+.ui-scrolllistview .ui-li-divider {
+  z-index: 10;
+}
+.ui-scrollbar {
+  position: absolute;
+  overflow: hidden;
+  opacity: 0;
+}
+.ui-scrollbar-visible {
+  opacity: 1;
+}
+.ui-scrollbar-y {
+  top: 0.09090909090909091rem;
+  right: 0.09090909090909091rem;
+  bottom: 0.09090909090909091rem;
+  width: 0.36363636363636365rem;
+}
+.ui-scrollbar-x {
+  right: 0.09090909090909091rem;
+  bottom: 0.09090909090909091rem;
+  left: 0.09090909090909091rem;
+  height: 0.36363636363636365rem;
+}
+.ui-scrollbar-track {
+  position: relative;
+  width: 100%;
+  height: 100%;
+}
+.ui-scrollbar-thumb {
+  position: absolute;
+  top: 0;
+  left: 0;
+  background-color: #393b41;
+}
+.ui-scrollbar-y .ui-scrollbar-thumb {
+  width: 0.2272727272727273rem;
+  height: 100%;
+  -o-border-radius: 0.09090909090909091rem;
+  -ms-border-radius: 0.09090909090909091rem;
+  -moz-border-radius: 0.09090909090909091rem;
+  -webkit-border-radius: 0.09090909090909091rem;
+  border-radius: 0.09090909090909091rem;
+  -o-box-shadow: 0.045454545454545456rem 0.045454545454545456rem 0.09090909090909091rem #94928c;
+  -ms-box-shadow: 0.045454545454545456rem 0.045454545454545456rem 0.09090909090909091rem #94928c;
+  -moz-box-shadow: 0.045454545454545456rem 0.045454545454545456rem 0.09090909090909091rem #94928c;
+  -webkit-box-shadow: 0.045454545454545456rem 0.045454545454545456rem 0.09090909090909091rem #94928c;
+  box-shadow: 0.045454545454545456rem 0.045454545454545456rem 0.09090909090909091rem #94928c;
+}
+.ui-scrollbar-x .ui-scrollbar-thumb {
+  width: 100%;
+  height: 0.2272727272727273rem;
+  -o-border-radius: 0.09090909090909091rem;
+  -ms-border-radius: 0.09090909090909091rem;
+  -moz-border-radius: 0.09090909090909091rem;
+  -webkit-border-radius: 0.09090909090909091rem;
+  border-radius: 0.09090909090909091rem;
+}
+.ui-scroll-jump-top-bg {
+  position: absolute;
+  top: 0.4090909090909091rem;
+  right: 0.5909090909090909rem;
+  width: 1.6818181818181819rem;
+  height: 1.6818181818181819rem;
+}
+.ui-scroll-jump-left-bg {
+  position: absolute;
+  bottom: 0.4090909090909091rem;
+  left: 0.5909090909090909rem;
+  width: 1.6818181818181819rem;
+  height: 1.6818181818181819rem;
+}
+.ui-overflow-indicator-top {
+  position: absolute;
+  display: block;
+  top: 0;
+  width: 100%;
+  height: 0.4545454545454546rem;
+  opacity: 0;
+  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #bababa), color-stop(1, #202327));
+}
+.ui-overflow-indicator-bottom {
+  position: absolute;
+  display: block;
+  bottom: 0;
+  width: 100%;
+  height: 0.4545454545454546rem;
+  opacity: 0;
+  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #202327), color-stop(1, #bababa));
+}
+/*
+ * the values below are for the group index
+ */
+/*
+ * padding here set to zero - otherwise the list scrolls underneith the top heading and can be seen above it
+ */
+.ui-content.ui-scrollview-clip {
+  padding: 0;
+}
+.ui-content.ui-scrollview-clip > div.ui-scrollview-view {
+  margin: 0;
+  padding-left: 0.36363636363636365rem;
+  padding-right: 0.36363636363636365rem;
+}
+/*
+ * this seems to effect how far the top divider is place wrt to the scrollview
+ * without this, it is placed too high, so it is clipped in half
+ */
+.ui-content.ui-scrollview-clip > .ui-listview.ui-scrollview-view {
+  margin: 0;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+@-webkit-keyframes ui-datetime-in {
+  from {
+    -webkit-transform: translateY(0.6363636363636364rem) scale(0.9);
+  }
+  to {
+    -webkit-transform: translateY(0) scale(1);
+  }
+}
+@-webkit-keyframes ui-datetime-out {
+  from {
+    opacity: 0.8;
+    -webkit-transform: translateY(0) scale(0.6);
+  }
+  to {
+    opacity: 0;
+    -webkit-transform: translateY(-0.6363636363636364rem) scale(0.6);
+  }
+}
+.ui-datefield .ui-datefield-seperator {
+  display: inline-block;
+  min-width: 0.4545454545454546rem;
+  text-align: center;
+}
+.ui-datefield .date,
+.ui-datefield .time,
+.ui-datefield .ui-datefield-tab {
+  display: inline-block;
+}
+.ui-datefield .ui-datefield-tab {
+  min-width: 0.9090909090909092rem;
+}
+.ui-datefield .ui-btn-box-s .ui-btn-inner.ui-btn-hastxt {
+  padding: 0.1em 0.5em;
+}
+.ui-datefield .ui-datefield-selected {
+  display: inline-block;
+  color: #3b73b6;
+}
+.ui-datefield .ui-datefield-selected.in {
+  -ms-animation: ui-datetime-in 0.3s 1 ease;
+  -o-animation: ui-datetime-in 0.3s 1 ease;
+  -moz-animation: ui-datetime-in 0.3s 1 ease;
+  -webkit-animation: ui-datetime-in 0.3s 1 ease;
+}
+.ui-datefield .ui-datefield-selected.out {
+  -ms-animation: ui-datetime-out 0.3s 1 ease;
+  -o-animation: ui-datetime-out 0.3s 1 ease;
+  -moz-animation: ui-datetime-out 0.3s 1 ease;
+  -webkit-animation: ui-datetime-out 0.3s 1 ease;
+}
+.ui-datetime {
+  margin: 0;
+  height: 1.6363636363636365rem;
+}
+.ui-datetime-text-main {
+  position: relative;
+  font-size: 1rem;
+  top: 0 ;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  white-space: nowrap;
+  padding-top: 0.3em;
+}
+.ui-datetime-text-main .ui-datefield-period.ui-btn {
+  margin-top: -0.3em;
+  height: 1.2727272727272727rem;
+  right: auto;
+  position: relative ! important;
+}
+.ui-datetime-text-sub {
+  top: 0.6818181818181819rem ! important;
+  color: #70a9ee ! important;
+  background: transparent ! important;
+  font-size: 0.7272727272727273rem ! important;
+}
+.ui-datetimepicker-selector ul {
+  padding: 0;
+  display: inline;
+  list-style: none;
+  vertical-align: middle;
+  margin: 0;
+}
+.ui-datetimepicker-selector ul li {
+  font-size: 1rem;
+  float: left;
+  padding: 0.6818181818181819rem 0.18181818181818182rem 0 0.18181818181818182rem;
+  max-width: 5.454545454545455rem;
+  min-width: 2.7272727272727275rem;
+}
+.ui-datetimepicker-selector ul li a.ui-link {
+  text-decoration: none;
+  color: rgba(255, 255, 255, 0.7);
+}
+.ui-datetimepicker-selector ul li a.ui-link:hover {
+  color: rgba(255, 255, 255, 0.7);
+}
+.ui-datetimepicker-selector ul li.current a.ui-link {
+  color: #ffffff;
+}
+.ui-datetimepicker {
+  left: 0 !important;
+  padding: 0;
+}
+.ui-datetimepicker .ui-popupwindow-padding {
+  background: #3b73b6 !important;
+  border-radius: 0 !important;
+  -ms-border-radius: 0 !important;
+  -o-border-radius: 0 !important;
+  -moz-border-radius: 0 !important;
+  -webkit-border-radius: 0 !important;
+  box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.6) !important;
+  border-width: 0 !important;
+  text-align: center !important;
+}
+.ui-datetimepicker .ui-popupwindow-padding div {
+  height: 2.409090909090909rem;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+/* Resource color mapping table
+
+@color_popup_title_bg: popup_title_bg.png
+@color_popup_text_bg:  popup_bg.png
+@color_popup_button_bg:        popup_button_bg.png
+@color_popup_font:             Popup title & default
+@color_popup_text_font:        Popup text
+
+*/
+.ui-popupwindow-screen {
+  background: #000000;
+  opacity: 0;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 1200;
+}
+.ui-popupwindow {
+  position: absolute;
+  z-index: 1201 !important;
+  color: #f8f6ef;
+  background: #2a2d30;
+}
+.ui-popupwindow .popup-title {
+  width: 100%;
+  height: 100%;
+  font-size: 1.0909090909090908rem;
+  background: #5093b6;
+}
+.ui-popupwindow .popup-title p {
+  margin: 0rem 0rem;
+  padding: 0.5909090909090909rem 0rem;
+}
+.ui-popupwindow .popup-text {
+  width: 100%;
+  color: #f9f9f9;
+  font-size: 1.0909090909090908rem;
+  background: #2a2d30;
+}
+.ui-popupwindow .popup-text p {
+  text-align: center;
+  padding: 1rem 0.7272727272727273rem;
+}
+.ui-popupwindow .center_info {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+}
+.ui-popupwindow .center_title {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .center_basic_1btn {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .center_basic_1btn .popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_basic_1btn .popup-button-bg .ui-btn {
+  width: 18.272727272727273rem;
+  height: 3.3636363636363638rem;
+  margin: auto;
+}
+.ui-popupwindow .center_basic_2btn {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .center_basic_2btn .popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_basic_2btn .popup-button-bg .ui-btn {
+  width: 12.454545454545455rem;
+  height: 3.3636363636363638rem;
+  margin-top: 0rem;
+  margin-bottom: 0rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  display: inline-block;
+}
+.ui-popupwindow .center_basic_3btn {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .center_basic_3btn .popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_basic_3btn .popup-button-bg .ui-btn {
+  width: 8.454545454545455rem;
+  height: 3.3636363636363638rem;
+  margin-top: 0rem;
+  margin-bottom: 0rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  display: inline-block;
+}
+.ui-popupwindow .center_title_1btn {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .center_title_1btn .popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_title_1btn .popup-button-bg .ui-btn {
+  width: 18.272727272727273rem;
+  height: 3.3636363636363638rem;
+  margin: auto;
+}
+.ui-popupwindow .center_title_2btn {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .center_title_2btn .popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_title_2btn .popup-button-bg .ui-btn {
+  width: 12.454545454545455rem;
+  height: 3.3636363636363638rem;
+  margin-top: 0rem;
+  margin-bottom: 0rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  display: inline-block;
+}
+.ui-popupwindow .center_title_3btn {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .center_title_3btn .popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_title_3btn .popup-button-bg .ui-btn {
+  width: 8.454545454545455rem;
+  height: 3.3636363636363638rem;
+  margin-top: 0rem;
+  margin-bottom: 0rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  display: inline-block;
+}
+.ui-popupwindow .center_button_vertical {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .center_button_vertical .popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 1px;
+  padding-bottom: 0.7272727272727273rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_button_vertical .popup-button-bg .ui-btn {
+  width: 16.181818181818183rem;
+  height: 3.3636363636363638rem;
+  margin-top: 0.7272727272727273rem;
+  margin-bottom: 0rem;
+  margin-left: auto;
+  margin-right: auto;
+}
+.ui-popupwindow .center_checkbox {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .center_checkbox .popup-check-bg {
+  font-size: 1.0909090909090908rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0rem;
+  padding-bottom: 1rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_checkbox .popup-check-bg .ui-checkbox .ui-btn {
+  text-align: center;
+  background: #2a2d30;
+  border: 0rem;
+}
+.ui-popupwindow .center_checkbox .popup-check-bg .ui-checkbox .ui-btn .ui-btn-inner {
+  border: 0rem;
+}
+.ui-popupwindow .center_checkbox .popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_checkbox .popup-button-bg .ui-btn {
+  width: 12.454545454545455rem;
+  height: 3.3636363636363638rem;
+  margin-top: 0rem;
+  margin-bottom: 0rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  display: inline-block;
+}
+.ui-popupwindow .center_liststyle_1btn {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .center_liststyle_1btn .popup-scroller-bg {
+  width: 100%;
+  overflow: hidden;
+  background: #f8f6ef;
+  height: 23.272727272727273rem;
+}
+.ui-popupwindow .center_liststyle_1btn .popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_liststyle_1btn .popup-button-bg .ui-btn {
+  width: 18.272727272727273rem;
+  height: 3.3636363636363638rem;
+  margin: auto;
+}
+.ui-popupwindow .center_liststyle_2btn {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .center_liststyle_2btn .popup-scroller-bg {
+  width: 100%;
+  overflow: hidden;
+  background: #f8f6ef;
+  height: 23.272727272727273rem;
+}
+.ui-popupwindow .center_liststyle_2btn .popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_liststyle_2btn .popup-button-bg .ui-btn {
+  width: 12.454545454545455rem;
+  height: 3.3636363636363638rem;
+  margin-top: 0rem;
+  margin-bottom: 0rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  display: inline-block;
+}
+.ui-popupwindow .center_liststyle_3btn {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .center_liststyle_3btn .popup-scroller-bg {
+  width: 100%;
+  overflow: hidden;
+  background: #f8f6ef;
+  height: 23.272727272727273rem;
+}
+.ui-popupwindow .center_liststyle_3btn .popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_liststyle_3btn .popup-button-bg .ui-btn {
+  width: 8.454545454545455rem;
+  height: 3.3636363636363638rem;
+  margin-top: 0rem;
+  margin-bottom: 0rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  display: inline-block;
+}
+.ui-popupwindow .center_progressbar {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .center_progressbar .popup-text {
+  font-size: 1.1818181818181819rem;
+  font-color: #999999;
+  background: #2a2d30;
+  width: 100%;
+  height: 3.181818181818182rem;
+}
+.ui-popupwindow .center_progressbar .popup-text p {
+  height: 100%;
+  text-align: center;
+  padding: 1rem 0.7272727272727273rem 0rem 0.7272727272727273rem;
+}
+.ui-popupwindow .center_progressbar .popup-text-bottom-bg {
+  font-size: 1.1818181818181819rem;
+  font-color: #999999;
+  background: #2a2d30;
+  width: 100%;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_progressbar .popup-text-bottom-bg .text-left {
+  width: 40%;
+  height: 2.1818181818181817rem;
+  padding: 0rem 0.7272727272727273rem 0rem 0.7272727272727273rem;
+  text-align: left;
+  display: inline-block;
+}
+.ui-popupwindow .center_progressbar .popup-text-bottom-bg .text-right {
+  width: 40%;
+  height: 2.1818181818181817rem;
+  padding: 0rem 0.7272727272727273rem 0rem 0.7272727272727273rem;
+  text-align: right;
+  display: inline-block;
+}
+.ui-popupwindow .center_progressbar .popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .center_progressbar .popup-button-bg .ui-btn {
+  width: 18.272727272727273rem;
+  height: 3.3636363636363638rem;
+  margin: auto;
+}
+.ui-popupwindow .center_progressbar .popup-progress-bg {
+  background: #2a2d30;
+  width: 100%;
+  height: 100%;
+}
+.ui-popupwindow .centertext_progressbar {
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  text-align: center;
+}
+.ui-popupwindow .centertext_progressbar .popup-text {
+  font-size: 1.1818181818181819rem;
+  font-color: #999999;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 1rem;
+  padding-bottom: 0.7272727272727273rem;
+}
+.ui-popupwindow .centertext_progressbar .popup-text p {
+  text-align: center;
+}
+.ui-popupwindow .centertext_progressbar .popup-text-bottom-bg {
+  font-size: 1.1818181818181819rem;
+  font-color: #999999;
+  background: #2a2d30;
+  width: 100%;
+  vertical-align: middle;
+}
+.ui-popupwindow .centertext_progressbar .popup-text-bottom-bg .text-left {
+  width: 40%;
+  height: 1.8181818181818183rem;
+  padding: 0.7272727272727273rem 0.7272727272727273rem 1rem 0.7272727272727273rem;
+  text-align: left;
+  display: inline-block;
+}
+.ui-popupwindow .centertext_progressbar .popup-text-bottom-bg .text-right {
+  width: 40%;
+  height: 1.8181818181818183rem;
+  padding: 0.7272727272727273rem 0.7272727272727273rem 1rem 0.7272727272727273rem;
+  text-align: right;
+  display: inline-block;
+}
+.ui-popupwindow .centertext_progressbar .popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popupwindow .centertext_progressbar .popup-button-bg .ui-btn {
+  width: 18.272727272727273rem;
+  height: 3.3636363636363638rem;
+  margin: auto;
+}
+.ui-popupwindow .centertext_progressbar .popup-progress-bg {
+  background: #2a2d30;
+  width: 100%;
+  height: 100%;
+}
+
+.ui-popupwindow .ui-btn.ui-btn-hover-s {
+  background: #5e88a3;
+}
+.ui-popupwindow .ui-btn.ui-btn-down-s {
+  background: #43a0d9;
+  background: -webkit-gradient(linear, left top, left bottom, from(#43a0d9), to(#388bb9));
+  background: -moz-linear-gradient(top, #43a0d9, #388bb9);
+  background: -ms-linear-gradient(top, #43a0d9, #388bb9);
+  background: -o-linear-gradient(top, #43a0d9, #388bb9);
+}
+.ui-popupwindow > .ui-volumecontrol {
+  display: table;
+  margin: auto;
+  background: rgba(0, 0, 0, 0.666667);
+  width: 18.90909090909091rem;
+  height: 30.727272727272727rem;
+  padding-top: 1rem;
+}
+.ui-popupwindow > .ui-volumecontrol h1 {
+  font-size: 1.0909090909090908rem;
+  display: table;
+  margin: auto;
+  color: #c0c0c0;
+}
+.ui-popupwindow > .ui-volumecontrol .ui-volumecontrol-icon {
+  display: table;
+  width: 100%;
+  height: 5.818181818181818rem;
+  padding-top: 0.9545454545454546rem;
+  padding-bottom: 0.9545454545454546rem;
+  padding-left: 7.5rem;
+  padding-right: 7.5rem;
+}
+.ui-popupwindow > .ui-volumecontrol .ui-volumecontrol-indicator {
+  display: table;
+  width: 100%;
+  height: 19.09090909090909rem;
+  padding-left: 3.090909090909091rem;
+  padding-right: 3.090909090909091rem;
+}
+.ui-popupwindow > .ui-volumecontrol .ui-corner-all {
+  -o-border-radius: 0.3em !important;
+  -ms-border-radius: 0.3em !important;
+  -moz-border-radius: 0.3em !important;
+  -webkit-border-radius: 0.3em !important;
+  border-radius: 0.3em !important;
+}
+.ui-popupwindow-corner-all {
+  -o-border-radius: 0em !important;
+  -ms-border-radius: 0em !important;
+  -moz-border-radius: 0em !important;
+  -webkit-border-radius: 0em !important;
+  border-radius: 0em !important;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-ctxpopup {
+  display: table;
+}
+.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-top {
+  top: 2px;
+}
+.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-left {
+  left: 2px;
+}
+.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-right {
+  right: 2px;
+}
+.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-bottom {
+  bottom: 2px;
+}
+.ui-ctxpopup .ui-ctxpopup-row {
+  display: table-row;
+}
+.ui-ctxpopup .ui-ctxpopup-row .ui-ctxpopup-cell {
+  display: table-cell;
+}
+.ui-ctxpopup .ui-ctxpopup-row .ui-popupwindow-padding {
+  background: #444444;
+  border: none;
+  -ms-box-shadow: 0rem 0rem 0.5454545454545454rem rgba(0, 0, 0, 0.6);
+  -o-box-shadow: 0rem 0rem 0.5454545454545454rem rgba(0, 0, 0, 0.6);
+  -moz-box-shadow: 0rem 0rem 0.5454545454545454rem rgba(0, 0, 0, 0.6);
+  -webkit-box-shadow: 0rem 0rem 0.5454545454545454rem rgba(0, 0, 0, 0.6);
+  box-shadow: 0rem 0rem 0.5454545454545454rem rgba(0, 0, 0, 0.6);
+  -o-border-radius: 0.3em;
+  -ms-border-radius: 0.3em;
+  -moz-border-radius: 0.3em;
+  -webkit-border-radius: 0.3em;
+  border-radius: 0.3em;
+}
+.ui-ctxpopup .ui-listview li.ui-btn-up-s,
+.ui-ctxpopup .ui-listview li.ui-btn-hover-s {
+  background: transparent;
+}
+.ui-ctxpopup .ui-listview li:last-child {
+  border-bottom-left-radius: 0.3em;
+  border-bottom-right-radius: 0.3em;
+}
+.ui-ctxpopup .ui-listview li:first-child {
+  border-top-left-radius: 0.3em;
+  border-top-right-radius: 0.3em;
+}
+.ui-ctxpopup .ui-listview {
+  max-width: 28.181818181818183rem;
+  border: none;
+}
+.ui-ctxpopup .ui-listview > .ui-li {
+  color: #ffffff;
+  border-bottom-color: #2d2d2d;
+  border-top-width: 1px;
+  border-top-color: #5b5b5b;
+  margin-left: 0;
+  margin-right: 0;
+}
+.ui-ctxpopup .ui-listview > .ui-li:first-child,
+.ui-ctxpopup .ui-listview > .ui-li:last-child {
+  border-top-width: 0px;
+}
+.ui-ctxpopup .ui-listview > .ui-li .ui-btn-inner {
+  margin: 0;
+  padding-left: 0.4545454545454546rem;
+  padding-right: 0.4545454545454546rem;
+}
+.ui-ctxpopup .ui-listview li.ui-btn-up-s > .ui-li > .ui-btn-text > a.ui-link-inherit,
+.ui-ctxpopup .ui-listview li.ui-btn-hover-s > .ui-li > .ui-btn-text > a.ui-link-inherit,
+.ui-ctxpopup .ui-listview li.ui-btn-down-s > .ui-li > .ui-btn-text > a.ui-link-inherit {
+  color: #ffffff;
+}
+.ui-ctxpopup .ui-listview > .ui-li:last-child {
+  border: none;
+}
+.ui-ctxpopup .horizontal {
+  color: #ffffff;
+}
+.ui-ctxpopup .horizontal .icon .ui-btn {
+  padding: 0;
+  background: transparent ! important;
+}
+.ui-ctxpopup .horizontal .icon .ui-btn .ui-btn-icon-only {
+  width: 4.363636363636363rem;
+  height: 2.909090909090909rem;
+  padding: 0;
+}
+.ui-ctxpopup .horizontal .icon .ui-btn .ui-icon {
+  top: 0;
+  height: inherit;
+  width: inherit;
+  margin: 0;
+  background-position: center;
+  -ms-background-size: 2.1818181818181817rem 2.1818181818181817rem;
+  -moz-background-size: 2.1818181818181817rem 2.1818181818181817rem;
+  -o-background-size: 2.1818181818181817rem 2.1818181818181817rem;
+  -webkit-background-size: 2.1818181818181817rem 2.1818181818181817rem;
+  background-size: 2.1818181818181817rem 2.1818181818181817rem;
+}
+.ui-ctxpopup .horizontal .text {
+  padding: 0 0.4545454545454546rem;
+  min-width: 2.1818181818181817rem;
+}
+.ui-ctxpopup .horizontal a.ui-link {
+  color: #ffffff;
+  text-decoration: none;
+}
+.ui-ctxpopup .horizontal ul {
+  padding: 0;
+  display: inline-block;
+  list-style: none;
+  vertical-align: middle;
+  margin: 0;
+}
+.ui-ctxpopup .horizontal li {
+  line-height: 1.4545454545454546rem;
+  min-height: 1.4545454545454546rem;
+  min-width: 2.1818181818181817rem;
+  float: left;
+  display: inline-block;
+  border-right: 1px solid #5b5b5b;
+  text-align: center;
+}
+.ui-ctxpopup .horizontal li:first-of-type {
+  border-top-left-radius: 0.3em;
+  border-bottom-left-radius: 0.3em;
+  border-top-right-radius: 0px ! important;
+  border-left: none;
+}
+.ui-ctxpopup .horizontal li:last-of-type {
+  border-top-right-radius: 0.3em;
+  border-bottom-right-radius: 0.3em;
+  border-right: none;
+  margin-right: 0;
+}
+.ui-ctxpopup .horizontal .ui-li:first-child,
+.ui-ctxpopup .horizontal .ui-li:last-child {
+  border-left-width: 0px;
+}
+.ui-ctxpopup .horizontal li:active,
+.ui-ctxpopup .horizontal td:active {
+  background: #3b73b6;
+}
+.ui-ctxpopup .button table .ui-btn {
+  margin: 0rem;
+  padding: 0;
+  height: 2.5454545454545454rem;
+  width: 6rem;
+}
+.ui-arrow {
+  border-style: solid;
+  border-width: 10px;
+  width: 0;
+  height: 0px;
+  position: absolute;
+}
+.ui-arrow.top {
+  border-color: transparent transparent #444444 transparent;
+}
+.ui-arrow.left {
+  border-color: transparent transparent transparent #444444;
+}
+.ui-arrow.right {
+  border-color: transparent #444444 transparent transparent;
+}
+.ui-arrow.bottom {
+  border-color: #444444 transparent transparent transparent;
+}
+.ui-ctxpopup-container {
+  z-index: 1200;
+  display: inline-bloack;
+  position: absolute;
+  padding: 0;
+  outline: 0;
+}
+.ui-ctxpopup-container .ui-popup {
+  border: none;
+  background: #444444;
+  -o-border-radius: 0.3em;
+  -ms-border-radius: 0.3em;
+  -moz-border-radius: 0.3em;
+  -webkit-border-radius: 0.3em;
+  border-radius: 0.3em;
+}
+.ui-ctxpopup-container .ui-listview li:first-child {
+  border-top-left-radius: 0.3em;
+  border-top-right-radius: 0.3em;
+}
+.poptop {
+  -webkit-transform-origin: 0% 0%;
+  -moz-transform-origin: 0% 0%;
+}
+.poptop.in {
+  -webkit-transform: scale(1);
+  -moz-transform: scale(1);
+  opacity: 1;
+  -webkit-animation-name: scalepopin;
+  -moz-animation-name: scalepopin;
+  -webkit-animation-duration: 350ms;
+  -moz-animation-duration: 350ms;
+}
+.poptop.out {
+  -webkit-animation-name: fadeout;
+  -moz-animation-name: fadeout;
+  opacity: 0;
+  -webkit-animation-duration: 100ms;
+  -moz-animation-duration: 100ms;
+}
+.poptop.in.reverse {
+  -webkit-animation-name: fadein;
+  -moz-animation-name: fadein;
+}
+.poptop.out.reverse {
+  -webkit-transform: scale(0.8);
+  -moz-transform: scale(0.8);
+  -webkit-animation-name: scalepopout;
+  -moz-animation-name: scalepopout;
+}
+@-webkit-keyframes scalepopin {
+  from {
+    -webkit-transform: scale(0.8);
+    opacity: 0;
+  }
+  to {
+    -webkit-transform: scale(1);
+    opacity: 1;
+  }
+}
+.popbottom {
+  -webkit-transform-origin: 0% 100%;
+  -moz-transform-origin: 0% 100%;
+}
+.popbottom.in {
+  -webkit-transform: scale(1);
+  -moz-transform: scale(1);
+  opacity: 1;
+  -webkit-animation-name: scalepopin;
+  -moz-animation-name: scalepopin;
+  -webkit-animation-duration: 350ms;
+  -moz-animation-duration: 350ms;
+}
+.popbottom.out {
+  -webkit-animation-name: fadeout;
+  -moz-animation-name: fadeout;
+  opacity: 0;
+  -webkit-animation-duration: 100ms;
+  -moz-animation-duration: 100ms;
+}
+.popbottom.in.reverse {
+  -webkit-animation-name: fadein;
+  -moz-animation-name: fadein;
+}
+.popbottom.out.reverse {
+  -webkit-transform: scale(0.8);
+  -moz-transform: scale(0.8);
+  -webkit-animation-name: scalepopout;
+  -moz-animation-name: scalepopout;
+}
+@-moz-keyframes scalepopin {
+  from {
+    -moz-transform: scale(0.8);
+    opacity: 0;
+  }
+  to {
+    -moz-transform: scale(1);
+    opacity: 1;
+  }
+}
+@-webkit-keyframes scalepopout {
+  from {
+    -webkit-transform: scale(1);
+    opacity: 1;
+  }
+  to {
+    -webkit-transform: scale(0.8);
+    opacity: 0;
+  }
+}
+@-moz-keyframes scalepopout {
+  from {
+    -moz-transform: scale(1);
+    opacity: 1;
+  }
+  to {
+    -moz-transform: scale(0.8);
+    opacity: 0;
+  }
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+@-webkit-keyframes ui-scale-animation {
+  from {
+    -webkit-transform: scaleX(0);
+  }
+  to {
+    -webkit-transform: scaleX(1);
+  }
+}
+.ui-progressbar-value {
+  height: 100%;
+  background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #3677c3), color-stop(1, #1d1f22));
+  -o-border-radius: 0.4545454545454546rem;
+  -ms-border-radius: 0.4545454545454546rem;
+  -moz-border-radius: 0.4545454545454546rem;
+  -webkit-border-radius: 0.4545454545454546rem;
+  border-radius: 0.4545454545454546rem;
+  -o-box-shadow: -1px -1px 1px #b3c8e2;
+  -ms-box-shadow: -1px -1px 1px #b3c8e2;
+  -moz-box-shadow: -1px -1px 1px #b3c8e2;
+  -webkit-box-shadow: -1px -1px 1px #b3c8e2;
+  box-shadow: -1px -1px 1px #b3c8e2;
+}
+.ui-progressbar-bg {
+  position: relative;
+  overflow: hidden;
+  top: 0.2272727272727273rem;
+  height: 0.3181818181818182rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  -o-border-radius: 0.4545454545454546rem;
+  -ms-border-radius: 0.4545454545454546rem;
+  -moz-border-radius: 0.4545454545454546rem;
+  -webkit-border-radius: 0.4545454545454546rem;
+  border-radius: 0.4545454545454546rem;
+  border: 1px;
+  border-style: solid;
+  border-color: #1d1f22;
+  -o-box-shadow: 1px -1px 1px #1d1f22;
+  -ms-box-shadow: 1px -1px 1px #1d1f22;
+  -moz-box-shadow: 1px -1px 1px #1d1f22;
+  -webkit-box-shadow: 1px -1px 1px #1d1f22;
+  box-shadow: 1px -1px 1px #1d1f22;
+  background-color: #000000;
+}
+.ui-progressbar {
+  position: relative;
+  margin-top: 0.8181818181818182rem;
+  margin-bottom: 0.8181818181818182rem;
+  margin-left: 0.9545454545454546rem;
+  margin-right: 0.9545454545454546rem;
+  height: 0.8181818181818182rem;
+  background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #1d1f22), color-stop(1, #000000));
+  -o-box-shadow: 1px 1px 0px #ffffff;
+  -ms-box-shadow: 1px 1px 0px #ffffff;
+  -moz-box-shadow: 1px 1px 0px #ffffff;
+  -webkit-box-shadow: 1px 1px 0px #ffffff;
+  box-shadow: 1px 1px 0px #ffffff;
+  -o-border-radius: 0.4545454545454546rem;
+  -ms-border-radius: 0.4545454545454546rem;
+  -moz-border-radius: 0.4545454545454546rem;
+  -webkit-border-radius: 0.4545454545454546rem;
+  border-radius: 0.4545454545454546rem;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+/* Progress - circle style */
+@-webkit-keyframes ui-rotate-animation {
+  from {
+    -webkit-transform: rotate(0deg);
+  }
+  to {
+    -webkit-transform: rotate(360deg);
+  }
+}
+.ui-progress-container-circle {
+  position: absolute;
+}
+.ui-li .ui-progress-container-circle {
+  top: 22%;
+}
+.ui-progress-circle {
+  position: relative;
+  top: 0;
+  height: 1.4545454545454546rem;
+  width: 1.4545454545454546rem;
+  background: url(images/00_list_process_01.png) no-repeat;
+  -ms-background-size: 1.4545454545454546rem 1.4545454545454546rem;
+  -moz-background-size: 1.4545454545454546rem 1.4545454545454546rem;
+  -o-background-size: 1.4545454545454546rem 1.4545454545454546rem;
+  -webkit-background-size: 1.4545454545454546rem 1.4545454545454546rem;
+  background-size: 1.4545454545454546rem 1.4545454545454546rem;
+}
+.ui-progress-circle-running {
+  -webkit-animation: ui-rotate-animation 1s infinite linear;
+}
+/* Progress - pending style */
+@-webkit-keyframes ui-move-animation {
+  from {
+    -webkit-transform: translateY(-0.6363636363636364rem);
+  }
+  to {
+    -webkit-transform: translateY(0);
+  }
+}
+.ui-progress-pending {
+  position: relative;
+  top: 0;
+  width: 100%;
+  height: 0.9545454545454546rem;
+  padding-top: 0;
+  padding-bottom: 0;
+  background: -webkit-gradient(linear, left top, right bottom, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(0, 0, 0, 0)), color-stop(25%, #3677c3), color-stop(50%, #3677c3), color-stop(50%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(0, 0, 0, 0)), color-stop(75%, #3677c3));
+  background-color: #000000;
+  -ms-background-size: 0.6363636363636364rem 0.6363636363636364rem;
+  -moz-background-size: 0.6363636363636364rem 0.6363636363636364rem;
+  -o-background-size: 0.6363636363636364rem 0.6363636363636364rem;
+  -webkit-background-size: 0.6363636363636364rem 0.6363636363636364rem;
+  background-size: 0.6363636363636364rem 0.6363636363636364rem;
+}
+.ui-progress-pending-running {
+  -webkit-animation: ui-move-animation 0.5s infinite linear;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+label.ui-slider {
+  display: block;
+}
+select.ui-slider-switch {
+  display: none;
+}
+.ui-slider-container {
+  position: relative;
+  vertical-align: middle;
+  height: 0.8181818181818182rem;
+  margin-left: 0.7272727272727273rem;
+  margin-right: 0.7272727272727273rem;
+  margin-top: 0.8181818181818182rem;
+  margin-bottom: 0.8181818181818182rem;
+  background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #1d1f22), color-stop(1, #000000));
+  -o-box-shadow: 1px 1px 0px #ffffff;
+  -ms-box-shadow: 1px 1px 0px #ffffff;
+  -moz-box-shadow: 1px 1px 0px #ffffff;
+  -webkit-box-shadow: 1px 1px 0px #ffffff;
+  box-shadow: 1px 1px 0px #ffffff;
+  -o-border-radius: 0.4545454545454546rem;
+  -ms-border-radius: 0.4545454545454546rem;
+  -moz-border-radius: 0.4545454545454546rem;
+  -webkit-border-radius: 0.4545454545454546rem;
+  border-radius: 0.4545454545454546rem;
+}
+.ui-li > .ui-slider-container {
+  margin-top: 0;
+  margin-bottom: 0;
+}
+.ui-slider-left-volume,
+.ui-slider-left-bright {
+  position: absolute;
+  vertical-align: middle;
+  top: -0.5rem;
+  left: -2.272727272727273rem;
+  height: 1.6818181818181819rem;
+  width: 1.6818181818181819rem;
+  background: url(images/controls/00_slider_button_brightness_01.png) no-repeat;
+  -ms-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  -moz-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  -o-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  -webkit-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  background-size: 1.6818181818181819rem 1.6818181818181819rem;
+}
+.ui-slider-left-volume {
+  background: url(images/controls/00_slider_button_volume_01.png) no-repeat;
+  -ms-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  -moz-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  -o-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  -webkit-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  background-size: 1.6818181818181819rem 1.6818181818181819rem;
+}
+.ui-slider-right-volume,
+.ui-slider-right-bright {
+  position: absolute;
+  top: -0.5rem;
+  right: -2.272727272727273rem;
+  height: 1.6818181818181819rem;
+  width: 1.6818181818181819rem;
+  vertical-align: middle;
+  background: url(images/controls/00_slider_button_brightness_02.png) no-repeat;
+  -ms-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  -moz-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  -o-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  -webkit-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  background-size: 1.6818181818181819rem 1.6818181818181819rem;
+}
+.ui-slider-right-volume {
+  background: url(images/controls/00_slider_button_volume_02.png) no-repeat;
+  -ms-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  -moz-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  -o-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  -webkit-background-size: 1.6818181818181819rem 1.6818181818181819rem;
+  background-size: 1.6818181818181819rem 1.6818181818181819rem;
+}
+.ui-slider-left-text {
+  position: absolute;
+  top: -0.5rem;
+  height: 1.6818181818181819rem;
+  text-align: center;
+  color: #bababa;
+}
+.ui-slider-right-text {
+  position: absolute;
+  top: -0.5rem;
+  height: 1.6818181818181819rem;
+  text-align: center;
+  color: #bababa;
+}
+div.ui-slider:not(.ui-toggle-switch) {
+  position: relative;
+  top: 0.2272727272727273rem;
+  height: 0.3181818181818182rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  -o-border-radius: 0.4545454545454546rem;
+  -ms-border-radius: 0.4545454545454546rem;
+  -moz-border-radius: 0.4545454545454546rem;
+  -webkit-border-radius: 0.4545454545454546rem;
+  border-radius: 0.4545454545454546rem;
+  border: 1px;
+  border-style: solid;
+  border-color: #1d1f22;
+  -o-box-shadow: 1px 1px 0px #ffffff;
+  -ms-box-shadow: 1px 1px 0px #ffffff;
+  -moz-box-shadow: 1px 1px 0px #ffffff;
+  -webkit-box-shadow: 1px 1px 0px #ffffff;
+  box-shadow: 1px 1px 0px #ffffff;
+  background-color: #000000;
+}
+div.ui-slider:not(.ui-toggle-switch) .ui-btn {
+  top: -0.75rem;
+  margin-top: 0;
+}
+div.ui-slider:not(.ui-toggle-switch) .ui-btn-inner {
+  padding: 0.3rem 0 0 0;
+}
+div.ui-slider:not(.ui-toggle-switch) .ui-btn-text {
+  color: #ffffff;
+}
+a.ui-slider-handle {
+  position: relative;
+  z-index: 10;
+  width: 1.6363636363636365rem;
+  height: 1.6363636363636365rem;
+  margin-left: -0.8636363636363636rem;
+  color: #ffffff;
+  font-size: 0.95rem;
+  background: url(images/controls/00_slider_handle.png) no-repeat;
+  -ms-background-size: 1.6363636363636365rem 1.6363636363636365rem;
+  -moz-background-size: 1.6363636363636365rem 1.6363636363636365rem;
+  -o-background-size: 1.6363636363636365rem 1.6363636363636365rem;
+  -webkit-background-size: 1.6363636363636365rem 1.6363636363636365rem;
+  background-size: 1.6363636363636365rem 1.6363636363636365rem;
+}
+.ui-slider-popup {
+  position: absolute !important;
+  z-index: 1200;
+  width: 2.0454545454545454rem;
+  height: 2.4545454545454546rem;
+  padding-top: 0.1rem;
+  color: #f9f9f9;
+  text-align: center;
+  font-size: 1.5rem;
+  background: url(images/controls/00_slider_popup_bg.png) no-repeat;
+  -ms-background-size: 2.0454545454545454rem 2.4545454545454546rem;
+  -moz-background-size: 2.0454545454545454rem 2.4545454545454546rem;
+  -o-background-size: 2.0454545454545454rem 2.4545454545454546rem;
+  -webkit-background-size: 2.0454545454545454rem 2.4545454545454546rem;
+  background-size: 2.0454545454545454rem 2.4545454545454546rem;
+}
+.ui-slider-bg {
+  position: absolute;
+  height: 0.3181818181818182rem;
+  width: 0;
+  background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #3677c3), color-stop(1, #1d1f22));
+  -o-border-radius: 0.4545454545454546rem;
+  -ms-border-radius: 0.4545454545454546rem;
+  -moz-border-radius: 0.4545454545454546rem;
+  -webkit-border-radius: 0.4545454545454546rem;
+  border-radius: 0.4545454545454546rem;
+  -o-box-shadow: -1px -1px 1px #b3c8e2;
+  -ms-box-shadow: -1px -1px 1px #b3c8e2;
+  -moz-box-shadow: -1px -1px 1px #b3c8e2;
+  -webkit-box-shadow: -1px -1px 1px #b3c8e2;
+  box-shadow: -1px -1px 1px #b3c8e2;
+}
+.ui-slider-handle-press {
+  position: absolute;
+  z-index: 15;
+  width: 1.6818181818181819rem;
+  height: 1.6818181818181819rem;
+  background: url(images/controls/00_slider_handle_press.png) no-repeat;
+  -ms-background-size: 1.6363636363636365rem 1.6363636363636365rem;
+  -moz-background-size: 1.6363636363636365rem 1.6363636363636365rem;
+  -o-background-size: 1.6363636363636365rem 1.6363636363636365rem;
+  -webkit-background-size: 1.6363636363636365rem 1.6363636363636365rem;
+  background-size: 1.6363636363636365rem 1.6363636363636365rem;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-gallery {
+  position: relative;
+  width: 100%;
+}
+.ui-gallery-bg {
+  display: none;
+  position: absolute;
+  text-align: center;
+  width: 100%;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+/* tickernoti */
+@-webkit-keyframes ui-ticker-show {
+  from {
+    opacity: 0;
+    -webkit-transform: translateY(-2.272727272727273rem);
+    top: -2.272727272727273rem;
+  }
+  to {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    top: 0;
+  }
+}
+@-webkit-keyframes ui-ticker-hide {
+  from {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    top: 0;
+  }
+  to {
+    opacity: 0;
+    -webkit-transform: translateY(-2.272727272727273rem);
+    top: -2.272727272727273rem;
+  }
+}
+.ui-ticker {
+  position: fixed;
+  display: none;
+  left: 0;
+  width: 100%;
+  height: 2.272727272727273rem;
+  z-index: 2147483547;
+  background: #444444;
+}
+.ui-ticker.fix {
+  display: block;
+  top: 0;
+}
+.ui-ticker.show {
+  display: block;
+  -ms-animation: ui-ticker-show 0.8s 1 ease;
+  -o-animation: ui-ticker-show 0.8s 1 ease;
+  -moz-animation: ui-ticker-show 0.8s 1 ease;
+  -webkit-animation: ui-ticker-show 0.8s 1 ease;
+  top: 0;
+}
+.ui-ticker.hide {
+  display: block;
+  -o-animation: ui-ticker-hide 0.8s 1 ease;
+  -ms-animation: ui-ticker-hide 0.8s 1 ease;
+  -webkit-animation: ui-ticker-hide 0.8s 1 ease;
+  top: -2.272727272727273rem;
+}
+.ui-ticker-btn {
+  position: relative;
+  margin-top: 0.4545454545454546rem;
+  margin-left: 0.36363636363636365rem;
+  margin-right: 0.36363636363636365rem;
+  vertical-align: middle;
+  float: right;
+}
+.ui-ticker-btn .ui-btn-inner {
+  padding: 0.15rem 0 0 0;
+  height: 1.2727272727272727rem;
+  width: 3.5rem;
+  font-size: 0.81rem;
+  color: #ffffff;
+  background: #404040;
+  border: 1px;
+  border-color: #323232;
+  box-shadow: 0 0 1px 1px #323232;
+}
+.ui-ticker-btn .ui-btn-box-s.ui-btn-up-s {
+  background: #404040;
+  box-shadow: 0 0 1px 1px #323232;
+  border-color: #323232;
+}
+.ui-ticker-btn .ui-btn-box-s.ui-btn-hover-s {
+  background: #404040;
+  box-shadow: 0 0 1px 1px #323232;
+  border-color: #323232;
+}
+.ui-ticker-icon {
+  position: absolute;
+  top: 0;
+  height: 1.4545454545454546rem;
+  width: 1.4545454545454546rem;
+  margin-top: 0.4090909090909091rem;
+  margin-bottom: 0.4090909090909091rem;
+  margin-left: 0.36363636363636365rem;
+  margin-right: 0.36363636363636365rem;
+  vertical-align: middle;
+}
+.ui-ticker-text1-bg {
+  position: absolute;
+  top: 0;
+  height: 0.8181818181818182rem;
+  left: 2.1818181818181817rem;
+  margin-top: 0.36363636363636365rem;
+  font-size: 0.68rem;
+  color: #ffffff;
+}
+.ui-ticker-text2-bg {
+  position: absolute;
+  top: 0;
+  height: 0.7272727272727273rem;
+  left: 2.1818181818181817rem;
+  margin-top: 1.1818181818181819rem;
+  font-size: 0.54rem;
+  color: #ffffff;
+}
+/* smallpopup */
+@-webkit-keyframes ui-smallpopup-show {
+  from {
+    opacity: 0;
+    -webkit-transform: scaleY(0);
+  }
+  to {
+    opacity: 1;
+    -webkit-transform: scaleY(1);
+  }
+}
+@-webkit-keyframes ui-smallpopup-hide {
+  from {
+    opacity: 1;
+    left: 0;
+    -webkit-transform: scaleY(1);
+  }
+  to {
+    opacity: 0;
+    left: 0;
+    -webkit-transform: scaleY(0);
+  }
+}
+.ui-smallpopup {
+  position: fixed;
+  display: none;
+  left: 0;
+  width: 100%;
+  z-index: 1100;
+  background: #444444;
+  vertical-align: middle;
+  font-size: 0.72rem;
+  word-break: break-all;
+}
+.ui-smallpopup.fix {
+  display: block;
+}
+.ui-smallpopup.show {
+  display: block;
+  -moz-animation: ui-smallpopup-show 0.5s 1 ease;
+  -ms-animation: ui-smallpopup-show 0.5s 1 ease;
+  -o-animation: ui-smallpopup-show 0.5s 1 ease;
+  -webkit-animation: ui-smallpopup-show 0.5s 1 ease;
+}
+.ui-smallpopup.hide {
+  display: block;
+  left: -100%;
+  -moz-animation: ui-smallpopup-hide 0.5s 1 ease;
+  -ms-animation: ui-smallpopup-hide 0.5s 1 ease;
+  -o-animation: ui-smallpopup-hide 0.5s 1 ease;
+  -webkit-animation: ui-smallpopup-hide 0.5s 1 ease;
+}
+.ui-smallpopup-text-bg {
+  position: relative;
+  margin-top: 0.18181818181818182rem;
+  margin-bottom: 0.18181818181818182rem;
+  margin-left: 0.36363636363636365rem;
+  margin-right: 0.36363636363636365rem;
+  color: #ffffff;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-swipe {
+  list-style-type: none;
+  overflow: hidden;
+}
+.ui-swipe-item {
+  height: 1.1818181818181819rem;
+  -ms-user-select: none;
+  -o-user-select: none;
+  -moz-user-select: none;
+  -webkit-user-select: none;
+  -user-select: none;
+  opacity: 0;
+  text-align: center;
+}
+.ui-swipe-item .ui-btn {
+  margin-top: -1.5em ! important;
+  position: relative ! important;
+}
+.ui-swipe-item p {
+  margin: 0;
+}
+.ui-swipe-item-cover {
+  position: absolute;
+  border: none;
+  top: 0%;
+  left: 0%;
+  width: 100%;
+  height: 100%;
+  z-index: 100;
+}
+.ui-swipe-item-cover .ui-swipe-item-cover-inner {
+  position: absolute;
+  padding-top: 0.6818181818181819rem;
+  padding-bottom: 0.6818181818181819rem;
+  padding-left: 0.36363636363636365rem;
+  width: 100%;
+  text-align: left;
+}
+.ui-swipe-item-cover .ui-swipe-item-cover-inner .ui-li-text-sub {
+  position: absolute;
+  padding-right: 0.7272727272727273rem;
+}
+.ui-swipe-item-cover p {
+  margin: 0;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-fastscroll {
+  position: absolute;
+  right: 0rem;
+  background-color: #21344a;
+  width: 1.1363636363636365rem;
+  -ms-user-select: none;
+  -o-user-select: none;
+  -moz-user-select: none;
+  -webkit-user-select: none;
+  user-select: none;
+  margin: 0;
+  padding-right: 0.08em;
+  opacity: 1;
+}
+.ui-fastscroll ul {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+.ui-fastscroll li {
+  cursor: pointer;
+  color: #d7d7d7;
+  padding: 0.09090909090909091rem 0.09090909090909091rem 0.09090909090909091rem 0.09090909090909091rem;
+  text-align: center;
+  vertical-align: middle;
+  font-size: 0.7272727272727273rem;
+  font-weight: bold;
+  border-left-width: 0.13636363636363635rem;
+  border-left-color: #3b73b6;
+  border-left-style: solid;
+  border-top-width: 0.13636363636363635rem;
+  border-top-color: #21344a;
+}
+.ui-fastscroll2 {
+  position: absolute;
+  right: 0rem;
+  -ms-user-select: none;
+  -o-user-select: none;
+  -moz-user-select: none;
+  -webkit-user-select: none;
+  user-select: none;
+  margin: 0;
+  padding-right: 0.08em;
+  opacity: 1;
+}
+.ui-fastscroll2 ul {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+.ui-fastscroll2 li {
+  cursor: pointer;
+  color: #d7d7d7;
+  padding: 0.09090909090909091rem 0.09090909090909091rem 0.09090909090909091rem 0.09090909090909091rem;
+  text-align: right;
+}
+.ui-fastscroll-bg {
+  position: absolute;
+  right: 0rem;
+  background-color: #21344a;
+  width: 1.1363636363636365rem;
+  z-index: 10;
+  top: 0;
+}
+.ui-fastscroll-popup {
+  position: absolute;
+  background: #3b73b6;
+  color: #ffffff;
+  padding: 0.4545454545454546rem 1.3636363636363638rem;
+  -ms-box-shadow: 0.36363636363636365rem 0.4545454545454546rem 0rem rgba(199, 199, 199, 0.5);
+  -o-box-shadow: 0.36363636363636365rem 0.4545454545454546rem 0rem rgba(199, 199, 199, 0.5);
+  -moz-box-shadow: 0.36363636363636365rem 0.4545454545454546rem 0rem rgba(199, 199, 199, 0.5);
+  -webkit-box-shadow: 0.36363636363636365rem 0.4545454545454546rem 0rem rgba(199, 199, 199, 0.5);
+  box-shadow: 0.36363636363636365rem 0.4545454545454546rem 0rem rgba(199, 199, 199, 0.5);
+  text-align: center;
+  font-size: 3.409090909090909rem;
+  font-weight: bold;
+  display: none;
+  box-sizing: border-box;
+  left: 50%;
+  top: 50%;
+}
+li.ui-fastscroll-hover {
+  color: #3b73b6;
+}
+li.ui-fastscroll-hover,
+li.ui-fastscroll-hover-up,
+li.ui-fastscroll-hover-down {
+  background: #202327;
+  border-style: solid;
+  border-color: #3b73b6;
+  border-width: 0px;
+  border-right-width: 0.13636363636363635rem;
+  border-left-width: 1px;
+  border-left-color: #202327;
+}
+li.ui-fastscroll-hover {
+  padding-top: 0.045454545454545456rem;
+  padding-bottom: 0.045454545454545456rem;
+}
+li.ui-fastscroll-hover-first-item {
+  padding-top: 0.09090909090909091rem;
+}
+li.ui-fastscroll-hover-up {
+  border-top-width: 0.13636363636363635rem;
+  padding-top: 0px;
+}
+li.ui-fastscroll-hover-down {
+  border-bottom-width: 0.13636363636363635rem;
+  padding-bottom: 0px;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+div.ui-slider.ui-toggle-switch {
+  width: 3rem;
+  height: 1.590909090909091rem;
+  background-color: transparent;
+  margin-top: 0.2272727272727273rem;
+  margin-bottom: 0.2272727272727273rem;
+}
+div.ui-slider.ui-toggle-switch .ui-slider-label {
+  position: absolute;
+  width: 3rem;
+  height: 1.590909090909091rem;
+  background-size: 100% 100%;
+  background-repeat: no-repeat;
+  background-color: transparent;
+}
+div.ui-slider.ui-toggle-switch .ui-slider-label.ui-slider-label-a {
+  background-image: url(images/00_button_on.png);
+}
+div.ui-slider.ui-toggle-switch .ui-slider-label.ui-slider-label-b {
+  background-image: url(images/00_button_off.png);
+}
+div.ui-slider.ui-toggle-switch .ui-slider-inneroffset a {
+  background: none;
+}
+.ui-slider-switch:not(.ui-toggle-switch) {
+  width: 4.181818181818182rem;
+}
+div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) {
+  position: relative;
+  margin-top: 0.2272727272727273rem;
+  margin-bottom: 0.2272727272727273rem;
+  height: 1.4545454545454546rem;
+  top: 0;
+  margin: 0.2272727272727273rem;
+  border-radius: 0.6818181818181819rem;
+}
+div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) .ui-slider-inneroffset {
+  position: relative;
+  margin: -1px 0.7272727272727273rem;
+  z-index: 1;
+}
+div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) a.ui-slider-handle {
+  position: absolute;
+  background: #ffffff;
+  background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 50, from(#f9f9f9), to(#323232));
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
+  top: 50%;
+  margin: 1px 0 0 -0.6818181818181819rem;
+  border-radius: 0.6818181818181819rem;
+  border: 2px solid gray;
+  width: 1.2727272727272727rem;
+  height: 1.2727272727272727rem;
+}
+div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) a.ui-slider-handle-snapping {
+  -webkit-transition: left 70ms linear;
+}
+div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span {
+  position: absolute;
+  overflow: hidden;
+  text-align: center;
+  height: 1.4545454545454546rem;
+  font-weight: bold;
+  font-size: 0.7272727272727273rem;
+  border-radius: 0.6818181818181819rem;
+  white-space: nowrap;
+  line-height: 2;
+}
+div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span.ui-slider-label-a {
+  left: 0px;
+  color: white;
+  z-index: 1;
+  text-indent: -1.5em;
+}
+div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span.ui-slider-label-b {
+  right: 0px;
+  color: #ffffff;
+  z-index: 0;
+  text-indent: 1.5em;
+}
+.ui-slider-switch .ui-slider-handle .ui-btn-inner {
+  padding: 0;
+}
+.ui-triangle-container {
+  position: relative;
+}
+.ui-triangle-container .ui-triangle {
+  position: absolute;
+  border-style: solid;
+  border-color: transparent;
+  border-width: 10px;
+}
+.ui-triangle-container .ui-triangle-top {
+  top: 0px;
+  border-top-width: 0px;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  margin-left: -10px;
+}
+.ui-triangle-container .ui-triangle-bottom {
+  bottom: 0px;
+  border-bottom-width: 0px;
+  border-left-color: transparent;
+  border-right-color: transparent;
+  margin-left: -10px;
+}
+.ui-triangle-container .ui-triangle-left {
+  left: 0px;
+  margin-top: -10px;
+  border-left-width: 0px;
+  border-left-color: transparent;
+  border-right-color: transparent;
+}
+.ui-triangle-container .ui-triangle-right {
+  right: 0px;
+  margin-top: -10px;
+  border-right-width: 0px;
+  border-left-color: transparent;
+  border-right-color: transparent;
+}
+.ui-triangle-container-top {
+  height: 10px;
+  top: 0px;
+  margin-top: -10px;
+}
+.ui-triangle-container-bottom {
+  height: 10px;
+  bottom: 0px;
+  margin-bottom: -10px;
+}
+.ui-triangle-container-left {
+  width: 10px;
+}
+.ui-triangle-container-right {
+  width: 10px;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-tokentextarea {
+  display: table;
+  outline: none;
+  position: relative;
+}
+.ui-tokentextarea .ui-tokentextarea-label {
+  display: inline-block;
+  position: relative;
+  margin-left: 5px;
+  margin-right: 5px;
+  padding: 10px 0px;
+  color: #808080;
+  font-weight: bold;
+  text-align: center;
+  font-size: 1em;
+}
+.ui-tokentextarea-input {
+  outline: none;
+  position: relative;
+  border: 0 !important;
+  padding: 0 !important;
+  margin: 8px;
+  color: #222222;
+  text-align: left;
+  font-size: 1em;
+}
+.ui-tokentextarea-input-visible {
+  display: inline-block !important;
+}
+.ui-tokentextarea-input-invisible {
+  display: none !important;
+}
+.ui-tokentextarea div {
+  display: inline-block;
+  text-align: center;
+  cursor: pointer;
+  position: relative;
+  margin-left: 5px;
+  margin-right: 5px;
+  margin-bottom: 5px;
+  margin-top: 5px;
+  padding: 3px 8px;
+  font-size: 1em;
+  text-shadow: 0 0.1em 0.1em rgba(0, 0, 0, 0.3);
+  -ms-border-radius: .2em;
+  -o-border-radius: .2em;
+  -webkit-border-radius: .2em;
+  -moz-border-radius: .2em;
+  border-radius: .2em;
+  -o-box-shadow: 0 0.1em 0.1em rgba(0, 0, 0, 0.2);
+  -ms-box-shadow: 0 0.1em 0.1em rgba(0, 0, 0, 0.2);
+  -moz-box-shadow: 0 0.1em 0.1em rgba(0, 0, 0, 0.2);
+  -webkit-box-shadow: 0 0.1em 0.1em rgba(0, 0, 0, 0.2);
+  box-shadow: 0 0.1em 0.1em rgba(0, 0, 0, 0.2);
+  color: #ffffff;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+div.ui-tokentextarea-block {
+  background-color: #5f8abd;
+  background-image: url(./images/00_contacts_button_header.png);
+  background-size: contain;
+  background-repeat: no-repeat;
+  padding-left: 11px;
+}
+div.ui-tokentextarea-sblock {
+  background-color: #365984;
+  background-image: url(./images/00_contacts_button_header_press.png);
+  background-size: contain;
+  background-repeat: no-repeat;
+  padding-left: 11px;
+}
+.ui-tokentextarea .ui-tokentextarea-desclabel {
+  display: inline-block;
+  outline: none;
+  position: relative;
+  border: 0;
+  color: #808080;
+  text-align: left;
+  font-size: 1em;
+}
+.ui-tokentextarea-link-base {
+  position: absolute;
+  right: 0em;
+  bottom: .2em;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-handler {
+  position: absolute;
+  overflow: hidden;
+  opacity: 0;
+}
+.ui-handler-visible {
+  opacity: 1;
+}
+.ui-handler-direction-y {
+  top: 0.2272727272727273rem;
+  right: 0.2272727272727273rem;
+  bottom: 0.2272727272727273rem;
+  width: 1.0909090909090908rem;
+}
+.ui-handler-direction-x {
+  right: 0.2272727272727273rem;
+  bottom: 0.2272727272727273rem;
+  left: 0.2272727272727273rem;
+  height: 1.0909090909090908rem;
+}
+.ui-handler-track {
+  position: relative;
+  width: 100%;
+  height: 100%;
+}
+.ui-handler-thumb {
+  position: absolute;
+  top: 0;
+  left: 0;
+  background-position: center;
+  background-repeat: no-repeat;
+  -o-border-radius: 0.11363636363636365rem;
+  -ms-border-radius: 0.11363636363636365rem;
+  -moz-border-radius: 0.11363636363636365rem;
+  -webkit-border-radius: 0.11363636363636365rem;
+  border-radius: 0.11363636363636365rem;
+}
+.ui-handler-direction-y .ui-handler-thumb {
+  width: 1.0909090909090908rem;
+  height: 4.863636363636364rem;
+  background-size: 1.0909090909090908rem 0.9090909090909092rem;
+}
+.ui-handler-direction-x .ui-handler-thumb {
+  width: 4.863636363636364rem;
+  height: 1.0909090909090908rem;
+  background-size: 0.9090909090909092rem 1.0909090909090908rem;
+}
+/* S
+-----------------------------------------------------------------------------------------------------------*/
+.ui-handler-s .ui-handler-thumb {
+  background-color: rgba(150, 150, 150, 0.5);
+}
+.ui-handler-s .ui-handler-direction-y .ui-handler-thumb {
+  background-image: url("images/00_scroll_bar_handler.png");
+}
+.ui-handler-s .ui-handler-direction-x .ui-handler-thumb {
+  background-image: url("images/00_scroll_bar_handler_hor.png");
+}
+/*
+ * jQuery Mobile Framework
+ * Copyright (c) jQuery Project
+ * Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt)
+ * licenses.
+ */
+/*** less definitions ***/
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-virtualgrid {
+  overflow: hidden;
+  position: absolute;
+}
+.ui-virtualgrid-wrapblock {
+  position: absolute;
+  left: 0;
+}
+.ui-virtualgrid-wrapblock-x {
+  float: left;
+  overflow: hidden;
+}
+.ui-scrollbar-thumb-x {
+  width: 1.5rem !important;
+}
+.ui-scrollbar-thumb-y {
+  height: 1.5rem !important;
+}
+.ui-virtualgrid-overflow-indicator-x-top {
+  position: absolute;
+  display: block;
+  left: 0;
+  top: 0;
+  width: 0.4545454545454546rem;
+  height: 100%;
+  opacity: 0;
+  background: -webkit-gradient(linear, right top, left top, color-stop(0, rgba(128, 128, 128, 0)), color-stop(1, #808080));
+  pointer-events: none;
+}
+.ui-virtualgrid-overflow-indicator-x-bottom {
+  position: absolute;
+  display: block;
+  right: 0;
+  bottom: 0;
+  width: 0.4545454545454546rem;
+  height: 100%;
+  opacity: 0;
+  background: -webkit-gradient(linear, right top, left top, color-stop(0, #808080), color-stop(1, rgba(128, 128, 128, 0)));
+  pointer-events: none;
+}
+.ui-virtualgrid-overflow-indicator-y-top {
+  position: absolute;
+  display: block;
+  top: 0;
+  width: 100%;
+  height: 0.4545454545454546rem;
+  opacity: 0;
+  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, rgba(128, 128, 128, 0)), color-stop(1, #808080));
+  pointer-events: none;
+}
+.ui-virtualgrid-overflow-indicator-y-bottom {
+  position: absolute;
+  display: block;
+  bottom: 0;
+  width: 100%;
+  height: 0.4545454545454546rem;
+  opacity: 0;
+  background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #808080), color-stop(1, rgba(128, 128, 128, 0)));
+  pointer-events: none;
+}
+/*
+ * padding here set to zero - otherwise the list scrolls underneith the top heading and can be seen above it
+ */
+.ui-content.ui-virtualgrid-content {
+  padding: 0;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-multimediaview {
+  background-color: #f9f9f9;
+  overflow: hidden;
+}
+.ui-multimediaview-wrap {
+  width: 100%;
+  padding: 0;
+  position: relative;
+  overflow: hidden;
+}
+.ui-multimediaview-siblings-off {
+  display: none !important;
+}
+.ui-multimediaview-control span {
+  display: inline-block;
+}
+.ui-multimediaview-video {
+  position: absolute;
+}
+.ui-multimediaview-control {
+  display: block;
+  z-index: 1002;
+  padding: 0;
+  margin: 0;
+  outline: 0;
+  border: 0;
+  height: 1.9090909090909092rem;
+  text-align: left;
+  overflow: hidden;
+}
+.ui-multimediaview-control span.ui-button {
+  background-position: center center;
+  background-size: 80%;
+  background-repeat: no-repeat;
+  width: 1.6818181818181819rem;
+  height: 1.6818181818181819rem;
+  margin: 0.09090909090909091rem;
+}
+.ui-multimediaview-control .ui-playpausebutton {
+  float: left;
+}
+.ui-multimediaview-control .ui-timestamplabel {
+  text-align: center;
+  float: left;
+}
+.ui-multimediaview-control .ui-timestamplabel p {
+  margin-top: -0.22272727272727275rem;
+  margin-left: 0.09090909090909091rem;
+  padding: 0;
+  text-align: center;
+  font-size: 0.5rem;
+  line-height: 0.6363636363636364rem;
+  text-align: left;
+}
+.ui-multimediaview-control .ui-durationlabel {
+  text-align: center;
+  float: right;
+}
+.ui-multimediaview-control .ui-durationlabel p {
+  margin-top: -0.22272727272727275rem;
+  margin-right: 0.09090909090909091rem;
+  padding: 0;
+  text-align: center;
+  font-size: 0.5rem;
+  line-height: 0.6363636363636364rem;
+  text-align: right;
+}
+.ui-multimediaview-bar {
+  margin-top: 0.22272727272727275rem;
+  float: left;
+}
+.ui-multimediaview-bar-bg {
+  height: 0.36363636363636365rem;
+  border-radius: 1.5em;
+}
+.ui-multimediaview-bar-highlight {
+  height: 0.36363636363636365rem;
+  position: absolute;
+  border-radius: 1.5em;
+}
+.ui-multimediaview-control .ui-seekbar {
+  margin-left: 0.09090909090909091rem;
+}
+.ui-multimediaview-control .ui-seekbar .ui-duration {
+  width: 100%;
+}
+.ui-multimediaview-control .ui-volumecontrol {
+  width: 5rem;
+  height: 100%;
+  float: left;
+}
+.ui-multimediaview-control .ui-volumecontrol .ui-volumebar {
+  margin-left: 0.6818181818181819rem;
+}
+.ui-multimediaview-control .ui-volumecontrol .ui-volumebar .ui-guide {
+  width: 3.8636363636363638rem;
+}
+.ui-multimediaview-control .ui-volumecontrol .ui-volumebar .ui-handle {
+  margin: 0;
+  padding: 0;
+  width: 0.6818181818181819rem;
+  height: 0.6818181818181819rem;
+  border-style: solid;
+  border-width: 1px;
+  border-radius: 1.5em;
+}
+.ui-fullscreen-parents {
+  padding: 0 !important;
+  margin: 0 !important;
+  width: 100% !important;
+  height: 100% !important;
+  overflow: hidden;
+}
+/* S
+-----------------------------------------------------------------------------------------------------------*/
+.ui-multimediaview-s .ui-multimediaview-video {
+  background-color: rgba(248, 246, 239, 0.5);
+}
+.ui-multimediaview-s .ui-timestamplabel {
+  color: #4a84c9;
+}
+.ui-multimediaview-s .ui-durationlabel {
+  color: #808080;
+}
+.ui-multimediaview-s span.ui-button {
+  background-color: #f8f6ef;
+}
+.ui-multimediaview-s span.ui-play-icon {
+  background-image: url(./images/00_button_play.png);
+}
+.ui-multimediaview-s span.ui-pause-icon {
+  background-image: url(./images/00_button_pause.png);
+}
+.ui-multimediaview-s span.ui-volume-icon {
+  background-image: url(./images/controls/00_slider_button_volume_02.png);
+}
+.ui-multimediaview-s span.ui-mute-icon {
+  background-image: url(./images/controls/00_slider_button_volume_01.png);
+}
+.ui-multimediaview-s span.ui-fullscreen-on {
+  background-image: url(./images/00_button_fullscreen_on.png);
+}
+.ui-multimediaview-s span.ui-fullscreen-off {
+  background-image: url(./images/00_button_fullscreen_off.png);
+}
+.ui-multimediaview-s .ui-seekbar .ui-duration {
+  background-color: #cbc8c5;
+}
+.ui-multimediaview-s .ui-seekbar .ui-currenttime {
+  background-color: #4a84c9;
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#6289d9), to(#295b98));
+  background-image: -moz-linear-gradient(top, #6289d9, #295b98);
+  background-image: -o-linear-gradient(top, #6289d9, #295b98);
+  background-image: -ms-linear-gradient(top, #6289d9, #295b98);
+}
+.ui-multimediaview-s .ui-volumebar .ui-guide {
+  background-color: #cbc8c5;
+}
+.ui-multimediaview-s .ui-volumebar .ui-value {
+  background-color: #4a84c9;
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#6289d9), to(#295b98));
+  background-image: -moz-linear-gradient(top, #6289d9, #295b98);
+  background-image: -o-linear-gradient(top, #6289d9, #295b98);
+  background-image: -ms-linear-gradient(top, #6289d9, #295b98);
+}
+.ui-multimediaview-s .ui-volumebar .ui-handle {
+  background-color: #f9f9f9;
+  background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#e6e6e6));
+  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6);
+  border-color: #bab9b4;
+}
+.ui-popup-screen {
+       top: 0;
+       left: 0;
+       width: 100%;
+       height: 100%;
+       border: 0;
+       position: absolute;
+       filter: Alpha(Opacity=50);
+       opacity: 0;
+}
+
+.ui-popup-screen-background-hack {
+       background-color: black;
+       filter: Alpha(Opacity=0);
+}
+
+@-webkit-keyframes popup-fadein {
+    from { opacity: 0; }
+    to { opacity: 0.5; }
+}
+
+@-moz-keyframes popup-fadein {
+    from { opacity: 0; }
+    to { opacity: 0.5; }
+}
+
+@-webkit-keyframes popup-fadeout {
+    from { opacity: 0.5; }
+    to { opacity: 0; }
+}
+
+@-moz-keyframes popup-fadeout {
+    from { opacity: 0.5; }
+    to { opacity: 0; }
+}
+
+.ui-popup-screen.fade.in {
+       opacity: 0.5;
+       -webkit-animation-name: popup-fadein;
+       -moz-animation-name: popup-fadein;
+}
+
+.ui-popup-screen.fade.out {
+       opacity: 0;
+       -webkit-animation-name: popup-fadeout;
+       -moz-animation-name: popup-fadeout;
+}
+
+.ui-popup.ui-content,
+.ui-popup .ui-content {
+       overflow: visible;
+}
+
+.ui-popup > img {
+       width: auto;
+       height: auto;
+       max-width: 100%;
+       max-height: 100%;
+       vertical-align: middle;
+}
+.ui-popup iframe {
+       vertical-align: middle;
+}
+
+@media all and (min-width: 450px){
+       .ui-popup .ui-field-contain label.ui-submit,
+       .ui-popup .ui-field-contain .ui-controlgroup-label,
+       .ui-popup .ui-field-contain label.ui-select,
+       .ui-popup .ui-field-contain label.ui-input-text {
+               font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em;
+       }
+       .ui-popup .ui-field-contain .ui-btn.ui-submit,
+       .ui-popup .ui-field-contain .ui-controlgroup-controls,
+       .ui-popup .ui-field-contain .ui-select,
+       .ui-popup .ui-field-contain input.ui-input-text,
+       .ui-popup .ui-field-contain textarea.ui-input-text,
+       .ui-popup .ui-field-contain .ui-input-search {
+               width: 100%; display: block;
+       }
+}
+
+.ui-popup > .ui-btn-left,
+.ui-popup > .ui-btn-right {
+       position: absolute; 
+       top: -9px;
+       margin: 0;
+       z-index: 1101;
+}
+.ui-popup > .ui-btn-left { left: -9px; }
+.ui-popup > .ui-btn-right { right: -9px; }
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-popup-screen {
+  background: #000000;
+  opacity: 0;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 1200;
+}
+.ui-overlay-dim {
+  opacity: 0.7;
+}
+.ui-popup-scroller-bg {
+  width: 100%;
+}
+.ui-popup-container {
+  position: absolute;
+  width: 86.12%;
+  z-index: 1201 !important;
+  background: #2a2d30;
+  text-align: center;
+  outline-color: #202327;
+  display: -moz-box;
+  display: -webkit-box;
+  display: box;
+  -ms-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -o-box-orient: vertical;
+  -webkit-box-orient: vertical;
+  box-orient: vertical;
+  -ms-box-align: center;
+  -moz-box-align: center;
+  -o-box-align: center;
+  -webkit-box-align: center;
+  box-align: center;
+  -ms-box-pack: center;
+  -moz-box-pack: center;
+  -o-box-pack: center;
+  -webkit-box-pack: center;
+  box-pack: center;
+  /***** Normal Samples *****/
+
+}
+.ui-popup-container .ui-popup {
+  padding: 3px 2px 2px 2px;
+  background: #2a2d30;
+  width: 100%;
+  word-wrap: break-word;
+}
+.ui-popup-container .ui-popup > .ui-popup-title,
+.ui-popup-container .ui-popup > .ui-popup-text,
+.ui-popup-container .ui-popup > .ui-popup-button-bg {
+  width: 100%;
+}
+.ui-popup-container .ui-popup-title {
+  width: 100%;
+  height: 1.8181818181818183rem;
+  text-align: left;
+  color: #70a9ee;
+  font-size: 1.0909090909090908rem;
+  font-weight: bold;
+}
+.ui-popup-container .ui-popup-title h1 {
+  font-size: 1.0909090909090908rem;
+  font-weight: bold;
+  color: #70a9ee;
+  margin: 0px;
+  padding-top: 0.4545454545454546rem;
+  padding-left: 0.7272727272727273rem;
+}
+.ui-popup-container .ui-popup-text {
+  margin-top: 1rem;
+  margin-bottom: 1rem;
+  color: #f9f9f9;
+  font-size: 0.9090909090909092rem;
+  background: #2a2d30;
+  text-align: center;
+}
+.ui-popup-container .ui-popup-text .ui-li .ui-radio label,
+.ui-popup-container .ui-popup-text .ui-li .ui-checkbox label {
+  background: transparent;
+}
+.ui-popup-container .ui-popup-text input {
+  display: inline-block;
+}
+.ui-popup-container .ui-popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  height: 1.6818181818181819rem;
+  padding-top: 0.4545454545454546rem;
+  padding-bottom: 0.4545454545454546rem;
+  width: 100%;
+  vertical-align: middle;
+}
+.ui-popup-container .ui-popup-button-bg > .ui-btn {
+  display: inline-block;
+  margin: auto;
+  height: 1.6818181818181819rem;
+}
+.ui-popup-container .ui-popup-button-bg .ui-btn-inner {
+  padding-top: 0.2272727272727273rem;
+  padding-bottom: 0.2272727272727273rem;
+  padding-left: 0.9090909090909092rem;
+  padding-right: 0.9090909090909092rem;
+}
+.ui-popup-container .center_basic_3btn .ui-btn,
+.ui-popup-container .center_title_3btn .ui-btn {
+  max-width: 3.6363636363636367rem;
+  height: 1.6818181818181819rem;
+  margin-top: 0rem;
+  margin-bottom: 0rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  display: inline-block;
+}
+.ui-popup-container .center_button_vertical .ui-popup-button-bg {
+  display: block;
+  height: auto;
+}
+.ui-popup-container .center_button_vertical .ui-popup-button-bg > .ui-btn {
+  display: block;
+  width: 9.090909090909092rem;
+}
+.ui-popup-container .center_checkbox .ui-popup-check-bg {
+  font-size: 0.9090909090909092rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0rem;
+  padding-bottom: 1rem;
+  vertical-align: middle;
+}
+.ui-popup-container .center_checkbox .ui-popup-check-bg .ui-checkbox .ui-btn {
+  text-align: center;
+  background: #2a2d30;
+  border: 0rem;
+}
+.ui-popup-container .center_checkbox .ui-popup-check-bg .ui-checkbox .ui-btn .ui-btn-inner {
+  border: 0rem;
+}
+.ui-popup-container .center_checkbox .ui-popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popup-container .center_checkbox .ui-popup-button-bg .ui-btn {
+  width: 5rem;
+  height: 1.6818181818181819rem;
+  margin-top: 0rem;
+  margin-bottom: 0rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  display: inline-block;
+}
+.ui-popup-container .center_liststyle_1btn .ui-popup-scroller-bg {
+  width: 100%;
+  overflow: hidden;
+  background: #f8f6ef;
+  height: 11.636363636363637rem;
+}
+.ui-popup-container .center_liststyle_1btn .ui-popup-button-bg {
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popup-container .center_liststyle_2btn .ui-popup-scroller-bg {
+  width: 100%;
+  overflow: hidden;
+  background: #f8f6ef;
+  height: 11.636363636363637rem;
+}
+.ui-popup-container .center_liststyle_2btn .ui-popup-button-bg {
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popup-container .center_liststyle_2btn .ui-popup-button-bg .ui-btn {
+  width: 5rem;
+  height: 1.6818181818181819rem;
+  margin-top: 0rem;
+  margin-bottom: 0rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  display: inline-block;
+}
+.ui-popup-container .center_liststyle_2btn .ui-popup-button-bg .ui-btn .ui-btn-inner {
+  padding-top: 0.2272727272727273rem;
+  padding-bottom: 0.2272727272727273rem;
+  padding-left: 0.9090909090909092rem;
+  padding-right: 0.9090909090909092rem;
+}
+.ui-popup-container .center_title_2btn .ui-popup-button-bg {
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popup-container .center_title_2btn .ui-popup-button-bg .ui-btn {
+  width: 5.454545454545455rem;
+  height: 1.6818181818181819rem;
+  margin-top: 0rem;
+  margin-bottom: 0rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  display: inline-block;
+}
+.ui-popup-container .center_title_2btn .ui-popup-button-bg .ui-btn .ui-btn-inner {
+  padding-top: 0.2272727272727273rem;
+  padding-bottom: 0.2272727272727273rem;
+  padding-left: 0.9090909090909092rem;
+  padding-right: 0.9090909090909092rem;
+}
+.ui-popup-container .center_liststyle_3btn .ui-popup-scroller-bg {
+  width: 100%;
+  overflow: hidden;
+  background: #f8f6ef;
+  height: 11.636363636363637rem;
+}
+.ui-popup-container .center_liststyle_3btn .ui-popup-button-bg {
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popup-container .center_liststyle_3btn .ui-popup-button-bg .ui-btn {
+  max-width: 3.6363636363636367rem;
+  height: 1.6818181818181819rem;
+  margin-top: 0rem;
+  margin-bottom: 0rem;
+  margin-left: 0.2272727272727273rem;
+  margin-right: 0.2272727272727273rem;
+  display: inline-block;
+}
+.ui-popup-container .center_progressbar {
+  text-align: center;
+}
+.ui-popup-container .center_progressbar .ui-popup-text {
+  font-size: 1.1818181818181819rem;
+  font-color: #999999;
+  background: #2a2d30;
+  width: 100%;
+  height: 3.181818181818182rem;
+}
+.ui-popup-container .center_progressbar .ui-popup-text p {
+  height: 100%;
+  text-align: center;
+  padding: 1rem 0.7272727272727273rem 0rem 0.7272727272727273rem;
+}
+.ui-popup-container .center_progressbar .ui-popup-text-bottom-bg {
+  font-size: 1.1818181818181819rem;
+  font-color: #999999;
+  background: #2a2d30;
+  width: 100%;
+  vertical-align: middle;
+}
+.ui-popup-container .center_progressbar .ui-popup-text-bottom-bg .text-left {
+  width: 40%;
+  height: 2.1818181818181817rem;
+  padding: 0rem 0.7272727272727273rem 0rem 0.7272727272727273rem;
+  text-align: left;
+  display: inline-block;
+}
+.ui-popup-container .center_progressbar .ui-popup-text-bottom-bg .text-right {
+  width: 40%;
+  height: 2.1818181818181817rem;
+  padding: 0rem 0.7272727272727273rem 0rem 0.7272727272727273rem;
+  text-align: right;
+  display: inline-block;
+}
+.ui-popup-container .center_progressbar .ui-popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popup-container .center_progressbar .ui-popup-button-bg .ui-btn {
+  width: 9.136363636363637rem;
+  height: 1.6818181818181819rem;
+  margin: auto;
+}
+.ui-popup-container .center_progressbar .ui-popup-progress-bg {
+  background: #2a2d30;
+  width: 100%;
+  height: 100%;
+}
+.ui-popup-container .centertext_progressbar {
+  text-align: center;
+}
+.ui-popup-container .centertext_progressbar .ui-popup-text {
+  font-size: 1.1818181818181819rem;
+  font-color: #999999;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 1rem;
+  padding-bottom: 0.7272727272727273rem;
+}
+.ui-popup-container .centertext_progressbar .ui-popup-text p {
+  text-align: center;
+}
+.ui-popup-container .centertext_progressbar .ui-popup-text-bottom-bg {
+  font-size: 1.1818181818181819rem;
+  font-color: #999999;
+  background: #2a2d30;
+  width: 100%;
+  vertical-align: middle;
+}
+.ui-popup-container .centertext_progressbar .ui-popup-text-bottom-bg .text-left {
+  width: 40%;
+  height: 1.8181818181818183rem;
+  padding: 0.7272727272727273rem 0.7272727272727273rem 1rem 0.7272727272727273rem;
+  text-align: left;
+  display: inline-block;
+}
+.ui-popup-container .centertext_progressbar .ui-popup-text-bottom-bg .text-right {
+  width: 40%;
+  height: 1.8181818181818183rem;
+  padding: 0.7272727272727273rem 0.7272727272727273rem 1rem 0.7272727272727273rem;
+  text-align: right;
+  display: inline-block;
+}
+.ui-popup-container .centertext_progressbar .ui-popup-button-bg {
+  font-size: 1.4545454545454546rem;
+  background: #2a2d30;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  vertical-align: middle;
+}
+.ui-popup-container .centertext_progressbar .ui-popup-button-bg .ui-btn {
+  width: 18.272727272727273rem;
+  height: 1.6818181818181819rem;
+  margin: auto;
+}
+.ui-popup-container .centertext_progressbar .ui-popup-progress-bg {
+  background: #2a2d30;
+  width: 100%;
+  height: 100%;
+}
+/*
+ * Misc. classes for Tizen web ui framework
+ *
+ * All classes in this file has highest priority.
+ */
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+/* text-ellipsis
+ * elements using this class needs following constraints;
+ *  - width must not be 'auto'
+ *  - display must be 'block' or 'inline-block'
+ */
+.ui-text-ellipsis {
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden !important;
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+/***************************************************************************
+                    Tabbar
+***************************************************************************/
+.ui-tabbar {
+  background: #202327;
+  z-index: 1000;
+}
+
+
+.ui-tabbar a.ui-btn {
+  background: #202327;
+  color: #bababa;
+  padding-top: 0.8636363636363636rem;
+  padding-bottom: 0.8636363636363636rem;
+}
+.ui-tabbar a.ui-btn .ui-btn-inner {
+  padding-top: 0px;
+  padding-bottom: 0px;
+  border-left: 2px solid;
+  border-color: #3b3e40;
+  border-radius: 0px;
+  -0-border-radius: 0px;
+  -ms-border-radius: 0px;
+  -webkit-border-radius: 0px;
+}
+.ui-tabbar a.ui-btn .ui-icon {
+  width: 1.4545454545454546rem;
+  height: 1.4545454545454546rem;
+  background-repeat: no-repeat;
+  background-size: 100% 100%;
+}
+.ui-tabbar.ui-tabbar-persist a.ui-btn {
+  background: #202327;
+}
+.ui-tabbar.ui-tabbar-persist a.ui-state-persist,
+.ui-tabbar.ui-tabbar-persist a.ui-state-persist.ui-btn-active,
+.ui-tabbar.ui-tabbar-persist a.ui-btn-show-style {
+  color: #70a9ee;
+}
+.ui-tabbar.ui-tabbar-persist a.ui-btn-hover-s.ui-btn-down-s:not(.ui-state-persist) {
+  color: #70a9ee;
+  background: -webkit-linear-gradient(top, #000000 0%, #202327 100%);
+}
+.ui-tabbar:not(.ui-tabbar-persist) a.ui-btn {
+  background: #202327;
+}
+.ui-tabbar:not(.ui-tabbar-persist) a.ui-btn-active,
+.ui-tabbar:not(.ui-tabbar-persist) .ui-btn-show-style {
+  color: #70a9ee;
+}
+.ui-tabbar:not(.ui-tabbar-persist) a.ui-btn.ui-btn-hover-s.ui-btn-down-s {
+  color: #70a9ee;
+  background: -webkit-linear-gradient(top, #000000 0%, #202327 100%);
+}
+.ui-tabbar .ui-btn-inner {
+  font-size: 0.6818181818181819rem;
+  font-weight: bold;
+}
+.ui-tabbar .ui-btn-inner .ui-icon {
+  top: 0.4545454545454546rem;
+  left: 50%;
+  margin-left: -0.7272727272727273rem;
+}
+.ui-tabbar.ui-tabbar-notext a.ui-btn {
+  padding-top: 0.5rem;
+  padding-bottom: 0.4545454545454546rem;
+}
+.ui-tabbar.ui-tabbar-notext .ui-btn-inner {
+  height: 1.5454545454545454rem;
+}
+.ui-tabbar.ui-tabbar-notext .ui-btn-inner .ui-icon {
+  top: 0px;
+}
+/* title font size when title tabbar */
+.ui-header.ui-bar-s.ui-title-tabbar .ui-title {
+  font-size: 1rem;
+  margin-top: 0.36363636363636365rem;
+  margin-bottom: 0rem;
+}
+.ui-header.ui-bar-s.ui-title-tabbar .ui-tabbar.ui-tabbar-noicons a.ui-btn {
+  padding-top: 0.6818181818181819rem;
+  padding-bottom: 0.5909090909090909rem;
+}
+.ui-header.ui-bar-s.ui-title-tabbar .ui-tabbar.ui-tabbar-notext a.ui-btn {
+  padding-top: 0.3181818181818182rem;
+  padding-bottom: 0.2272727272727273rem;
+}
+
+
+.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn {
+  padding-top: 0.5rem;
+  padding-bottom: 0.4545454545454546rem;
+}
+.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn .ui-btn-inner {
+  height: 2.4545454545454546rem;
+}
+.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn .ui-btn-inner .ui-btn-text {
+  padding-top: 0px;
+  line-height: 3.8636363636363638rem;
+}
+.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn .ui-btn-inner .ui-icon {
+  top: 0px;
+}
+.ui-header.ui-bar-s li:first-child .ui-btn-inner {
+  border-left-width: 0px;
+}
+.ui-footer.ui-bar-s .ui-tabbar {
+  height: 2.2272727272727275rem;
+  margin-left: auto;
+  margin-right: auto;
+}
+.ui-footer.ui-bar-s .ui-tabbar a.ui-btn {
+  padding-top: 0.7272727272727273rem;
+  padding-bottom: 0.7272727272727273rem;
+}
+.ui-footer.ui-bar-s .ui-tabbar .ui-btn-inner .ui-icon {
+  top: 0px;
+}
+.ui-footer.ui-bar-s .ui-tabbar.ui-tabbar-notext a.ui-btn {
+  padding-top: 0.36363636363636365rem;
+  padding-bottom: 0.3181818181818182rem;
+}
+.ui-footer.ui-bar-s .ui-tabbar li:first-child .ui-btn-inner {
+  border-left-width: 0px;
+}
+.ui-footer.ui-bar-s .ui-tabbar.ui-tabbar-margin-back {
+  margin-right: 2.5454545454545454rem;
+}
+.ui-footer.ui-bar-s .ui-tabbar.ui-tabbar-margin-more {
+  margin-left: 2.5454545454545454rem;
+}
+.ui-footer.ui-bar-s .ui-btn-back ~ .ui-tabbar li:last-child .ui-btn-inner {
+  border-right: 1px solid;
+  border-right-color: #3b3e40;
+}
+.ui-footer.ui-bar-s [data-icon="naviframe-more"] ~ .ui-tabbar li:first-child .ui-btn-inner {
+  border-left: 1px solid;
+  border-left-color: #3b3e40;
+}
+.ui-tabbar-s.ui-navbar-noicons {
+  font-size: 1rem;
+}
+/* Scrollable tabbar */
+.ui-tabbar .tabbar-scroll-ul {
+  margin-top: 0px;
+  margin-bottom: 0px;
+  padding-left: 0px;
+}
+.ui-tabbar .tabbar-scroll-ul .tabbar-scroll-li {
+  position: relative;
+  display: inline-block;
+  margin-left: -0.36363636363636365rem;
+}
+.ui-tabbar .tabbar-scroll-ul .tabbar-scroll-li a {
+  width: 100%;
+}
+.ui-tabbar .tabbar-scroll-ul li.tabbar-scroll-li:first-child {
+  margin-left: 0px;
+}
+.ui-tabbar-divider {
+  position: absolute;
+  top: 0px;
+  width: 0.4545454545454546rem;
+  height: 2.5rem;
+  background: -webkit-linear-gradient(left, #00009b 0%, #f6f8ef 100%);
+}
+.ui-tabbar-divider-left {
+  left: 0px;
+  border-top-right-radius: 0.4545454545454546rem;
+  border-bottom-right-radius: 0.4545454545454546rem;
+  background: -webkit-linear-gradient(left, #999999 0%, #f6f8ef 100%);
+}
+.ui-tabbar-divider-right {
+  right: 0px;
+  border-top-left-radius: 0.4545454545454546rem;
+  border-bottom-left-radius: 0.4545454545454546rem;
+  background: -webkit-linear-gradient(right, #999999 0%, #f6f8ef 100%);
+}
+/****************************
+ * Tizen Common Less Header *
+ ****************************/
+/*
+ * Common definition for theme
+ * 'config.less' in each theme must include this file.
+ */
+/******************************
+  z-index order collection
+ ******************************/
+/******************************
+  Global LESS mixin collection
+ ******************************/
+/***************************************************************************
+                  Body
+***************************************************************************/
+/* B011 : Main Background color */
+/* B012 : Main font color */
+/***************************************************************************
+                   Naviframe
+***************************************************************************/
+/* B042 : title text */
+/* B052L4 : Title text button */
+/* B052L5 : Title text button press */
+/* B052L1P : Title text button press bg */
+/* 00_divider_line.9.png */
+/***************************************************************************
+                   Tabbar
+***************************************************************************/
+/* B0514P1 : 00_tab_press_ef.9.png */
+/* B052L6P */
+/* B052L6 */
+/***************************************************************************
+                   List
+***************************************************************************/
+/* B0211 */
+/* B041        */
+/* B0221 */
+/* W021L1 */
+/* W021L2 */
+/***************************************************************************
+                   Shortcut Scroll
+***************************************************************************/
+/* B0723 : 00_fast_scroll_rollover_bg.9.png */
+/* B0721 : Rollover text */
+/* B0731 : 00_fast_scroll_popup_bg.png */
+/* B0732 : Scroll popup text */
+/***************************************************************************
+                   SearchBar(forms.textinput)
+***************************************************************************/
+/* Search default text */
+/* W301 : 00_search_edit_field_bg.png */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* B061L1 : Popop info */
+/***************************************************************************
+                        Button(connected with other winset)
+***************************************************************************/
+
+
+
+
+
+
+
+
+
+/***************************************************************************
+                        contextual popup
+***************************************************************************/
+/***************************************************************************
+                   Scrollview
+***************************************************************************/
+/***************************************************************************
+                   Date Time picker
+***************************************************************************/
+/***************************************************************************
+                   SegmentControl
+***************************************************************************/
+/* B052L4 : Title text button */
+/***************************************************************************
+                   Popup
+***************************************************************************/
+/* popup_title_bg.png */
+/* maybe not use only popupwindow*/
+
+
+
+/***************************************************************************
+                    Tickernoti
+***************************************************************************/
+/***************************************************************************
+                    Smallpopup
+***************************************************************************/
+/***************************************************************************
+                    Slider
+***************************************************************************/
+/***************************************************************************
+                    Progress
+***************************************************************************/
+/***************************************************************************
+                   Handler
+***************************************************************************/
+/***************************************************************************
+                   multimediaview
+***************************************************************************/
+
+
+/***************************************************************************
+                   tokentextarea
+***************************************************************************/
+/***************************************************************************
+                   Splitview
+***************************************************************************/
+.ui-splitview {
+  margin: 0;
+  padding: 0;
+  position: relative;
+}
+.ui-splitview .ui-pane {
+  position: absolute;
+  overflow: hidden;
+  border: 0;
+  margin: 0;
+  padding: 0;
+}
+.ui-splitview .ui-pane .ui-listview {
+  margin: 0;
+  padding: 0;
+}
+.ui-splitview .ui-spliter {
+  position: absolute;
+  z-index: 100;
+  display: block;
+  margin: 0;
+  padding: 0;
+}
+.ui-splitview .ui-spliter-bar {
+  background-color: #b3b3b3;
+  border-color: black;
+  border-style: solid;
+}
+.ui-splitview .ui-spliter-handle {
+  margin: 0;
+  padding: 0;
+  cursor: move;
+  display: block;
+  text-align: center;
+  cursor: pointer;
+  position: relative;
+  background-position: center center;
+  background-repeat: no-repeat;
+  background-size: 100% 100%;
+}
+.ui-direction-horizontal > .ui-spliter {
+  width: 60px;
+}
+.ui-direction-vertical > .ui-spliter {
+  height: 60px;
+}
+.ui-direction-horizontal > .ui-spliter > .ui-spliter-bar {
+  width: 13px;
+  margin: 0 0 0 25px;
+  border-width: 1px 1px 1px 0;
+}
+.ui-direction-vertical > .ui-spliter > .ui-spliter-bar {
+  height: 13px;
+  margin: 25px 0 0 0;
+  border-width: 0 1px 1px 1px;
+}
+.ui-spliter-active > .ui-spliter-bar {
+  background-color: #5787c2;
+}
+.ui-direction-horizontal > .ui-spliter > .ui-spliter-bar > .ui-spliter-handle {
+  width: 13px;
+  height: 26px;
+  background-image: url(./images/00_splite_handler_v.png);
+}
+.ui-direction-vertical > .ui-spliter > .ui-spliter-bar > .ui-spliter-handle {
+  width: 26px;
+  height: 13px;
+  background-image: url(./images/00_splite_handler_h.png);
+}
+.ui-direction-horizontal > .ui-fixed {
+  width: 0px;
+}
+.ui-direction-horizontal > .ui-fixed > .ui-spliter-bar {
+  width: 5px;
+}
+.ui-direction-vertical > .ui-fixed {
+  height: 0px;
+}
+.ui-direction-vertical > .ui-fixed > .ui-spliter-bar {
+  height: 5px;
+}
+.ui-fixed .ui-spliter-handle {
+  display: none;
+}
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/tizen-web-ui-fw-theme.min.css b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-black/tizen-web-ui-fw-theme.min.css
new file mode 100644 (file)
index 0000000..af8bf5d
--- /dev/null
@@ -0,0 +1 @@
+.ui-bar-s{border:0;background:#202327;color:#70a9ee;font-family:Helvetica,Arial,sans-serif;font-weight:700;font-size:1.2727272727272727rem}.ui-bar-s .ui-link-inherit{color:#70a9ee}.ui-bar-s>.ui-btn.ui-btn-back,.ui-bar-s>.ui-btn.ui-btn-footer-down{background:transparent;position:absolute;right:0}.ui-bar-s>.ui-btn.ui-btn-back .ui-icon-header-back-btn,.ui-bar-s>.ui-btn.ui-btn-footer-down .ui-icon-header-back-btn{top:.36363636363636365rem;left:auto;right:.5909090909090909rem;margin-top:0}.ui-bar-s>.ui-btn.ui-btn-footer-down{border:0;box-shadow:none}.ui-bar-s>.ui-btn.ui-btn-footer-down .ui-icon{top:.36363636363636365rem;margin-top:0}.ui-header.ui-bar-s{position:fixed;top:0;min-height:2.5rem}.ui-header.ui-bar-s .ui-title{display:inline-block;color:#70a9ee;min-height:1.2727272727272727rem;max-height:1.5454545454545454rem;font-size:1.2727272727272727rem;font-weight:500;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important;text-align:left;margin:.7272727272727273rem .36363636363636365rem .2272727272727273rem .36363636363636365rem}.ui-header.ui-bar-s>.ui-btn .ui-btn-inner.ui-btn-icon-only{-o-box-sizing:border-box;-ms-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%}.ui-header.ui-bar-s>.ui-btn .ui-btn-inner.ui-btn-icon-only .ui-icon{top:0}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon-notext) .ui-btn-inner.ui-btn-icon-only{padding-left:0}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon_only){width:2.409090909090909rem;height:.8181818181818182rem;top:auto;bottom:.4545454545454546rem}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon_only) .ui-btn-inner{padding:0}.ui-header.ui-bar-s>.ui-btn.ui-btn-back,.ui-header.ui-bar-s>.ui-btn.ui-btn-footer-down{right:.5909090909090909rem}.ui-header.ui-bar-s>.ui-btn.ui-btn-back .ui-icon-header-back-btn,.ui-header.ui-bar-s>.ui-btn.ui-btn-footer-down .ui-icon-header-back-btn{left:0}.ui-header.ui-bar-s img{display:inline-block;height:.7272727272727273rem;width:.7272727272727273rem;margin-left:.36363636363636365rem}.ui-header.ui-bar-s .ui-title-text-sub{position:absolute;top:1.6363636363636365rem;left:.36363636363636365rem;font-size:.5454545454545454rem}.ui-header.ui-bar-s .ui-title-text-sub img{height:.7272727272727273rem;width:.7272727272727273rem;margin-left:.36363636363636365rem}.ui-header.ui-bar-s>.ui-btn{position:absolute;top:.7272727272727273rem;margin-top:0;height:1.5454545454545454rem;width:1.5454545454545454rem;background:transparent;color:#3a3a3a}.ui-header.ui-bar-s.ui-title-tabbar>.ui-btn{top:.36363636363636365rem}.ui-header.ui-bar-s>.ui-btn.ui-btn-icon_only{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-header.ui-bar-s .ui-btn-right-0{right:.5rem}.ui-header.ui-bar-s .ui-btn-right-1{right:2.5454545454545454rem}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon_only):nth-child(2){right:.3181818181818182rem}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon_only):nth-child(3){right:2.8181818181818183rem}.ui-header.ui-bar-s>img+h1+.ui-btn:not(.ui-btn-icon_only):nth-child(3){right:.3181818181818182rem}.ui-header.ui-bar-s>img+h1+.ui-btn:not(.ui-btn-icon_only):nth-child(3)+.ui-btn:not(.ui-btn-icon_only){right:2.8181818181818183rem}.ui-header.ui-bar-s>img+h1+span.ui-title-text-sub+.ui-btn:not(.ui-btn-icon_only):nth-child(4){right:.3181818181818182rem}.ui-header.ui-bar-s>img+h1+span.ui-title-text-sub+.ui-btn:not(.ui-btn-icon_only):nth-child(4)+.ui-btn:not(.ui-btn-icon_only){right:2.8181818181818183rem}.ui-header.ui-bar-s>.ui-btn.ui-btn-down-s{background:rgba(64,147,247,.1);color:#3b73b6}.ui-header.ui-bar-s.ui-title-multiline .ui-title{min-height:1.0909090909090908rem;max-height:1.0909090909090908rem;font-size:1rem;margin:.4090909090909091rem .36363636363636365rem 1rem .36363636363636365rem}.ui-footer.ui-bar-s{height:2.2272727272727275rem;text-align:center;bottom:0}.ui-footer.ui-bar-s>.ui-btn.ui-btn-back,.ui-footer.ui-bar-s>.ui-btn.ui-btn-footer-down,.ui-footer.ui-bar-s>[data-icon="naviframe-more"]{background:transparent}.ui-footer.ui-bar-s>.ui-btn.ui-btn-back>.ui-btn-icon-only,.ui-footer.ui-bar-s>.ui-btn.ui-btn-footer-down>.ui-btn-icon-only,.ui-footer.ui-bar-s>[data-icon="naviframe-more"]>.ui-btn-icon-only{width:2.5454545454545454rem;height:2.2272727272727275rem;padding:0;-webkit-box-shadow:none}.ui-footer.ui-bar-s>.ui-btn.ui-btn-back,.ui-footer.ui-bar-s>.ui-btn.ui-btn-footer-down{top:0}.ui-footer.ui-bar-s>.ui-btn.ui-btn-footer-down .ui-icon{left:auto;right:.5909090909090909rem}.ui-footer.ui-bar-s [data-icon="naviframe-more"]{position:absolute;left:0rem;top:0rem;box-shadow:none;border-width:0}.ui-footer.ui-bar-s [data-icon="naviframe-more"] .ui-icon-naviframe-more{left:.5909090909090909rem;top:.36363636363636365rem;margin-top:0}.ui-footer.ui-bar-s [data-icon="naviframe-more"] .ui-btn-inner{border:0;background:transparent;box-shadow:none}.ui-footer.ui-bar-s>[data-role="button"]{font-size:.6818181818181819rem;font-weight:700;color:#bababa}.ui-footer.ui-bar-s [data-role="controlgroup"]{margin-left:auto;margin-right:auto;margin-top:.2727272727272727rem;margin-bottom:.2727272727272727rem;padding-left:2.6363636363636362rem;padding-right:2.6363636363636362rem}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"]{background:transparent;border-style:solid;border-color:#3b3e40;border-top-width:0;border-bottom-width:0;border-left-width:1px;border-right-width:1px;-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;box-shadow:none;padding:0;margin-left:-.18181818181818182rem;margin-right:-.2272727272727273rem}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-hover-s{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-down-s,.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-active-s{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-down-s .ui-btn-inner,.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-active-s .ui-btn-inner{background:#202327}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-down-s .ui-btn-inner .ui-btn-text,.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-active-s .ui-btn-inner .ui-btn-text{color:#70a9ee}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"]>.ui-btn-inner{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border:0 solid;box-shadow:none}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-text{font-size:.7727272727272727rem;color:#3a3a3a}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-corner-right{border-right-width:0}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-corner-left{border-left-width:0}.ui-footer.ui-bar-s>[data-role="button"]:not([data-icon="naviframe-more"]){top:.2727272727272727rem}.ui-footer.ui-bar-s>p{margin-top:.36363636363636365rem;margin-bottom:.36363636363636365rem}.ui-footer.ui-bar-s>h1,.ui-footer.ui-bar-s h2,.ui-footer.ui-bar-s h3,.ui-footer.ui-bar-s h4,.ui-footer.ui-bar-s h5,.ui-footer.ui-bar-s h6{display:inline-block}.ui-content{position:relative;top:0}.ui-body-s{border:1px solid #2a2a2a;background:#202327;color:#f9f9f9;font-weight:400;font-family:Helvetica,Arial,sans-serif}.ui-body-s .ui-link-inherit{color:#fff}.ui-body-s .ui-link{color:#2489CE;font-weight:700}.ui-body-s .ui-link:hover{color:#2489CE}.ui-body-s .ui-link:active{color:#2489CE}.ui-body-s .ui-link:visited{color:#2489CE}.ui-btn-box-s{padding:.045454545454545456rem}.ui-btn-box-s.ui-btn-up-s{color:#3a3a3a;background:#202327;background:-webkit-linear-gradient(top, #202327, #202327);background:-moz-linear-gradient(top, #ebe8e3, #eae7e2);background:-o-linear-gradient(top, #ebe8e3, #eae7e2);background:-ms-linear-gradient(top, #ebe8e3, #eae7e2);border:1px solid;border-color:#000;-o-box-shadow:0 0 1px 1px #000;-ms-box-shadow:0 0 1px 1px #000;-moz-box-shadow:0 0 1px 1px #000;-webkit-box-shadow:0 0 1px 1px #000;box-shadow:0 0 1px 1px #000;-o-border-radius:.3rem;-ms-border-radius:.3rem;-moz-border-radius:.3rem;-webkit-border-radius:.3rem;border-radius:.3rem;font-family:Helvetica,Arial,sans-serif;font-weight:400;font-size:1.0rem;font-style:normal;color:#bababa}.ui-btn.ui-btn-corner-all .ui-btn-box-s.ui-btn-up-s{-o-border-radius:1.2rem;-ms-border-radius:1.2rem;-moz-border-radius:1.2rem;-webkit-border-radius:1.2rem;border-radius:1.2rem}.ui-btn-box-s .ui-btn-inner{border:1px solid;border-color:#000;-o-border-radius:.3rem;-ms-border-radius:.3rem;-moz-border-radius:.3rem;-webkit-border-radius:.3rem;border-radius:.3rem;-o-box-sizing:border-box;-ms-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;background:#202327;background:-webkit-linear-gradient(top, #202327, #202327);background:-ms-linear-gradient(top, #faf7f2, #f8f5f0);background:-o-linear-gradient(top, #faf7f2, #f8f5f0);background:-moz-linear-gradient(top, #faf7f2, #f8f5f0);-o-box-shadow:none;-ms-box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;height:100%}.ui-btn.ui-btn-corner-all.ui-btn-box-s .ui-btn-inner{-o-border-radius:1.2rem;-ms-border-radius:1.2rem;-moz-border-radius:1.2rem;-webkit-border-radius:1.2rem;border-radius:1.2rem}.ui-ctxpopup .ui-btn-box-s.ui-btn-up-s,.ui-ctxpopup .ui-btn-box-s.ui-btn-hover-s{background:transparent!important;border:0;box-shadow:none;padding:0;color:#fff!important}.ui-ctxpopup .ui-btn-box-s.ui-btn-down-s{background:#3b73b6!important;border:0;box-shadow:none;padding:0;color:#fff!important;-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-ctxpopup .ui-btn-box-s .ui-btn-inner{background:transparent ! important;box-shadow:none;border:0}.ui-ctxpopup .ui-btn-down-s{background:#3b73b6!important}.ui-header .ui-btn-box-s,.ui-footer .ui-btn-box-s,.ui-btn-back.ui-btn-up-s,.ui-btn-back.ui-btn-hover-s,.ui-btn-back.ui-btn-down-s,.ui-btn-footer-down.ui-btn-up-s,.ui-btn-footer-down.ui-btn-hover-s,.ui-btn-footer-down.ui-btn-down-s,.ui-popup-container .ui-btn-box-s{font-weight:400;-o-border-radius:.9 rem;-ms-border-radius:.9 rem;-moz-border-radius:.9 rem;-webkit-border-radius:.9 rem;border-radius:.9 rem}.ui-btn-box-s.ui-btn-hover-s{color:#3a3a3a;font-family:Helvetica,Arial,sans-serif;font-weight:400;font-size:1.0rem;font-style:normal;color:#bababa;-o-border-radius:.3em ! important;-ms-border-radius:.3em ! important;-moz-border-radius:.3em ! important;-webkit-border-radius:.3em ! important;border-radius:.3em ! important}.ui-btn-box-s.ui-btn-hover-s.ui-btn-corner-circle{-o-border-radius:1em ! important;-ms-border-radius:1em ! important;-moz-border-radius:1em ! important;-webkit-border-radius:1em ! important;border-radius:1em ! important}.ui-btn-box-s.ui-btn-hover-s.ui-btn-corner-all{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn-box-s.ui-btn-hover-s.ui-btn-round{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn-box-s.ui-btn-down-s .ui-btn-inner{background:#3b73b6;color:#fff}.ui-btn-up-s,.ui-btn-hover-s,.ui-btn-down-s{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{color:#3a3a3a;cursor:pointer;text-decoration:none;background:#3b73b6;outline:0}.ui-btn-active a.ui-link-inherit{color:#3a3a3a}.ui-corner-tl{-moz-border-radius-topleft:.3em;-webkit-border-top-left-radius:.3em;border-top-left-radius:.3em}.ui-corner-tr{-moz-border-radius-topright:.3em;-webkit-border-top-right-radius:.3em;border-top-right-radius:.3em}.ui-corner-bl{-moz-border-radius-bottomleft:.3em;-webkit-border-bottom-left-radius:.3em;border-bottom-left-radius:.3em}.ui-corner-br{-moz-border-radius-bottomright:.3em;-webkit-border-bottom-right-radius:.3em;border-bottom-right-radius:.3em}.ui-corner-top{-moz-border-radius-topleft:.3em;-webkit-border-top-left-radius:.3em;border-top-left-radius:.3em;-moz-border-radius-topright:.3em;-webkit-border-top-right-radius:.3em;border-top-right-radius:.3em}.ui-corner-bottom{-moz-border-radius-bottomleft:.3em;-webkit-border-bottom-left-radius:.3em;border-bottom-left-radius:.3em;-moz-border-radius-bottomright:.3em;-webkit-border-bottom-right-radius:.3em;border-bottom-right-radius:.3em}.ui-corner-right{-moz-border-radius-topright:.3em;-webkit-border-top-right-radius:.3em;border-top-right-radius:.3em;-moz-border-radius-bottomright:.3em;-webkit-border-bottom-right-radius:.3em;border-bottom-right-radius:.3em}.ui-corner-left{-moz-border-radius-topleft:.3em;-webkit-border-top-left-radius:.3em;border-top-left-radius:.3em;-moz-border-radius-bottomleft:.3em;-webkit-border-bottom-left-radius:.3em;border-bottom-left-radius:.3em}.ui-corner-none{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-header .ui-btn .ui-btn-icon-only .ui-icon,.ui-footer .ui-btn .ui-btn-icon-only .ui-icon{width:1.4545454545454546rem;height:1.4545454545454546rem}.ui-btn-back .ui-btn-inner .ui-icon-header-back-btn,.ui-btn-footer-down .ui-btn-inner .ui-icon{width:1.4545454545454546rem;height:1.4545454545454546rem;background-repeat:no-repeat;background-size:100% 100%}.ui-btn-up-s{}.ui-btn-up-s .ui-icon-header-back-btn{background-image:url(images/page/00_icon_Back.png)}.ui-btn-up-s .ui-icon-naviframe-more{background-image:url(images/page/00_icon_more.png)}.ui-btn-up-s .ui-icon-naviframe-cancel{background-image:url(images/00_icon_cancel.png)}.ui-btn-up-s .ui-icon-naviframe-edit{background-image:url(images/page/00_icon_edit.png)}.ui-btn-up-s .ui-icon-naviframe-plus{background-image:url(images/page/00_icon_plus.png)}.ui-btn-up-s .ui-icon-down{background-image:url(images/controls/button/00_icon_SIP_close_web_web.png)}.ui-btn-hover-s .ui-icon-header-back-btn{background-image:url(images/page/00_icon_Back.png)}.ui-btn-hover-s .ui-icon-naviframe-more{background-image:url(images/page/00_icon_more.png)}.ui-btn-hover-s .ui-icon-naviframe-cancel{background-image:url(images/00_icon_cancel.png)}.ui-btn-hover-s .ui-icon-naviframe-edit{background-image:url(images/page/00_icon_edit.png)}.ui-btn-hover-s .ui-icon-naviframe-plus{background-image:url(images/page/00_icon_plus.png)}.ui-btn-hover-s .ui-icon-down{background-image:url(images/controls/button/00_icon_SIP_close_web_web.png)}.ui-btn-down-s .ui-icon-header-back-btn{background-image:url(images/page/00_icon_Back_press.png)}.ui-btn-down-s .ui-icon-naviframe-more{background-image:url(images/page/00_icon_more_press.png)}.ui-btn-down-s .ui-icon-naviframe-cancel{background-image:url(images/00_icon_cancel_press.png)}.ui-btn-down-s .ui-icon-naviframe-edit{background-image:url(images/page/00_icon_edit_press.png)}.ui-btn-down-s .ui-icon-naviframe-plus{background-image:url(images/page/00_icon_plus_press.png)}.ui-btn-down-s .ui-icon-down{background-image:url(images/controls/button/00_icon_SIP_close_press_web.png)}.ui-disabled{filter:alpha(opacity=30);opacity:.3;zoom:1}.ui-disabled,.ui-disabled a{cursor:default!important;pointer-events:none}.ui-mobile,.ui-mobile body{height:100%;font-size:22px}@media all and (max-width: 359px){.ui-mobile,.ui-mobile body{ font-size:19px}}.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:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}.ui-mobile,.ui-mobile .ui-page{background:#202327;color:#f9f9f9}.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 *{transform:rotateY(0);-ms-transform:rotateY(0);-moz-transform:rotateY(0);-webkit-transform:rotateY(0);-o-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:1.4545454545454546rem;text-align:center}.ui-loader .ui-icon{position:static;display:block;opacity:.9;margin:0 auto;width:35px;height:35px;background-color:transparent}.ui-blocker{width:100%;height:100%;z-index:2147483647}.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:fixed;z-index:1000}.ui-header .ui-btn-left{top:.4em;float:left}.ui-header .ui-btn-right{float:right;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-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-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden}.in{-ms-animation-timing-function:ease-out;-ms-animation-duration:350ms;-o-animation-timing-function:ease-out;-o-animation-duration:350ms;-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms}.out{-ms-animation-timing-function:ease-in;-ms-animation-duration:225ms;-o-animation-timing-function:ease-in;-o-animation-duration:225;-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225}@-webkit-keyframes fadein{from{ opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{ opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{ opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{ opacity:1}to{opacity:0}}.fade.out{opacity:0;-ms-animation-duration:125ms;-ms-animation-name:fadeout;-o-animation-duration:125ms;-o-animation-name:fadeout;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout}.fade.in{opacity:1;-ms-animation-duration:225ms;-ms-animation-name:fadein;-o-animation-duration:225ms;-o-animation-name:fadein;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein}.viewport-flip{-ms-perspective:1000;-o-perspective:1000;-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-backface-visibility:hidden;-moz-transform:translate3d(0,0,0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{ -webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{ -moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{ -webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{ -moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{ -webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{ -moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{ -webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{ -moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-moz-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-moz-transform-origin:none;-webkit-box-shadow:none;-moz-box-shadow:none}.flow.out{-webkit-transform:translate3d(-100%,0,0) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translate3d(-100%,0,0) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms}.flow.in{-webkit-transform:translate3d(0,0,0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translate3d(0,0,0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms}.flow.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:flowouttoright;-moz-transform:translate3d(100%,0,0);-moz-animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{ -webkit-transform:translate3d(0,0,0) scale(1)}60%,70%{-webkit-transform:translate3d(0,0,0) scale(.7)}100%{-webkit-transform:translate3d(-100%,0,0) scale(.7)}}@-moz-keyframes flowouttoleft{0%{ -moz-transform:translate3d(0,0,0) scale(1)}60%,70%{-moz-transform:translate3d(0,0,0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{ -webkit-transform:translate3d(0,0,0) scale(1)}60%,70%{-webkit-transform:translate3d(0,0,0) scale(.7)}100%{-webkit-transform:translate3d(100%,0,0) scale(.7)}}@-moz-keyframes flowouttoright{0%{ -moz-transform:translate3d(0,0,0) scale(1)}60%,70%{-moz-transform:translate3d(0,0,0) scale(.7)}100%{-moz-transform:translate3d(100%,0,0) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{ -webkit-transform:translate3d(-100%,0,0) scale(.7)}30%,40%{-webkit-transform:translate3d(0,0,0) scale(.7)}100%{-webkit-transform:translate3d(0,0,0) scale(1)}}@-moz-keyframes flowinfromleft{0%{ -moz-transform:translate3d(-100%,0,0) scale(.7)}30%,40%{-moz-transform:translate3d(0,0,0) scale(.7)}100%{-moz-transform:translate3d(0,0,0) scale(1)}}@-webkit-keyframes flowinfromright{0%{ -webkit-transform:translate3d(100%,0,0) scale(.7)}30%,40%{-webkit-transform:translate3d(0,0,0) scale(.7)}100%{-webkit-transform:translate3d(0,0,0) scale(1)}}@-moz-keyframes flowinfromright{0%{ -moz-transform:translate3d(100%,0,0) scale(.7)}30%,40%{-moz-transform:translate3d(0,0,0) scale(.7)}100%{-moz-transform:translate3d(0,0,0) scale(1)}}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:popin;-moz-animation-name:popin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms}.pop.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;opacity:0;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-moz-transform:scale(.8);-webkit-animation-name:popout;-moz-animation-name:popout}@-webkit-keyframes popin{from{ -webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{ -moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{ -webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{ -moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{ -webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromright{from{ -moz-transform:translate3d(100%,0,0)}to{-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideinfromleft{from{ -webkit-transform:translate3d(-100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromleft{from{ -moz-transform:translate3d(-100%,0,0)}to{-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideouttoleft{from{ -webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes slideouttoleft{from{ -moz-transform:translate3d(0,0,0)}to{-moz-transform:translate3d(-100%,0,0)}}@-webkit-keyframes slideouttoright{from{ -webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes slideouttoright{from{ -moz-transform:translate3d(0,0,0)}to{-moz-transform:translate3d(100%,0,0)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms}.slide.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translate3d(-100%,0,0);-moz-animation-name:slideouttoleft}.slide.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromright;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translate3d(100%,0,0);-moz-animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromleft;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideinfromleft}.slidedown.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slidedown.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromtop;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translate3d(0,-100%,0);-moz-transform:translate3d(0,-100%,0);-webkit-animation-name:slideouttotop;-moz-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{ -webkit-transform:translate3d(0,-100%,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromtop{from{ -moz-transform:translate3d(0,-100%,0)}to{-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideouttotop{from{ -webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(0,-100%,0)}}@-moz-keyframes slideouttotop{from{ -moz-transform:translate3d(0,0,0)}to{-moz-transform:translate3d(0,-100%,0)}}.slideup.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slideup.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfrombottom;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translate3d(0,100%,0);-moz-transform:translate3d(0,100%,0);-webkit-animation-name:slideouttobottom;-moz-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{ -webkit-transform:translate3d(0,100%,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfrombottom{from{ -moz-transform:translate3d(0,100%,0)}to{-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideouttobottom{from{ -webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(0,100%,0)}}@-moz-keyframes slideouttobottom{from{ -moz-transform:translate3d(0,0,0)}to{-moz-transform:translate3d(0,100%,0)}}.slideupfade.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slideupfade.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideupfadeinfrombottom;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideupfadeinfrombottom;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slideupfade.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slideupfade.out.reverse{-webkit-transform:translate3d(0,5%,0);-moz-transform:translate3d(0,5%,0);-webkit-animation-name:slideupfadeouttobottom;-moz-animation-name:slideupfadeouttobottom;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slideupfadeinfrombottom{from{ opacity:0;-webkit-transform:translate3d(0,5%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideupfadeinfrombottom{from{ opacity:0;-moz-transform:translate3d(0,5%,0)}to{opacity:1;-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideupfadeouttobottom{from{ opacity:1;-webkit-transform:translate3d(0,0,0)}to{opacity:0;-webkit-transform:translate3d(0,5%,0)}}@-moz-keyframes slideupfadeouttobottom{from{ opacity:1;-moz-transform:translate3d(0,0,0)}to{opacity:0;-moz-transform:translate3d(0,5%,0)}}.slidedownfade.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slidedownfade.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slidedownfadeinfromtop;-moz-transform:translate3d(0,0,0);-moz-animation-name:slidedownfadeinfromtop;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slidedownfade.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slidedownfade.out.reverse{-webkit-transform:translate3d(0,-5%,0);-moz-transform:translate3d(0,-5%,0);-webkit-animation-name:slidedownfadeouttotop;-moz-animation-name:slidedownfadeouttotop;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slidedownfadeinfromtop{from{ opacity:0;-webkit-transform:translate3d(0,-5%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slidedownfadeinfromtop{from{ opacity:0;-moz-transform:translate3d(0,-5%,0)}to{opacity:1;-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slidedownfadeouttotop{from{ opacity:1;-webkit-transform:translate3d(0,0,0)}to{opacity:0;-webkit-transform:translate3d(0,-5%,0)}}@-moz-keyframes slidedownfadeouttotop{from{ opacity:1;-moz-transform:translate3d(0,0,0)}to{opacity:0;-moz-transform:translate3d(0,-5%,0)}}.slidefade.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translate3d(-100%,0,0);-moz-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-animation-duration:225ms}.slidefade.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:fadein;-moz-transform:translate3d(0,0,0);-moz-animation-name:fadein;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translate3d(100%,0,0);-moz-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:fadein;-moz-transform:translate3d(0,0,0);-moz-animation-name:fadein;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.viewport-turn{-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translate3d(0,0,0);-moz-transform-origin:0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-moz-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{ -webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{ -moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{ -webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{ -moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{ -webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{ -moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{ -webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{ -moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}.depth{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%}.depth.out{-webkit-animation-name:depthout;-moz-animation-name:depthout;opacity:0;-webkit-animation-duration:250ms;-moz-animation-duration:250ms;-webkit-animation-timing-function:ease;-moz-animation-timing-function:ease}.depth.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:depthin;-moz-animation-name:depthin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms;-webkit-animation-timing-function:ease;-moz-animation-timing-function:ease}.depth.in.reverse{-webkit-animation-name:depthinreverse;-moz-animation-name:depthinreverse}.depth.out.reverse{-webkit-transform:scale(.9);-moz-transform:scale(.9);-webkit-animation-name:depthoutreverse;-moz-animation-name:depthoutreverse}@-webkit-keyframes depthout{from{ -webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(1.1);opacity:0}}@-moz-keyframes depthout{from{ -moz-transform:scale(1);opacity:1}to{-moz-transform:scale(1.1);opacity:0}}@-webkit-keyframes depthin{0%{ -webkit-transform:scale(.9);opacity:0}30%{-webkit-transform:scale(.9);opacity:0}100%{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes depthin{0%{ -moz-transform:scale(.9);opacity:0}30%{-moz-transform:scale(.9);opacity:0}100%{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes depthinreverse{0%{ -webkit-transform:scale(1.1);opacity:0}30%{-webkit-transform:scale(1.1);opacity:0}100%{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes depthinreverse{0%{ -moz-transform:scale(1.1);opacity:0}30%{-moz-transform:scale(1.1);opacity:0}100%{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes depthoutreverse{from{ -webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.9);opacity:0}}@-moz-keyframes depthoutreverse{from{ -moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.9);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;vertical-align:middle}.ui-btn:focus,.ui-btn:active{outline:0}.ui-header .ui-btn,.ui-footer .ui-btn,.ui-bar .ui-btn{display:inline-block;font-size:.5909090909090909rem;margin:0}.ui-btn-inline{display:inline-block}.ui-btn-inner{padding:.5em .4090909090909091rem;display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative;zoom:1}.ui-btn-icon-notext{width:1.6363636363636365rem;height:1.6363636363636365rem}.ui-btn-icon-notext .ui-btn-inner{padding:.09090909090909091rem .045454545454545456rem .09090909090909091rem .13636363636363635rem}.ui-btn-icon-notext .ui-btn-inner .ui-icon{margin-left:-.7272727272727273rem;margin-top:-.7272727272727273rem}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-45.409090909090914rem}.ui-btn-icon-left .ui-btn-inner{padding-left:1.5rem}.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:1.2272727272727273rem}.ui-btn-icon-right .ui-btn-inner{padding-right:1.5rem}.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:1.2272727272727273rem}.ui-btn-icon-top .ui-btn-inner{padding-top:1.2272727272727273rem}.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:1.2272727272727273rem}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:1.5rem}.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:1.2272727272727273rem}.ui-btn-icon-notext .ui-icon{display:block}.ui-btn-icon-left .ui-icon,.ui-btn-icon-right .ui-icon,.ui-btn-icon-circle .ui-icon{position:absolute}.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:0rem}.ui-btn-icon-circle .ui-icon{left:0rem}.ui-btn-icon-right .ui-icon{right:.4545454545454546rem}.ui-btn-icon-top .ui-icon{top:0rem;margin-top:0}.ui-btn-icon-bottom .ui-icon{bottom:0rem}.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:.18181818181818182rem}.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:.18181818181818182rem}.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:.18181818181818182rem}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:.1;cursor:pointer;background:transparent;font-size:.045454545454545456rem;border:0;line-height:45.409090909090914rem}.ui-btn-text{margin-left:auto;margin-right:auto;padding:0 1px}.ui-li .ui-btn.ui-btn-icon_only{top:50%;margin-top:-.7272727272727273rem}.ui-li .ui-btn .ui-btn-inner.ui-btn-hastxt{padding:.2em .5em}.ui-btn-icon-nobg.ui-btn-down-s .ui-btn-inner{background:transparent ! important}.ui-btn.ui-btn-box-s.ui-btn-down-s .ui-btn-inner{color:#fff}.ui-header .ui-btn-box-s:not(.ui-input-cancel):not(.ui-btn-search-front-icon),.ui-header .ui-btn-box-s:not(.ui-input-cancel):not(.ui-btn-search-front-icon) .ui-btn-inner,.ui-header .ui-btn.ui-btn-box-s.ui-btn-down-s:not(.ui-input-cancel):not(.ui-btn-search-front-icon) .ui-btn-inner,.ui-btn.ui-btn-back.ui-btn-up-s .ui-btn-inner,.ui-btn.ui-btn-back.ui-btn-hover-s .ui-btn-inner,.ui-btn.ui-btn-back.ui-btn-down-s .ui-btn-inner,.ui-btn.ui-btn-footer-down.ui-btn-up-s>.ui-btn-inner,.ui-btn.ui-btn-footer-down.ui-btn-hover-s>.ui-btn-inner,.ui-btn.ui-btn-footer-down.ui-btn-down-s>.ui-btn-inner{background:transparent;border:0;box-shadow:none}.ui-btn-icon-top .ui-btn-inner.ui-btn-hastxt,.ui-li .ui-btn-icon-top .ui-btn-inner.ui-btn-hastxt{padding-top:2.3636363636363638rem}.ui-btn-icon-bottom .ui-btn-inner.ui-btn-hastxt,.ui-li .ui-btn-icon-bottom .ui-btn-inner.ui-btn-hastxt{padding-bottom:2.3636363636363638rem}.ui-btn .ui-icon{width:1.4545454545454546rem;height:1.4545454545454546rem}.ui-btn.ui-btn-edit .ui-icon{width:3.3636363636363638rem;height:3.3636363636363638rem}.ui-btn .ui-btn-text.ui-btn-text-padding-left{padding-left:2rem}.ui-btn .ui-btn-text.ui-btn-text-padding-right{padding-right:2.1818181818181817rem}.ui-btn .ui-btn-text.ui-btn-text-padding-top{padding-top:1.4545454545454546rem}.ui-icon{background-repeat:no-repeat;vertical-align:middle;background-position:0 0;background-size:100%}.ui-btn-box.s .ui-icon{position:absolute}.ui-btn-box-s.ui-btn-icon-left .ui-icon,.ui-btn-box-s.ui-btn-icon-right .ui-icon{margin-top:-.7272727272727273rem;top:50%}.ui-btn-box-s.ui-btn-icon-top .ui-icon,.ui-btn-box-s.ui-btn-icon-bottom .ui-icon{margin-left:-.7272727272727273rem;left:50%}.tizen-icon-common{width:1.4545454545454546rem;height:1.4545454545454546rem}.tizen-smallicon-common{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important}.ui-icon-bg{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_btn_circle_bg_normal.png);z-index:0}.ui-icon-arrow-l{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_left.png)}.ui-icon-arrow-r{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_right.png)}.ui-icon-arrow-u{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_opened.png)}.ui-icon-arrow-d{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_closed.png)}.ui-icon-delete{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_cancel.png)}.ui-icon-plus{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_plus.png)}.ui-icon-minus{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_minus.png)}.ui-icon-check{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_check.png)}.ui-icon-gear{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_gear.png)}.ui-icon-refresh{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_refresh.png)}.ui-icon-forward{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_send.png)}.ui-icon-back{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_back.png)}.ui-icon-grid{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_grid.png)}.ui-icon-star{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_star.png)}.ui-icon-alert{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_warning.png)}.ui-icon-info{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_info.png)}.ui-icon-home{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_home.png)}.ui-icon-search{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_search.png)}.ui-icon-call{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_call.png)}.ui-icon-rename{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_rename.png)}.ui-icon-scrolltop{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important;background-image:url(images/controls/button/00_icon_jump.png)}.ui-icon-scrollleft{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important;background-image:url(images/controls/button/00_icon_jump_left.png)}.ui-icon-expandable-divider-opened{width:1.9090909090909092rem;height:1.9090909090909092rem;position:absolute;right:1.2727272727272727rem;top:0rem;background-repeat:no-repeat;background-size:100% 100%;background-image:url(images/00_indexlist_icon_opened.png)}.ui-icon-expandable-divider-closed{width:1.9090909090909092rem;height:1.9090909090909092rem;position:absolute;right:1.2727272727272727rem;top:0rem;background-repeat:no-repeat;background-size:100% 100%;background-image:url(images/00_indexlist_icon_closed.png)}.ui-btn-down-s .ui-icon-bg,.ui-btn-down-s.ui-tizen-icon-bg{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_btn_circle_bg_press.png);z-index:0}.ui-btn-down-s .ui-icon-arrow-l{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_left_press.png)}.ui-btn-down-s .ui-icon-arrow-r{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_right_press.png)}.ui-btn-down-s .ui-icon-arrow-u{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_opened_press.png)}.ui-btn-down-s .ui-icon-arrow-d{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_closed_press.png)}.ui-btn-down-s .ui-icon-delete{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_cancel_press.png)}.ui-btn-down-s .ui-icon-plus{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_plus_press.png)}.ui-btn-down-s .ui-icon-minus{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_minus_press.png)}.ui-btn-down-s .ui-icon-check{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_check_press.png)}.ui-btn-down-s .ui-icon-gear{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_gear_press.png)}.ui-btn-down-s .ui-icon-refresh{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_refresh_press.png)}.ui-btn-down-s .ui-icon-forward{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_send_press.png)}.ui-btn-down-s .ui-icon-back{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_back_press.png)}.ui-btn-down-s .ui-icon-grid{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_grid_press.png)}.ui-btn-down-s .ui-icon-star{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_star_press.png)}.ui-btn-down-s .ui-icon-alert{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_warning_press.png)}.ui-btn-down-s .ui-icon-info{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_info_press.png)}.ui-btn-down-s .ui-icon-home{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_home_press.png)}.ui-btn-down-s .ui-icon-search{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_search_press.png)}.ui-btn-down-s .ui-icon-call{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_call_press.png)}.ui-btn-down-s .ui-icon-rename{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_rename_press.png)}.ui-btn-down-s .ui-icon-scrolltop{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important;background-image:url(images/controls/button/00_icon_jump_press.png)}.ui-btn-down-s .ui-icon-scrollleft{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important;background-image:url(images/controls/button/00_icon_jump_left_press.png)}.ui-btn-inner.ui-btn-icon-only{padding:.7272727272727273rem .7272727272727273rem}.ui-btn-icon-only .ui-btn-text{display:none;width:0;height:0;overflow:hidden}.ui-btn.ui-btn-corner-all{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn.ui-btn-icon-nobg{box-shadow:none}.ui-btn-corner-circle{-o-border-radius:1em ! important;-ms-border-radius:1em ! important;-moz-border-radius:1em ! important;-webkit-border-radius:1em ! important;border-radius:1em ! important}.ui-btn-round{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn-round .ui-btn-inner{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn.ui-btn-icon-nobg,.ui-btn .ui-btn-icon-nobg{background:transparent;background-color:transparent;border:0}.ui-btn.ui-btn-edit .ui-btn-text{color:#f9f9f9}.ui-btn.ui-btn-edit .ui-btn-inner{background:#c95858;background:-webkit-gradient(linear,left top,left bottom,from( #c95858),to( #a12828));background:-moz_linear-gradient(top, #c95858, #a12828)}.ui-btn-box-s{color:#3a3a3a;background:#202327;background:-webkit-linear-gradient(top, #202327, #202327);background:-moz-linear-gradient(top, #ebe8e3, #eae7e2);background:-o-linear-gradient(top, #ebe8e3, #eae7e2);background:-ms-linear-gradient(top, #ebe8e3, #eae7e2);border:1px solid;border-color:#000;-o-box-shadow:0 0 1px 1px #000;-ms-box-shadow:0 0 1px 1px #000;-moz-box-shadow:0 0 1px 1px #000;-webkit-box-shadow:0 0 1px 1px #000;box-shadow:0 0 1px 1px #000}.ui-collapsible-inset{margin:.5em 0}.ui-collapsible-inset .ui-collapsible-heading{margin:0}.ui-collapsible-inset .ui-collapsible-heading .ui-btn{border-right-width:1px;border-left-width:1px}.ui-collapsible-collapsed+.ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:0}.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:1px}.ui-collapsible-heading,.ui-collapsible-content>li{position:relative}.ui-collapsible-heading{font-size:1rem;display:block;margin:0 -15px;padding:0;position:relative}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width:0}.ui-collapsible-heading .ui-btn-text{color:#f9f9f9}.ui-collapsible-heading .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner{padding-left:12px;padding-right:40px}.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner{padding-right:40px;text-align:center}.ui-collapsible-heading .ui-btn-inner>.ui-icon-arrow-d{-webkit-transition:all .33s ease;-moz-transition:all .33s ease;-ms-transition:all .33s ease;-o-transition:all .33s ease;transition:all .33s ease;-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.ui-collapsible-heading .ui-btn-inner>.ui-icon-arrow-u{background-image:url(images/controls/button/00_button_expand_closed.png);-webkit-transition:all .33s ease;-moz-transition:all .33s ease;-ms-transition:all .33s ease;-o-transition:all .33s ease;transition:all .33s ease;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}.ui-collapsible-heading .ui-btn 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 .ui-btn span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading .ui-btn 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 -15px;padding:0 15px;border-left-width:0;border-right-width:0;border-top:0;background-image:none;visibility:visible;overflow:auto;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-ms-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease}.ui-collapsible-inset .ui-collapsible-content{margin:0;border-right-width:1px;border-left-width:1px}.ui-collapsible-content-collapsed{overflow:hidden;max-height:0!important;visibility:hidden}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible:first-child{margin-top:0}.ui-dialog{min-height:480px}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{margin:15px;position:relative}.ui-dialog .ui-header,.ui-dialog .ui-footer{z-index:10;width:auto}.ui-dialog .ui-header .ui-btn-left{width:0;border-width:0}.ui-dialog .center_info{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center}.ui-dialog .center_info .popup-text{font-size:42px;background:#213c49;width:100%}.ui-dialog .center_info .popup-text p{text-align:center;padding:22px 16px}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox,.ui-radio{position:relative;margin:0}.ui-checkbox .ui-btn-corner-all,.ui-radio .ui-btn-corner-all{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{border-top:0}.ui-checkbox .ui-btn-up-s,.ui-radio .ui-btn-up-s{border:0;background:transparent;font-weight:400}.ui-checkbox .ui-btn-hover-s,.ui-radio .ui-btn-hover-s{border:0;background:transparent;font-weight:400}.ui-checkbox .ui-btn-down-s,.ui-radio .ui-btn-down-s{border:0;background:transparent;font-weight:400}.ui-checkbox input,.ui-radio input{z-index:1;margin:0;left:.4545454545454546rem;position:absolute;outline:0!important}.ui-checkbox>input,.ui-radio>input{display:none}.ui-checkbox .ui-btn,.ui-radio .ui-btn{z-index:2;height:100%;margin:0;text-align:left}.ui-checkbox .ui-btn.ui-btn-icon-left,.ui-radio .ui-btn.ui-btn-icon-left{display:inline-block}.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner{min-width:1.8181818181818183rem;display:inline-block;line-height:1.4545454545454546rem;padding:0 .7272727272727273rem 0 .7272727272727273rem}.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text,.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text{display:inline-block;vertical-align:middle;min-height:1.4545454545454546rem}.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text.ui-btn-text-padding-left,.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text.ui-btn-text-padding-left{padding-left:1.0909090909090908rem}.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-icon,.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-icon{position:absolute;top:50%;width:1.4545454545454546rem;height:1.4545454545454546rem;margin-top:-.7272727272727273rem}.ui-checkbox.favorite input{position:absolute;left:-10000px;height:100%;outline:0!important}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left{display:block}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner{display:inline-block;line-height:1.4545454545454546rem;padding:0 0 0 .7272727272727273rem}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text{display:inline-block;vertical-align:middle}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text.ui-btn-text-padding-left{padding-left:1.0909090909090908rem}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-icon{position:absolute;top:50%;width:1.4545454545454546rem;height:1.4545454545454546rem;margin-top:-.7272727272727273rem}.ui-icon-checkbox-off,.ui-icon-checkbox-on,.favorite .ui-icon-checkbox-off,.favorite .ui-icon-checkbox-on,.ui-icon-checkbox-on-press,.ui-icon-checkbox-off-press,.ui-icon-radio-off,.ui-icon-radio-on,.ui-icon-radio-on-press,.ui-icon-radio-off-press{background-size:100% 100%;background-color:transparent}.ui-icon-checkbox-off{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_check_bg.png)}.ui-icon-checkbox-on{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_check_checking.png),url(images/00_check_bg.png);background-repeat:no-repeat}.ui-icon-checkbox-off-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_check_bg_press.png)}.ui-icon-checkbox-on-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_check_checking.png),url(images/00_check_bg_press.png);background-repeat:no-repeat}.favorite .ui-icon-checkbox-off,.favorite .ui-icon-checkbox-off-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/00_icon_favorite_off.png)}.favorite .ui-icon-checkbox-on,.favorite .ui-icon-checkbox-on-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/00_icon_favorite_on.png)}.ui-icon-radio-off{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_button_radio.png)}.ui-icon-radio-on{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_button_radio_select.png),url(images/00_button_radio.png)}.ui-icon-radio-on-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_button_radio.png)}.ui-icon-radio-off-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_button_radio.png)}.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{.ui-field-contain{ border-width:0;padding:0;margin:.8em 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 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}@-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:400;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em}.ui-select .ui-btn-text{text-overflow:ellipsis;overflow:hidden}.ui-selectmenu{position:absolute;padding:0;z-index:100!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){label.ui-select{ vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-select{width:60%;display:inline-block}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:1rem;line-height:1.2;display:block;font-weight:400;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:.7272727272727273rem;display:block}input.ui-input-text{appearance:none;-webkit-appearance:none}textarea.ui-input-text{height:2.272727272727273rem;width:95%;resize:none;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;-ms-transition:height 200ms linear;transition:height 200ms linear}.ui-input-search{position:relative;padding-right:1.6363636363636365rem;padding-left:1.6363636363636365rem;border:1px solid #999;-webkit-box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999;-moz-box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999;-o-box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999;-ms-box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999;box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999}.ui-input-search input.ui-input-text{width:100%;border:0;background:transparent none;outline:0!important}.ui-input-search .ui-btn-down-s,.ui-input-search .ui-btn-up-s,.ui-input-search .ui-btn-hover-s{border:0;background:transparent none}.ui-input-search .ui-btn-icon-notext.ui-input-clear{width:1.6363636363636365rem;height:1.5rem}.ui-input-search .ui-btn-icon-notext.ui-input-clear .ui-btn-inner{padding:.2727272727272727rem}.ui-input-search .ui-btn-inner .ui-icon-deleteSearch{width:1rem;height:1rem;margin-top:0;margin-left:0}.ui-input-search .ui-input-clear{position:absolute;right:0;top:0;vertical-align:middle}.ui-input-search .ui-input-clear-hidden{display:none}@media all and (min-width: 721px){label.ui-input-text:not([data-type='search']){ vertical-align:top;display:inline-block;margin:0 2% 0 0}input.ui-input-text:not([data-type='search']),textarea.ui-input-text:not([data-type='search']){width:60%;display:inline-block}.ui-input-search input.ui-input-text:not([data-type='search']){width:85%}}.ui-body-s>div>.ui-field-contain>.input-search-bar,.ui-body-s>.ui-field-contain>.input-search-bar{margin:-2.1818181818181817rem -.6818181818181819rem -1.4545454545454546rem -.6818181818181819rem}.input-search-bar{position:relative;background-color:#202327;padding:.5909090909090909rem;vertical-align:middle}.input-search-bar .ui-corner-all{-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.input-search-bar .ui-input-search{font-size:.7272727272727273rem;display:block;position:relative;background-color:#3c4147}.input-search-bar .ui-input-search .ui-input-text{height:1.5rem;padding:0;margin-right:1.7272727272727273rem}.input-search-bar .ui-input-search .ui-image-search{position:absolute;top:0;left:0;width:1rem;height:1rem;margin:.2727272727272727rem}.input-search-bar .ui-input-search-default{margin-right:3.409090909090909rem;-webkit-transition:all 400ms linear;-moz-transition:all 400ms linear;-o-transition:all 400ms linear;-ms-transition:all 400ms linear;transition:all 400ms linear}.input-search-bar .ui-input-search-wide{margin-right:0rem;-webkit-transition:all 400ms linear;-moz-transition:all 400ms linear;-o-transition:all 400ms linear;-ms-transition:all 400ms linear;transition:all 400ms linear}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel{display:inline-block;position:absolute;top:.13636363636363635rem;right:0rem;height:1.5rem;margin-right:.4545454545454546rem;vertical-align:middle;padding:0;border-color:none;width:3.090909090909091rem;-webkit-transition:all 400ms linear;-moz-transition:all 400ms linear;-o-transition:all 400ms linear;-ms-transition:all 400ms linear;transition:all 400ms linear}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel .ui-btn-inner{padding-top:.2727272727272727rem;padding-bottom:.2727272727272727rem}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel .ui-btn-inner .ui-btn-text{font-size:.6818181818181819rem}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel.ui-btn-cancel-hide{right:-3.409090909090909rem;visibility:hidden}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel.ui-btn-cancel-show{right:0;visibility:visible}.input-search-bar .ui-search-bar-icon{margin-left:1.9090909090909092rem}.input-search-bar .ui-btn.ui-btn-search-front-icon{position:absolute;width:1.590909090909091rem;height:1.590909090909091rem;top:.09090909090909091rem;border-radius:3rem}.input-search-bar .ui-btn.ui-btn-search-front-icon>.ui-btn-inner.ui-btn-icon-only{border-radius:3rem}.ui-header .input-search-bar{padding-top:.18181818181818182rem;padding-bottom:.18181818181818182rem}.ui-image-search{background-image:url(images/controls/00_search_icon.png);background-repeat:no-repeat;background-size:100% 100%}.ui-icon-deleteSearch{background-image:url(images/controls/00_field_btn_clear.png);background-repeat:no-repeat;background-size:100% 100%}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0 1em}.ui-bar .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:1em;line-height:1.4;font-weight:400;margin:0 0 .3em}.ui-controlgroup-controls{display:block}.ui-controlgroup li{list-style:none}.ui-controlgroup .ui-btn-inner{white-space:nowrap}.ui-controlgroup .ui-checkbox label label,.ui-controlgroup .ui-radio label{font-size:1em}.ui-controlgroup .ui-radio{width:25%;overflow:hidden}.ui-controlgroup .ui-radio label{text-align:center;white-space:nowrap}.ui-controlgroup .ui-radio-on .ui-btn-inner{background:#202327}.ui-controlgroup .ui-radio-on .ui-btn-inner .ui-btn-text{color:#70a9ee}.ui-controlgroup .ui-corner-left{border-left-width:0}.ui-controlgroup .ui-corner-right{border-right-width:0}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-vertical .ui-radio{width:100%}.ui-controlgroup-vertical .ui-radio label{text-align:left}.ui-controlgroup-vertical .ui-radio label .ui-btn-inner{margin-left:.7272727272727273rem;margin-right:.7272727272727273rem}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal .ui-btn{display:inline-block;margin-left:-.18181818181818182rem;margin-right:-.13636363636363635rem}.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{float:left;margin:0 -1px 0 0}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0}.ui-controlgroup-horizontal [data-role="button"]{border-top:0;border-bottom:0;border-radius:0;box-shadow:none;background:0}.ui-controlgroup-horizontal [data-role="button"].ui-btn-down-s .ui-btn-inner,.ui-controlgroup-horizontal [data-role="button"] .ui-btn-active-s .ui-btn-inner{background:#202327}.ui-controlgroup-horizontal [data-role="button"].ui-btn-down-s .ui-btn-inner .ui-btn-text,.ui-controlgroup-horizontal [data-role="button"] .ui-btn-active-s .ui-btn-inner .ui-btn-text{color:#70a9ee}.ui-controlgroup-horizontal [data-role="button"].ui-btn-down-s .ui-btn-inner{background:-webkit-linear-gradient(top, #000 0, #202327 100%)}.ui-controlgroup-horizontal [data-role="button"]>.ui-btn-inner{border:0 solid;box-shadow:none;padding-top:.2272727272727273rem;padding-bottom:.2272727272727273rem;padding-left:.4545454545454546rem;padding-right:.4545454545454546rem}.ui-controlgroup-horizontal label>span.ui-btn-inner{padding-top:.13636363636363635rem;padding-bottom:.13636363636363635rem}.ui-listview{margin:0;counter-reset:listnumbering;border-top-color:rgba(45,45,45,.5)}.ui-listview li.ui-btn>.ui-btn-hastxt>.ui-btn-text.ui-btn-text-padding-right{padding-right:0rem}.ui-listview .ui-li{border-left-width:0;border-right-width:0;border-top-width:0}.ui-listview .ui-li>.ui-btn-inner{border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgba(45,45,45,.5);margin-left:.5909090909090909rem;margin-right:.5909090909090909rem}.ui-listview .ui-li-static{background-color:#202327;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgba(45,45,45,.5);margin-left:.5909090909090909rem;margin-right:.5909090909090909rem}.ui-listview .ui-li:not(.ui-li-divider):not(.ui-li-static){min-height:2.5rem}.ui-listview .ui-li.ui-li-has-multiline:not(.ui-li-divider):not(.ui-li-static){min-height:2.909090909090909rem}.ui-listview li.ui-btn-up-s,.ui-listview li.ui-btn-hover-s{background:0;background-color:#202327;color:#f9f9f9}.ui-listview li.ui-btn-down-s{background:0;background-color:#5787c2;color:#f9f9f9}.ui-listview li.ui-btn-up-s>.ui-li>.ui-btn-text>a.ui-link-inherit,.ui-listview li.ui-btn-hover-s>.ui-li>.ui-btn-text>a.ui-link-inherit{color:#d7d7d7}.ui-listview li.ui-btn-down-s>.ui-li>.ui-btn-text>a.ui-link-inherit{color:#fff}.ui-content .ui-listview{margin-left:-.36363636363636365rem;margin-right:-.36363636363636365rem;padding-bottom:1px}.ui-content .ui-listview .ui-listview{margin:0}.ui-content .ui-listview-inset{margin:1em 0}.ui-listview,.ui-li,.ui-collapsible-heading{list-style:none;padding:0;font-size:1rem}.ui-li,.ui-collapsible-heading,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left}.ui-li .ui-btn{top:50%;margin-top:-.8em}.ui-li h3,.ui-collapsible-heading h3,.ui-collapsible>.ui-collapsible-content h3,.ui-listview li h3{margin-top:0;margin-bottom:0;font-size:1rem;font-weight:400}.ui-li form,.ui-collapsible-heading form,.ui-collapsible>.ui-collapsible-content form,.ui-listview li form{display:inline-block}.ui-li .ui-btn-text,.ui-collapsible-heading .ui-btn-text,.ui-collapsible>.ui-collapsible-content .ui-btn-text,.ui-listview li .ui-btn-text{position:relative}.ui-li .ui-btn-text a.ui-link-inherit,.ui-collapsible-heading .ui-btn-text a.ui-link-inherit,.ui-collapsible>.ui-collapsible-content .ui-btn-text a.ui-link-inherit,.ui-listview li .ui-btn-text a.ui-link-inherit{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li:last-child,.ui-collapsible-heading:last-child,.ui-collapsible>.ui-collapsible-content:last-child,.ui-listview li:last-child,.ui-li.ui-field-contain:last-child,.ui-collapsible-heading.ui-field-contain:last-child,.ui-collapsible>.ui-collapsible-content.ui-field-contain:last-child,.ui-listview li.ui-field-contain:last-child{border-bottom-width:1px}.ui-li>.ui-btn-inner,.ui-collapsible-heading>.ui-btn-inner,.ui-collapsible>.ui-collapsible-content>.ui-btn-inner,.ui-listview li>.ui-btn-inner,.ui-li.ui-collapsible-heading>.ui-collapsible-heading-toggle,.ui-collapsible-heading.ui-collapsible-heading>.ui-collapsible-heading-toggle,.ui-collapsible>.ui-collapsible-content.ui-collapsible-heading>.ui-collapsible-heading-toggle,.ui-listview li.ui-collapsible-heading>.ui-collapsible-heading-toggle{display:block;position:relative;padding:0;border-width:0}.ui-li>.ui-btn-inner.ui-btn-hastxt,.ui-collapsible-heading>.ui-btn-inner.ui-btn-hastxt,.ui-collapsible>.ui-collapsible-content>.ui-btn-inner.ui-btn-hastxt,.ui-listview li>.ui-btn-inner.ui-btn-hastxt{padding:0 0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-collapsible-heading .ui-btn-inner a.ui-link-inherit,.ui-collapsible>.ui-collapsible-content .ui-btn-inner a.ui-link-inherit,.ui-listview li .ui-btn-inner a.ui-link-inherit,.ui-li .ui-collapsible-heading-toggle>.ui-btn-inner,.ui-collapsible-heading .ui-collapsible-heading-toggle>.ui-btn-inner,.ui-collapsible>.ui-collapsible-content .ui-collapsible-heading-toggle>.ui-btn-inner,.ui-listview li .ui-collapsible-heading-toggle>.ui-btn-inner,.ui-li>li,.ui-collapsible-heading>li,.ui-collapsible>.ui-collapsible-content>li,.ui-listview li>li,.ui-li.ui-li-static,.ui-collapsible-heading.ui-li-static,.ui-collapsible>.ui-collapsible-content.ui-li-static,.ui-listview li.ui-li-static{padding-top:.6818181818181819rem;padding-bottom:.6818181818181819rem;display:block;white-space:normal;border-left-width:0;border-right-width:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-collapsible-heading .ui-btn-inner a.ui-link-inherit,.ui-collapsible>.ui-collapsible-content .ui-btn-inner a.ui-link-inherit,.ui-listview li .ui-btn-inner a.ui-link-inherit,.ui-li .ui-collapsible-heading-toggle,.ui-collapsible-heading .ui-collapsible-heading-toggle,.ui-collapsible>.ui-collapsible-content .ui-collapsible-heading-toggle,.ui-listview li .ui-collapsible-heading-toggle{white-space:normal;overflow:visible!important}.ui-li .ui-toggle-switch:last-child,.ui-collapsible-heading .ui-toggle-switch:last-child,.ui-collapsible>.ui-collapsible-content .ui-toggle-switch:last-child,.ui-listview li .ui-toggle-switch:last-child{top:50%;margin-top:-.7727272727272727rem;display:inline-block;position:absolute;right:0}.ui-li [data-role="button"]:last-child,.ui-collapsible-heading [data-role="button"]:last-child,.ui-collapsible>.ui-collapsible-content [data-role="button"]:last-child,.ui-listview li [data-role="button"]:last-child{position:absolute;right:0}.ui-li .ui-radio:first-child,.ui-collapsible-heading .ui-radio:first-child,.ui-collapsible>.ui-collapsible-content .ui-radio:first-child,.ui-listview li .ui-radio:first-child,.ui-li .ui-checkbox:first-child,.ui-collapsible-heading .ui-checkbox:first-child,.ui-collapsible>.ui-collapsible-content .ui-checkbox:first-child,.ui-listview li .ui-checkbox:first-child{position:absolute;top:50%;margin-top:-.6818181818181819rem;left:-.18181818181818182rem;width:1.3636363636363638rem;height:1.3636363636363638rem}.ui-li .ui-radio:first-child .ui-btn-inner,.ui-collapsible-heading .ui-radio:first-child .ui-btn-inner,.ui-collapsible>.ui-collapsible-content .ui-radio:first-child .ui-btn-inner,.ui-listview li .ui-radio:first-child .ui-btn-inner,.ui-li .ui-checkbox:first-child .ui-btn-inner,.ui-collapsible-heading .ui-checkbox:first-child .ui-btn-inner,.ui-collapsible>.ui-collapsible-content .ui-checkbox:first-child .ui-btn-inner,.ui-listview li .ui-checkbox:first-child .ui-btn-inner{line-height:.9090909090909092rem;color:transparent}.ui-li .ui-radio:first-child .ui-btn-inner .ui-icon,.ui-collapsible-heading .ui-radio:first-child .ui-btn-inner .ui-icon,.ui-collapsible>.ui-collapsible-content .ui-radio:first-child .ui-btn-inner .ui-icon,.ui-listview li .ui-radio:first-child .ui-btn-inner .ui-icon,.ui-li .ui-checkbox:first-child .ui-btn-inner .ui-icon,.ui-collapsible-heading .ui-checkbox:first-child .ui-btn-inner .ui-icon,.ui-collapsible>.ui-collapsible-content .ui-checkbox:first-child .ui-btn-inner .ui-icon,.ui-listview li .ui-checkbox:first-child .ui-btn-inner .ui-icon{left:.2272727272727273rem}.ui-li .ui-radio:first-child label.ui-btn-icon_only,.ui-collapsible-heading .ui-radio:first-child label.ui-btn-icon_only,.ui-collapsible>.ui-collapsible-content .ui-radio:first-child label.ui-btn-icon_only,.ui-listview li .ui-radio:first-child label.ui-btn-icon_only,.ui-li .ui-checkbox:first-child label.ui-btn-icon_only,.ui-collapsible-heading .ui-checkbox:first-child label.ui-btn-icon_only,.ui-collapsible>.ui-collapsible-content .ui-checkbox:first-child label.ui-btn-icon_only,.ui-listview li .ui-checkbox:first-child label.ui-btn-icon_only{top:0;margin-top:0}.ui-li img.ui-li-bigicon,.ui-collapsible-heading img.ui-li-bigicon,.ui-collapsible>.ui-collapsible-content img.ui-li-bigicon,.ui-listview li img.ui-li-bigicon{position:absolute;width:1.590909090909091rem;height:1.590909090909091rem;top:50%;margin-top:-.8181818181818182rem}.ui-li img.ui-li-bigicon:first-child,.ui-collapsible-heading img.ui-li-bigicon:first-child,.ui-collapsible>.ui-collapsible-content img.ui-li-bigicon:first-child,.ui-listview li img.ui-li-bigicon:first-child{left:0}.ui-li img.ui-li-bigicon:nth-child(2),.ui-collapsible-heading img.ui-li-bigicon:nth-child(2),.ui-collapsible>.ui-collapsible-content img.ui-li-bigicon:nth-child(2),.ui-listview li img.ui-li-bigicon:nth-child(2){left:1.6363636363636365rem}.ui-li img.ui-li-bigicon:last-child,.ui-collapsible-heading img.ui-li-bigicon:last-child,.ui-collapsible>.ui-collapsible-content img.ui-li-bigicon:last-child,.ui-listview li img.ui-li-bigicon:last-child{right:.7272727272727273rem}.ui-li .ui-li-color-bar+img.ui-li-bigicon:nth-child(2),.ui-collapsible-heading .ui-li-color-bar+img.ui-li-bigicon:nth-child(2),.ui-collapsible>.ui-collapsible-content .ui-li-color-bar+img.ui-li-bigicon:nth-child(2),.ui-listview li .ui-li-color-bar+img.ui-li-bigicon:nth-child(2){left:0}.ui-li .ui-li-color-bar,.ui-collapsible-heading .ui-li-color-bar,.ui-collapsible>.ui-collapsible-content .ui-li-color-bar,.ui-listview li .ui-li-color-bar{position:absolute;width:.13636363636363635rem;height:100%;top:0rem;left:-.5909090909090909rem;background-color:#000}li.ui-li-thumbnail-right img.ui-li-bigicon.ui-li-thumb{left:auto;right:0;width:2.3181818181818183rem;height:2.3181818181818183rem;margin-top:-1.1363636363636365rem}.ui-li.ui-li-has-multiline .ui-btn-inner a.ui-link-inherit,.ui-li.ui-li-has-multiline.ui-li-static{padding-top:.3181818181818182rem;padding-bottom:1.2727272727272727rem}.ui-li.ui-li-has-multiline a{white-space:normal;overflow:visible!important;padding-right:.7272727272727273rem}.ui-li.ui-li-text-ellipsis .ui-btn-inner a.ui-link-inherit{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li.ui-li-text-ellipsis a{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li.ui-li-text-ellipsis.ui-li-static{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li>input{border-style:none;border-width:0;outline-color:#202327;font-size:1.0454545454545454rem;line-height:1;padding-top:0;padding-bottom:0}.ui-listview li.ui-li-divider{background:#202327;color:#70a9ee;border-bottom-width:0;border-top-width:0;cursor:default;counter-reset:listnumbering;font-weight:700;height:1.7272727272727273rem;font-size:.7272727272727273rem}.ui-listview li.ui-li-divider>.ui-btn-inner>.ui-btn-text{font-size:.7272727272727273rem}.ui-listview li.ui-li-divider.ui-btn{top:0;margin-top:0rem;border-radius:0;font-size:.7272727272727273rem}.ui-listview li.ui-li-divider.ui-btn .ui-btn-inner.ui-btn-hastxt{height:100%;padding-left:0}.ui-listview li.ui-li-divider.ui-btn .ui-btn-inner.ui-btn-hastxt .ui-btn-text{position:absolute;top:.2272727272727273rem;height:.8181818181818182rem;padding-right:.4545454545454546rem}.ui-listview li.ui-li-divider:not(.ui-btn){margin-left:.5454545454545454rem;margin-right:.5454545454545454rem}.ui-listview li.ui-li-divider>.ui-btn-text{position:absolute;top:.2272727272727273rem;height:.8181818181818182rem;padding-right:.4545454545454546rem}.ui-listview li.ui-li-divider[data-style="dialogue"]{height:.9090909090909092rem;padding:0;padding-top:.9090909090909092rem;padding-bottom:0rem;padding-left:.4545454545454546rem;margin-left:.18181818181818182rem;margin-right:.18181818181818182rem;font-size:.7272727272727273rem;font-weight:700;color:#3b73b6;background:#202327}.ui-listview li.ui-li-divider[data-style="check"]{height:1.7272727272727273rem;padding-top:0;padding-bottom:0;padding-left:0}.ui-listview li.ui-li-divider[data-style="check"] label{top:0;margin:0}.ui-listview li.ui-li-divider[data-style="check"] label .ui-btn-inner{z-index:5;position:absolute;width:1.4545454545454546rem;height:1.4545454545454546rem;background:#202327;padding:0}.ui-listview li.ui-li-divider[data-style="check"] .ui-btn-text{padding-left:1.6818181818181819rem}.ui-listview li.ui-li-divider .ui-divider-normal-line{display:inline-block;position:absolute;top:1.0454545454545454rem;width:100%;height:.09090909090909091rem;background:#70a9ee}.ui-listview li.ui-li-divider.ui-btn-down-s{background:#70a9ee;color:#202327}.ui-listview li.ui-li-divider.ui-btn-down-s .ui-divider-normal-line{background:#202327}.ui-listview li.ui-li-divider.ui-btn-down-s label>.ui-btn-inner{background:#70a9ee}.ui-listview li.ui-li-divider+li.ui-li-dialogue{border-top-left-radius:3px;border-top-right-radius:3px}.ui-divider-expand-div{position:absolute;width:4.454545454545455rem;height:1.9090909090909092rem;top:.4545454545454546rem;right:0;border-left-width:1px;border-left-style:solid;border-left-color:rgba(0,0,0,.5)}.ui-li-has-thumb:not(.ui-li-thumbnail-right) .ui-btn-inner a.ui-link-inherit,.ui-li-has-thumb:not(.ui-li-thumbnail-right).ui-li-static{padding-left:2.0454545454545454rem}.ui-li-has-thumb:not(.ui-li-thumbnail-right) .ui-li-text-sub{padding-left:2.0454545454545454rem;padding-right:0}.ui-li-has-checkbox .ui-btn-inner a.ui-link-inherit,.ui-li-has-radio .ui-btn-inner a.ui-link-inherit,.ui-li-has-checkbox.ui-li-static,.ui-li-has-radio.ui-li-static{padding-left:1.6363636363636365rem}.ui-li-has-checkbox .ui-li-text-sub,.ui-li-has-radio .ui-li-text-sub{padding-left:1.6363636363636365rem}.ui-li-has-thumb.ui-li-has-checkbox .ui-btn-inner a.ui-link-inherit,.ui-li-has-thumb.ui-li-has-radio .ui-btn-inner a.ui-link-inherit,.ui-li-has-thumb.ui-li-has-checkbox.ui-li-static,.ui-li-has-thumb.ui-li-has-radio.ui-li-static{padding-left:3.5454545454545454rem}.ui-li-has-thumb.ui-li-has-checkbox .ui-li-text-sub,.ui-li-has-thumb.ui-li-has-radio .ui-li-text-sub{padding-left:3.5454545454545454rem}.ui-li.ui-li-has-right-circle-btn .ui-btn-inner a{padding-right:2.1818181818181817rem}.ui-li.ui-li-has-right-btn:not(.ui-swipe) .ui-btn-inner a{padding-right:3.590909090909091rem}.ui-li.ui-li-thumbnail-right .ui-btn-inner a{padding-right:2.3636363636363638rem}.ui-li.ui-li-static.ui-li-has-right-circle-btn{padding-right:2.1818181818181817rem}.ui-li.ui-li-static.ui-li-has-right-btn:not(.ui-swipe){padding-right:3.590909090909091rem}.ui-li.ui-li-static.ui-li-thumbnail-right{padding-right:2.3636363636363638rem}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-has-icon.ui-li-static{min-height:20px;padding-left:40px}.ui-li-has-icon .ui-li-text-sub{padding-left:40px}.ui-li-heading{font-size:16px;font-weight:700;display:block;margin:.6em 0;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li-thumb,.ui-li-icon{position:absolute;left:1px;top:0;max-height:3.272727272727273rem;max-width:3.272727272727273rem}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-li-sub,.ui-li-sub-setting{float:right;text-align:right;font-size:.7272727272727273rem;margin:.3em 0}.ui-li-text-sub{float:right;text-align:right;font-size:.7272727272727273rem;color:#808080;position:absolute;right:0;top:.9090909090909092rem;width:95%;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li-text-sub>img{position:relative;width:.7727272727272727rem;height:.7727272727272727rem;margin:0 .36363636363636365rem 0 .36363636363636365rem}.ui-li-text-sub2{float:right;text-align:right;font-size:.7272727272727273rem;color:#808080;position:absolute;right:0;top:.7272727272727273rem;width:60%;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li-text-sub2>img{width:.7727272727272727rem;height:.7727272727272727rem;margin:0 0 0 .36363636363636365rem}.ui-li-has-multiline .ui-li-text-sub{position:absolute;text-align:left;right:auto;left:0;top:1.590909090909091rem;margin-top:0;width:90%;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li-has-multiline.ui-li-has-right-btn .ui-btn-inner a .ui-li-text-sub{width:74%}.ui-li-has-multiline.ui-li-has-right-btn.ui-li-has-thumb .ui-btn-inner a .ui-li-text-sub{width:64%}.ui-li-has-multiline.ui-li-static.ui-li-has-right-btn .ui-li-text-sub{width:74%}.ui-li-has-multiline.ui-li-static.ui-li-has-right-btn.ui-li-has-thumb .ui-li-text-sub{width:64%}.ui-li-icon-sub-right,.ui-li-icon-sub{position:absolute;left:auto;width:.7727272727272727rem;height:.7727272727272727rem;margin:0 0}.ui-li-icon-sub-right{right:.36363636363636365rem}.ui-listview li.ui-li-dialogue{margin-left:.18181818181818182rem;margin-right:.18181818181818182rem;padding-left:.4545454545454546rem;padding-right:.4545454545454546rem;border-style:solid;border-color:#0c0f14;border-width:1px;border-top-width:0}.ui-listview li.ui-li-dialogue>.ui-btn-inner{margin-left:0;margin-right:0;border-bottom-width:0}.ui-listview li.ui-li-dialogue:first-child{border-top-width:1px;border-top-left-radius:3px;border-top-right-radius:3px}.ui-listview li.ui-li-dialogue:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.ui-listview li.ui-li-dialogue>img{margin-left:.2727272727272727rem}.ui-listview li.ui-li-dialogue [data-role="button"]:last-child{margin-right:.4545454545454546rem}.ui-listview li.ui-li-dialogue .ui-link-inherit>.ui-btn{margin-right:0}.ui-listview li.ui-li-dialogue.ui-li-static .ui-li-text-sub,.ui-listview li.ui-li-dialogue.ui-li-static .ui-toggle-switch{right:.4545454545454546rem}.ui-listview li.ui-li-dialogue.ui-li-static.ui-li-has-checkbox,.ui-listview li.ui-li-dialogue.ui-li-static.ui-li-has-radio{padding-left:1.6363636363636365rem}.ui-listview li.ui-li-dialogue.ui-li-static .ui-checkbox,.ui-listview li.ui-li-dialogue.ui-li-static .ui-radio{left:0}.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static .ui-li-text-sub{padding-left:.4545454545454546rem}.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static .ui-li-text-sub2{padding-right:.4545454545454546rem}.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static.ui-li-has-checkbox .ui-li-text-sub,.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static.ui-li-has-radio .ui-li-text-sub{padding-left:1.9090909090909092rem}.ui-listview li.ui-li-divider+.ui-li-dialogue{border-top-width:1px}.ui-listview>li.ui-li-dialogue.ui-body-s:not(.ui-li-expanded),.ui-listview>li.ui-li-dialogue.ui-btn-hover-up-s:not(.ui-btn-down-s):not(.ui-li-expanded),.ui-listview>li.ui-li-dialogue.ui-btn-up-s:not(.ui-li-expanded){background:#2a2d30}.ui-listview>li.ui-li-dialogue.ui-li-expanded{padding-left:1.1818181818181819rem;background:#dcdad3}.ui-listview>li.ui-li-dialogue.ui-li-divider{height:1.4545454545454546rem;padding:0}.ui-listview>li.ui-li-group-title{padding-top:1.4545454545454546rem}.ui-listview>li.ui-li-group-title span{padding-left:.7272727272727273rem}.ui-listview>li.ui-li-dialogue-divider{padding-top:.9090909090909092rem;padding-bottom:0rem;padding-left:.4545454545454546rem;margin-left:.18181818181818182rem;margin-right:.18181818181818182rem;background:#2a2d30;font-size:.7272727272727273rem;font-weight:700;color:#3b73b6}.ui-listview li.ui-li-dialogue-edit{padding-left:5.2727272727272725rem;padding-top:.5454545454545454rem;padding-bottom:.5454545454545454rem}.ui-listview li.ui-li-dialogue-edit .ui-edit-title{position:absolute;left:.4545454545454546rem;width:4.136363636363637rem;padding-right:.36363636363636365rem;display:inline-block;top:50%;margin-top:-.5909090909090909rem;border-right-color:#b9b8b2;border-right-width:1px;border-right-style:solid}.ui-listview li.ui-li-dialogue-edit input{font-size:1rem;background:transparent;outline-color:transparent;width:100%;padding-left:0;padding-right:0}.ui-listview>.ui-li.ui-li-dialogue-edit.ui-li-has-right-btn{padding-right:5rem}.ui-listview .ui-li-static.ui-li-bubble-receive,.ui-listview .ui-li-static.ui-li-bubble-left{color:#fff}.ui-listview .ui-li-static.ui-li-bubble-receive>.ui-li-bubble-time,.ui-listview .ui-li-static.ui-li-bubble-left>.ui-li-bubble-time{color:#d30000}.ui-listview .ui-li-static.ui-li-bubble-sent,.ui-listview .ui-li-static.ui-li-bubble-right{color:#000}.ui-listview .ui-li-static.ui-li-bubble-sent>.ui-li-bubble-time,.ui-listview .ui-li-static.ui-li-bubble-right>.ui-li-bubble-time{color:#39a6d7}.ui-listview .ui-li-static.ui-li-bubble-sos{color:#e94949}.ui-listview .ui-li-static.ui-li-bubble-sos>.ui-li-bubble-time{color:#d30000}.ui-listview .ui-li-static.ui-li-bubble-date{background-color:rgba(225,225,225,0);color:#686868;font-style:italic}.ui-listview span.ui-li-bubble-time{font-weight:700}.ui-listview .ui-li-bubble-receive,.ui-listview .ui-li-bubble-left,.ui-listview .ui-li-bubble-sent,.ui-listview .ui-li-bubble-right,.ui-listview .ui-li-bubble-sos{display:inline-block;background-clip:padding-box;max-width:100%;word-wrap:break-word;font-size:.8636363636363636rem}.ui-listview .ui-li-bubble-receive p,.ui-listview .ui-li-bubble-left p,.ui-listview .ui-li-bubble-sent p,.ui-listview .ui-li-bubble-right p,.ui-listview .ui-li-bubble-sos p,.ui-listview .ui-li-bubble-receive span,.ui-listview .ui-li-bubble-left span,.ui-listview .ui-li-bubble-sent span,.ui-listview .ui-li-bubble-right span,.ui-listview .ui-li-bubble-sos span{font-size:.8636363636363636rem}.ui-listview .ui-li-bubble-receive img,.ui-listview .ui-li-bubble-left img,.ui-listview .ui-li-bubble-sent img,.ui-listview .ui-li-bubble-right img,.ui-listview .ui-li-bubble-sos img{position:relative;min-width:7.272727272727273rem;min-height:7.272727272727273rem}.ui-listview .ui-li-bubble-receive,.ui-listview .ui-li-bubble-left{margin-left:0;margin-right:1.6rem;border-image-source:url(images/00_messagebubble_bg_receive.9.png);border-image-slice:57 14 21 48 fill;border-image-width:auto;padding:9px 14px 21px 48px}.ui-listview .ui-li-bubble-receive>.ui-li-bubble-time,.ui-listview .ui-li-bubble-left>.ui-li-bubble-time{position:absolute;display:inline-block;bottom:.36363636363636365rem;left:100%;font-size:.5rem}.ui-listview .ui-li-bubble-sent,.ui-listview .ui-li-bubble-right{margin-left:1.6rem;margin-right:0;border-image-source:url(images/00_messagebubble_bg_sent.9.png);border-image-slice:55 47 20 13 fill;border-image-width:auto;padding:9px 47px 20px 13px}.ui-listview .ui-li-bubble-sent>.ui-li-bubble-time,.ui-listview .ui-li-bubble-right>.ui-li-bubble-time{position:absolute;display:inline-block;bottom:.36363636363636365rem;right:100%;font-size:.5rem}.ui-listview .ui-li-bubble-date{float:left;width:100%;height:1.0909090909090908rem;background-image:url(images/00_messagebubble_date_bg.png);background-repeat:repeat-x;background-position:center center;font-size:.7272727272727273rem;margin:.9090909090909092rem .2727272727272727rem;border:0 none red;padding:0 0;padding-top:.5em;text-align:center}.ui-listview .ui-li-bubble-date *{display:inline-block;background-color:#202327;padding-left:.5em;padding-right:.5em}@-webkit-keyframes addliitem{from{ -webkit-transform:scale(0.5);-moz-transform:scale(0.5);opacity:0}to{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1}}.addli{-webkit-animation-name:addliitem;-moz-animation-name:addliitem;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-webkit-transition-timing-function:linear;-moz-transition-timing-function:linear}@-webkit-keyframes removeliitem{from{ -webkit-transform:scale(1);-moz-transform:scale(1);opacity:1}to{-webkit-transform:scale(0.5);-moz-transform:scale(0.5);opacity:0}}.removeli{-webkit-animation-name:removeliitem;-moz-animation-name:removeliitem;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-webkit-transition-timing-function:linear;-moz-transition-timing-function:linear}.ui-controlgroup .ui-radio>.ui-btn{background:#202327}.ui-controlgroup .ui-btn-text{font-size:.7727272727272727rem;font-weight:700;color:#c7c7c7}.ui-controlgroup .ui-btn-inner .ui-corner-left .ui-controlgroup-first{-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.ui-controlgroup .ui-btn-inner .ui-corner-right .ui-controlgroup-last{-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.ui-controlgroup .ui-radio-off.ui-btn-hover-s.ui-btn-down-s .ui-btn-inner,.ui-controlgroup .ui-radio-on .ui-btn-inner{color:#3b7796}.ui-controlgroup .ui-radio-off .ui-btn-inner{color:#c7c7c7}.ui-controlgroup.ui-controlgroup-horizontal .ui-radio .ui-btn-down-s .ui-btn-inner{background:-webkit-linear-gradient(top, #000 0, #202327 100%)}ul.ui-virtual-list-container>li.position_absolute{position:absolute}ul.ui-virtual-list-container>ul.position_absolute{position:absolute}.ui-scrollview-clip{position:relative}.ui-scrollview-view{overflow-x:hidden;overflow-y:visible}.ui-scrolllistview .ui-li-divider{z-index:10}.ui-scrollbar{position:absolute;overflow:hidden;opacity:0}.ui-scrollbar-visible{opacity:1}.ui-scrollbar-y{top:.09090909090909091rem;right:.09090909090909091rem;bottom:.09090909090909091rem;width:.36363636363636365rem}.ui-scrollbar-x{right:.09090909090909091rem;bottom:.09090909090909091rem;left:.09090909090909091rem;height:.36363636363636365rem}.ui-scrollbar-track{position:relative;width:100%;height:100%}.ui-scrollbar-thumb{position:absolute;top:0;left:0;background-color:#393b41}.ui-scrollbar-y .ui-scrollbar-thumb{width:.2272727272727273rem;height:100%;-o-border-radius:.09090909090909091rem;-ms-border-radius:.09090909090909091rem;-moz-border-radius:.09090909090909091rem;-webkit-border-radius:.09090909090909091rem;border-radius:.09090909090909091rem;-o-box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c;-ms-box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c;-moz-box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c;-webkit-box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c;box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c}.ui-scrollbar-x .ui-scrollbar-thumb{width:100%;height:.2272727272727273rem;-o-border-radius:.09090909090909091rem;-ms-border-radius:.09090909090909091rem;-moz-border-radius:.09090909090909091rem;-webkit-border-radius:.09090909090909091rem;border-radius:.09090909090909091rem}.ui-scroll-jump-top-bg{position:absolute;top:.4090909090909091rem;right:.5909090909090909rem;width:1.6818181818181819rem;height:1.6818181818181819rem}.ui-scroll-jump-left-bg{position:absolute;bottom:.4090909090909091rem;left:.5909090909090909rem;width:1.6818181818181819rem;height:1.6818181818181819rem}.ui-overflow-indicator-top{position:absolute;display:block;top:0;width:100%;height:.4545454545454546rem;opacity:0;background:-webkit-gradient(linear,left bottom,left top,color-stop(0, #bababa),color-stop(1, #202327))}.ui-overflow-indicator-bottom{position:absolute;display:block;bottom:0;width:100%;height:.4545454545454546rem;opacity:0;background:-webkit-gradient(linear,left bottom,left top,color-stop(0, #202327),color-stop(1, #bababa))}.ui-content.ui-scrollview-clip{padding:0}.ui-content.ui-scrollview-clip>div.ui-scrollview-view{margin:0;padding-left:.36363636363636365rem;padding-right:.36363636363636365rem}.ui-content.ui-scrollview-clip>.ui-listview.ui-scrollview-view{margin:0}@-webkit-keyframes ui-datetime-in{from{ -webkit-transform:translateY(0.6363636363636364rem) scale(0.9)}to{-webkit-transform:translateY(0) scale(1)}}@-webkit-keyframes ui-datetime-out{from{ opacity:.8;-webkit-transform:translateY(0) scale(0.6)}to{opacity:0;-webkit-transform:translateY(-.6363636363636364rem) scale(0.6)}}.ui-datefield .ui-datefield-seperator{display:inline-block;min-width:.4545454545454546rem;text-align:center}.ui-datefield .date,.ui-datefield .time,.ui-datefield .ui-datefield-tab{display:inline-block}.ui-datefield .ui-datefield-tab{min-width:.9090909090909092rem}.ui-datefield .ui-btn-box-s .ui-btn-inner.ui-btn-hastxt{padding:.1em .5em}.ui-datefield .ui-datefield-selected{display:inline-block;color:#3b73b6}.ui-datefield .ui-datefield-selected.in{-ms-animation:ui-datetime-in .3s 1 ease;-o-animation:ui-datetime-in .3s 1 ease;-moz-animation:ui-datetime-in .3s 1 ease;-webkit-animation:ui-datetime-in .3s 1 ease}.ui-datefield .ui-datefield-selected.out{-ms-animation:ui-datetime-out .3s 1 ease;-o-animation:ui-datetime-out .3s 1 ease;-moz-animation:ui-datetime-out .3s 1 ease;-webkit-animation:ui-datetime-out .3s 1 ease}.ui-datetime{margin:0;height:1.6363636363636365rem}.ui-datetime-text-main{position:relative;font-size:1rem;top:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding-top:.3em}.ui-datetime-text-main .ui-datefield-period.ui-btn{margin-top:-.3em;height:1.2727272727272727rem;right:auto;position:relative ! important}.ui-datetime-text-sub{top:.6818181818181819rem ! important;color:#70a9ee ! important;background:transparent ! important;font-size:.7272727272727273rem ! important}.ui-datetimepicker-selector ul{padding:0;display:inline;list-style:none;vertical-align:middle;margin:0}.ui-datetimepicker-selector ul li{font-size:1rem;float:left;padding:.6818181818181819rem .18181818181818182rem 0 .18181818181818182rem;max-width:5.454545454545455rem;min-width:2.7272727272727275rem}.ui-datetimepicker-selector ul li a.ui-link{text-decoration:none;color:rgba(255,255,255,.7)}.ui-datetimepicker-selector ul li a.ui-link:hover{color:rgba(255,255,255,.7)}.ui-datetimepicker-selector ul li.current a.ui-link{color:#fff}.ui-datetimepicker{left:0!important;padding:0}.ui-datetimepicker .ui-popupwindow-padding{background:#3b73b6!important;border-radius:0!important;-ms-border-radius:0!important;-o-border-radius:0!important;-moz-border-radius:0!important;-webkit-border-radius:0!important;box-shadow:0 0 12px rgba(0,0,0,.6)!important;border-width:0!important;text-align:center!important}.ui-datetimepicker .ui-popupwindow-padding div{height:2.409090909090909rem}.ui-popupwindow-screen{background:#000;opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;z-index:1200}.ui-popupwindow{position:absolute;z-index:1201!important;color:#f8f6ef;background:#2a2d30}.ui-popupwindow .popup-title{width:100%;height:100%;font-size:1.0909090909090908rem;background:#5093b6}.ui-popupwindow .popup-title p{margin:0rem 0rem;padding:.5909090909090909rem 0rem}.ui-popupwindow .popup-text{width:100%;color:#f9f9f9;font-size:1.0909090909090908rem;background:#2a2d30}.ui-popupwindow .popup-text p{text-align:center;padding:1rem .7272727272727273rem}.ui-popupwindow .center_info{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center}.ui-popupwindow .center_title{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_basic_1btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_basic_1btn .popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_basic_1btn .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .center_basic_2btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_basic_2btn .popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_basic_2btn .popup-button-bg .ui-btn{width:12.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_basic_3btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_basic_3btn .popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_basic_3btn .popup-button-bg .ui-btn{width:8.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_title_1btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_title_1btn .popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_title_1btn .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .center_title_2btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_title_2btn .popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_title_2btn .popup-button-bg .ui-btn{width:12.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_title_3btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_title_3btn .popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_title_3btn .popup-button-bg .ui-btn{width:8.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_button_vertical{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_button_vertical .popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:1px;padding-bottom:.7272727272727273rem;vertical-align:middle}.ui-popupwindow .center_button_vertical .popup-button-bg .ui-btn{width:16.181818181818183rem;height:3.3636363636363638rem;margin-top:.7272727272727273rem;margin-bottom:0rem;margin-left:auto;margin-right:auto}.ui-popupwindow .center_checkbox{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_checkbox .popup-check-bg{font-size:1.0909090909090908rem;background:#2a2d30;width:100%;padding-top:0rem;padding-bottom:1rem;vertical-align:middle}.ui-popupwindow .center_checkbox .popup-check-bg .ui-checkbox .ui-btn{text-align:center;background:#2a2d30;border:0rem}.ui-popupwindow .center_checkbox .popup-check-bg .ui-checkbox .ui-btn .ui-btn-inner{border:0rem}.ui-popupwindow .center_checkbox .popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_checkbox .popup-button-bg .ui-btn{width:12.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_liststyle_1btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_liststyle_1btn .popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:23.272727272727273rem}.ui-popupwindow .center_liststyle_1btn .popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_liststyle_1btn .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .center_liststyle_2btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_liststyle_2btn .popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:23.272727272727273rem}.ui-popupwindow .center_liststyle_2btn .popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_liststyle_2btn .popup-button-bg .ui-btn{width:12.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_liststyle_3btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_liststyle_3btn .popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:23.272727272727273rem}.ui-popupwindow .center_liststyle_3btn .popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_liststyle_3btn .popup-button-bg .ui-btn{width:8.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_progressbar{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_progressbar .popup-text{font-size:1.1818181818181819rem;font-color:#999;background:#2a2d30;width:100%;height:3.181818181818182rem}.ui-popupwindow .center_progressbar .popup-text p{height:100%;text-align:center;padding:1rem .7272727272727273rem 0rem .7272727272727273rem}.ui-popupwindow .center_progressbar .popup-text-bottom-bg{font-size:1.1818181818181819rem;font-color:#999;background:#2a2d30;width:100%;vertical-align:middle}.ui-popupwindow .center_progressbar .popup-text-bottom-bg .text-left{width:40%;height:2.1818181818181817rem;padding:0rem .7272727272727273rem 0rem .7272727272727273rem;text-align:left;display:inline-block}.ui-popupwindow .center_progressbar .popup-text-bottom-bg .text-right{width:40%;height:2.1818181818181817rem;padding:0rem .7272727272727273rem 0rem .7272727272727273rem;text-align:right;display:inline-block}.ui-popupwindow .center_progressbar .popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_progressbar .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .center_progressbar .popup-progress-bg{background:#2a2d30;width:100%;height:100%}.ui-popupwindow .centertext_progressbar{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .centertext_progressbar .popup-text{font-size:1.1818181818181819rem;font-color:#999;background:#2a2d30;width:100%;padding-top:1rem;padding-bottom:.7272727272727273rem}.ui-popupwindow .centertext_progressbar .popup-text p{text-align:center}.ui-popupwindow .centertext_progressbar .popup-text-bottom-bg{font-size:1.1818181818181819rem;font-color:#999;background:#2a2d30;width:100%;vertical-align:middle}.ui-popupwindow .centertext_progressbar .popup-text-bottom-bg .text-left{width:40%;height:1.8181818181818183rem;padding:.7272727272727273rem .7272727272727273rem 1rem .7272727272727273rem;text-align:left;display:inline-block}.ui-popupwindow .centertext_progressbar .popup-text-bottom-bg .text-right{width:40%;height:1.8181818181818183rem;padding:.7272727272727273rem .7272727272727273rem 1rem .7272727272727273rem;text-align:right;display:inline-block}.ui-popupwindow .centertext_progressbar .popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .centertext_progressbar .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .centertext_progressbar .popup-progress-bg{background:#2a2d30;width:100%;height:100%}.ui-popupwindow .ui-btn.ui-btn-hover-s{background:#5e88a3}.ui-popupwindow .ui-btn.ui-btn-down-s{background:#43a0d9;background:-webkit-gradient(linear,left top,left bottom,from( #43a0d9),to( #388bb9));background:-moz-linear-gradient(top, #43a0d9, #388bb9);background:-ms-linear-gradient(top, #43a0d9, #388bb9);background:-o-linear-gradient(top, #43a0d9, #388bb9)}.ui-popupwindow>.ui-volumecontrol{display:table;margin:auto;background:rgba(0,0,0,.666667);width:18.90909090909091rem;height:30.727272727272727rem;padding-top:1rem}.ui-popupwindow>.ui-volumecontrol h1{font-size:1.0909090909090908rem;display:table;margin:auto;color:#c0c0c0}.ui-popupwindow>.ui-volumecontrol .ui-volumecontrol-icon{display:table;width:100%;height:5.818181818181818rem;padding-top:.9545454545454546rem;padding-bottom:.9545454545454546rem;padding-left:7.5rem;padding-right:7.5rem}.ui-popupwindow>.ui-volumecontrol .ui-volumecontrol-indicator{display:table;width:100%;height:19.09090909090909rem;padding-left:3.090909090909091rem;padding-right:3.090909090909091rem}.ui-popupwindow>.ui-volumecontrol .ui-corner-all{-o-border-radius:.3em!important;-ms-border-radius:.3em!important;-moz-border-radius:.3em!important;-webkit-border-radius:.3em!important;border-radius:.3em!important}.ui-popupwindow-corner-all{-o-border-radius:0!important;-ms-border-radius:0!important;-moz-border-radius:0!important;-webkit-border-radius:0!important;border-radius:0!important}.ui-ctxpopup{display:table}.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-top{top:2px}.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-left{left:2px}.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-right{right:2px}.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-bottom{bottom:2px}.ui-ctxpopup .ui-ctxpopup-row{display:table-row}.ui-ctxpopup .ui-ctxpopup-row .ui-ctxpopup-cell{display:table-cell}.ui-ctxpopup .ui-ctxpopup-row .ui-popupwindow-padding{background:#444;border:0;-ms-box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);-o-box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);-moz-box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);-webkit-box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.ui-ctxpopup .ui-listview li.ui-btn-up-s,.ui-ctxpopup .ui-listview li.ui-btn-hover-s{background:transparent}.ui-ctxpopup .ui-listview li:last-child{border-bottom-left-radius:.3em;border-bottom-right-radius:.3em}.ui-ctxpopup .ui-listview li:first-child{border-top-left-radius:.3em;border-top-right-radius:.3em}.ui-ctxpopup .ui-listview{max-width:28.181818181818183rem;border:0}.ui-ctxpopup .ui-listview>.ui-li{color:#fff;border-bottom-color:#2d2d2d;border-top-width:1px;border-top-color:#5b5b5b;margin-left:0;margin-right:0}.ui-ctxpopup .ui-listview>.ui-li:first-child,.ui-ctxpopup .ui-listview>.ui-li:last-child{border-top-width:0}.ui-ctxpopup .ui-listview>.ui-li .ui-btn-inner{margin:0;padding-left:.4545454545454546rem;padding-right:.4545454545454546rem}.ui-ctxpopup .ui-listview li.ui-btn-up-s>.ui-li>.ui-btn-text>a.ui-link-inherit,.ui-ctxpopup .ui-listview li.ui-btn-hover-s>.ui-li>.ui-btn-text>a.ui-link-inherit,.ui-ctxpopup .ui-listview li.ui-btn-down-s>.ui-li>.ui-btn-text>a.ui-link-inherit{color:#fff}.ui-ctxpopup .ui-listview>.ui-li:last-child{border:0}.ui-ctxpopup .horizontal{color:#fff}.ui-ctxpopup .horizontal .icon .ui-btn{padding:0;background:transparent ! important}.ui-ctxpopup .horizontal .icon .ui-btn .ui-btn-icon-only{width:4.363636363636363rem;height:2.909090909090909rem;padding:0}.ui-ctxpopup .horizontal .icon .ui-btn .ui-icon{top:0;height:inherit;width:inherit;margin:0;background-position:center;-ms-background-size:2.1818181818181817rem 2.1818181818181817rem;-moz-background-size:2.1818181818181817rem 2.1818181818181817rem;-o-background-size:2.1818181818181817rem 2.1818181818181817rem;-webkit-background-size:2.1818181818181817rem 2.1818181818181817rem;background-size:2.1818181818181817rem 2.1818181818181817rem}.ui-ctxpopup .horizontal .text{padding:0 .4545454545454546rem;min-width:2.1818181818181817rem}.ui-ctxpopup .horizontal a.ui-link{color:#fff;text-decoration:none}.ui-ctxpopup .horizontal ul{padding:0;display:inline-block;list-style:none;vertical-align:middle;margin:0}.ui-ctxpopup .horizontal li{line-height:1.4545454545454546rem;min-height:1.4545454545454546rem;min-width:2.1818181818181817rem;float:left;display:inline-block;border-right:1px solid #5b5b5b;text-align:center}.ui-ctxpopup .horizontal li:first-of-type{border-top-left-radius:.3em;border-bottom-left-radius:.3em;border-top-right-radius:0 ! important;border-left:0}.ui-ctxpopup .horizontal li:last-of-type{border-top-right-radius:.3em;border-bottom-right-radius:.3em;border-right:0;margin-right:0}.ui-ctxpopup .horizontal .ui-li:first-child,.ui-ctxpopup .horizontal .ui-li:last-child{border-left-width:0}.ui-ctxpopup .horizontal li:active,.ui-ctxpopup .horizontal td:active{background:#3b73b6}.ui-ctxpopup .button table .ui-btn{margin:0rem;padding:0;height:2.5454545454545454rem;width:6rem}.ui-arrow{border-style:solid;border-width:10px;width:0;height:0;position:absolute}.ui-arrow.top{border-color:transparent transparent #444 transparent}.ui-arrow.left{border-color:transparent transparent transparent #444}.ui-arrow.right{border-color:transparent #444 transparent transparent}.ui-arrow.bottom{border-color:#444 transparent transparent transparent}.ui-ctxpopup-container{z-index:1200;display:inline-bloack;position:absolute;padding:0;outline:0}.ui-ctxpopup-container .ui-popup{border:0;background:#444;-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.ui-ctxpopup-container .ui-listview li:first-child{border-top-left-radius:.3em;border-top-right-radius:.3em}.poptop{-webkit-transform-origin:0 0;-moz-transform-origin:0 0}.poptop.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:scalepopin;-moz-animation-name:scalepopin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms}.poptop.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;opacity:0;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.poptop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein}.poptop.out.reverse{-webkit-transform:scale(0.8);-moz-transform:scale(0.8);-webkit-animation-name:scalepopout;-moz-animation-name:scalepopout}@-webkit-keyframes scalepopin{from{ -webkit-transform:scale(0.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}.popbottom{-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%}.popbottom.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:scalepopin;-moz-animation-name:scalepopin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms}.popbottom.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;opacity:0;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.popbottom.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein}.popbottom.out.reverse{-webkit-transform:scale(0.8);-moz-transform:scale(0.8);-webkit-animation-name:scalepopout;-moz-animation-name:scalepopout}@-moz-keyframes scalepopin{from{ -moz-transform:scale(0.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes scalepopout{from{ -webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(0.8);opacity:0}}@-moz-keyframes scalepopout{from{ -moz-transform:scale(1);opacity:1}to{-moz-transform:scale(0.8);opacity:0}}@-webkit-keyframes ui-scale-animation{from{ -webkit-transform:scaleX(0)}to{-webkit-transform:scaleX(1)}}.ui-progressbar-value{height:100%;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0, #3677c3),color-stop(1, #1d1f22));-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem;-o-box-shadow:-1px -1px 1px #b3c8e2;-ms-box-shadow:-1px -1px 1px #b3c8e2;-moz-box-shadow:-1px -1px 1px #b3c8e2;-webkit-box-shadow:-1px -1px 1px #b3c8e2;box-shadow:-1px -1px 1px #b3c8e2}.ui-progressbar-bg{position:relative;overflow:hidden;top:.2272727272727273rem;height:.3181818181818182rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem;border:1px;border-style:solid;border-color:#1d1f22;-o-box-shadow:1px -1px 1px #1d1f22;-ms-box-shadow:1px -1px 1px #1d1f22;-moz-box-shadow:1px -1px 1px #1d1f22;-webkit-box-shadow:1px -1px 1px #1d1f22;box-shadow:1px -1px 1px #1d1f22;background-color:#000}.ui-progressbar{position:relative;margin-top:.8181818181818182rem;margin-bottom:.8181818181818182rem;margin-left:.9545454545454546rem;margin-right:.9545454545454546rem;height:.8181818181818182rem;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0, #1d1f22),color-stop(1, #000));-o-box-shadow:1px 1px 0 #fff;-ms-box-shadow:1px 1px 0 #fff;-moz-box-shadow:1px 1px 0 #fff;-webkit-box-shadow:1px 1px 0 #fff;box-shadow:1px 1px 0 #fff;-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem}@-webkit-keyframes ui-rotate-animation{from{ -webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}.ui-progress-container-circle{position:absolute}.ui-li .ui-progress-container-circle{top:22%}.ui-progress-circle{position:relative;top:0;height:1.4545454545454546rem;width:1.4545454545454546rem;background:url(images/00_list_process_01.png) no-repeat;-ms-background-size:1.4545454545454546rem 1.4545454545454546rem;-moz-background-size:1.4545454545454546rem 1.4545454545454546rem;-o-background-size:1.4545454545454546rem 1.4545454545454546rem;-webkit-background-size:1.4545454545454546rem 1.4545454545454546rem;background-size:1.4545454545454546rem 1.4545454545454546rem}.ui-progress-circle-running{-webkit-animation:ui-rotate-animation 1s infinite linear}@-webkit-keyframes ui-move-animation{from{ -webkit-transform:translateY(-.6363636363636364rem)}to{-webkit-transform:translateY(0)}}.ui-progress-pending{position:relative;top:0;width:100%;height:.9545454545454546rem;padding-top:0;padding-bottom:0;background:-webkit-gradient(linear,left top,right bottom,color-stop(0%,rgba(0,0,0,0)),color-stop(25%,rgba(0,0,0,0)),color-stop(25%, #3677c3),color-stop(50%, #3677c3),color-stop(50%,rgba(0,0,0,0)),color-stop(75%,rgba(0,0,0,0)),color-stop(75%, #3677c3));background-color:#000;-ms-background-size:.6363636363636364rem .6363636363636364rem;-moz-background-size:.6363636363636364rem .6363636363636364rem;-o-background-size:.6363636363636364rem .6363636363636364rem;-webkit-background-size:.6363636363636364rem .6363636363636364rem;background-size:.6363636363636364rem .6363636363636364rem}.ui-progress-pending-running{-webkit-animation:ui-move-animation .5s infinite linear}label.ui-slider{display:block}select.ui-slider-switch{display:none}.ui-slider-container{position:relative;vertical-align:middle;height:.8181818181818182rem;margin-left:.7272727272727273rem;margin-right:.7272727272727273rem;margin-top:.8181818181818182rem;margin-bottom:.8181818181818182rem;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0, #1d1f22),color-stop(1, #000));-o-box-shadow:1px 1px 0 #fff;-ms-box-shadow:1px 1px 0 #fff;-moz-box-shadow:1px 1px 0 #fff;-webkit-box-shadow:1px 1px 0 #fff;box-shadow:1px 1px 0 #fff;-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem}.ui-li>.ui-slider-container{margin-top:0;margin-bottom:0}.ui-slider-left-volume,.ui-slider-left-bright{position:absolute;vertical-align:middle;top:-.5rem;left:-2.272727272727273rem;height:1.6818181818181819rem;width:1.6818181818181819rem;background:url(images/controls/00_slider_button_brightness_01.png) no-repeat;-ms-background-size:1.6818181818181819rem 1.6818181818181819rem;-moz-background-size:1.6818181818181819rem 1.6818181818181819rem;-o-background-size:1.6818181818181819rem 1.6818181818181819rem;-webkit-background-size:1.6818181818181819rem 1.6818181818181819rem;background-size:1.6818181818181819rem 1.6818181818181819rem}.ui-slider-left-volume{background:url(images/controls/00_slider_button_volume_01.png) no-repeat;-ms-background-size:1.6818181818181819rem 1.6818181818181819rem;-moz-background-size:1.6818181818181819rem 1.6818181818181819rem;-o-background-size:1.6818181818181819rem 1.6818181818181819rem;-webkit-background-size:1.6818181818181819rem 1.6818181818181819rem;background-size:1.6818181818181819rem 1.6818181818181819rem}.ui-slider-right-volume,.ui-slider-right-bright{position:absolute;top:-.5rem;right:-2.272727272727273rem;height:1.6818181818181819rem;width:1.6818181818181819rem;vertical-align:middle;background:url(images/controls/00_slider_button_brightness_02.png) no-repeat;-ms-background-size:1.6818181818181819rem 1.6818181818181819rem;-moz-background-size:1.6818181818181819rem 1.6818181818181819rem;-o-background-size:1.6818181818181819rem 1.6818181818181819rem;-webkit-background-size:1.6818181818181819rem 1.6818181818181819rem;background-size:1.6818181818181819rem 1.6818181818181819rem}.ui-slider-right-volume{background:url(images/controls/00_slider_button_volume_02.png) no-repeat;-ms-background-size:1.6818181818181819rem 1.6818181818181819rem;-moz-background-size:1.6818181818181819rem 1.6818181818181819rem;-o-background-size:1.6818181818181819rem 1.6818181818181819rem;-webkit-background-size:1.6818181818181819rem 1.6818181818181819rem;background-size:1.6818181818181819rem 1.6818181818181819rem}.ui-slider-left-text{position:absolute;top:-.5rem;height:1.6818181818181819rem;text-align:center;color:#bababa}.ui-slider-right-text{position:absolute;top:-.5rem;height:1.6818181818181819rem;text-align:center;color:#bababa}div.ui-slider:not(.ui-toggle-switch){position:relative;top:.2272727272727273rem;height:.3181818181818182rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem;border:1px;border-style:solid;border-color:#1d1f22;-o-box-shadow:1px 1px 0 #fff;-ms-box-shadow:1px 1px 0 #fff;-moz-box-shadow:1px 1px 0 #fff;-webkit-box-shadow:1px 1px 0 #fff;box-shadow:1px 1px 0 #fff;background-color:#000}div.ui-slider:not(.ui-toggle-switch) .ui-btn{top:-.75rem;margin-top:0}div.ui-slider:not(.ui-toggle-switch) .ui-btn-inner{padding:.3rem 0 0 0}div.ui-slider:not(.ui-toggle-switch) .ui-btn-text{color:#fff}a.ui-slider-handle{position:relative;z-index:10;width:1.6363636363636365rem;height:1.6363636363636365rem;margin-left:-.8636363636363636rem;color:#fff;font-size:.95rem;background:url(images/controls/00_slider_handle.png) no-repeat;-ms-background-size:1.6363636363636365rem 1.6363636363636365rem;-moz-background-size:1.6363636363636365rem 1.6363636363636365rem;-o-background-size:1.6363636363636365rem 1.6363636363636365rem;-webkit-background-size:1.6363636363636365rem 1.6363636363636365rem;background-size:1.6363636363636365rem 1.6363636363636365rem}.ui-slider-popup{position:absolute!important;z-index:1200;width:2.0454545454545454rem;height:2.4545454545454546rem;padding-top:.1rem;color:#f9f9f9;text-align:center;font-size:1.5rem;background:url(images/controls/00_slider_popup_bg.png) no-repeat;-ms-background-size:2.0454545454545454rem 2.4545454545454546rem;-moz-background-size:2.0454545454545454rem 2.4545454545454546rem;-o-background-size:2.0454545454545454rem 2.4545454545454546rem;-webkit-background-size:2.0454545454545454rem 2.4545454545454546rem;background-size:2.0454545454545454rem 2.4545454545454546rem}.ui-slider-bg{position:absolute;height:.3181818181818182rem;width:0;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0, #3677c3),color-stop(1, #1d1f22));-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem;-o-box-shadow:-1px -1px 1px #b3c8e2;-ms-box-shadow:-1px -1px 1px #b3c8e2;-moz-box-shadow:-1px -1px 1px #b3c8e2;-webkit-box-shadow:-1px -1px 1px #b3c8e2;box-shadow:-1px -1px 1px #b3c8e2}.ui-slider-handle-press{position:absolute;z-index:15;width:1.6818181818181819rem;height:1.6818181818181819rem;background:url(images/controls/00_slider_handle_press.png) no-repeat;-ms-background-size:1.6363636363636365rem 1.6363636363636365rem;-moz-background-size:1.6363636363636365rem 1.6363636363636365rem;-o-background-size:1.6363636363636365rem 1.6363636363636365rem;-webkit-background-size:1.6363636363636365rem 1.6363636363636365rem;background-size:1.6363636363636365rem 1.6363636363636365rem}.ui-gallery{position:relative;width:100%}.ui-gallery-bg{display:none;position:absolute;text-align:center;width:100%}@-webkit-keyframes ui-ticker-show{from{ opacity:0;-webkit-transform:translateY(-2.272727272727273rem);top:-2.272727272727273rem}to{opacity:1;-webkit-transform:translateY(0);top:0}}@-webkit-keyframes ui-ticker-hide{from{ opacity:1;-webkit-transform:translateY(0);top:0}to{opacity:0;-webkit-transform:translateY(-2.272727272727273rem);top:-2.272727272727273rem}}.ui-ticker{position:fixed;display:none;left:0;width:100%;height:2.272727272727273rem;z-index:2147483547;background:#444}.ui-ticker.fix{display:block;top:0}.ui-ticker.show{display:block;-ms-animation:ui-ticker-show .8s 1 ease;-o-animation:ui-ticker-show .8s 1 ease;-moz-animation:ui-ticker-show .8s 1 ease;-webkit-animation:ui-ticker-show .8s 1 ease;top:0}.ui-ticker.hide{display:block;-o-animation:ui-ticker-hide .8s 1 ease;-ms-animation:ui-ticker-hide .8s 1 ease;-webkit-animation:ui-ticker-hide .8s 1 ease;top:-2.272727272727273rem}.ui-ticker-btn{position:relative;margin-top:.4545454545454546rem;margin-left:.36363636363636365rem;margin-right:.36363636363636365rem;vertical-align:middle;float:right}.ui-ticker-btn .ui-btn-inner{padding:.15rem 0 0 0;height:1.2727272727272727rem;width:3.5rem;font-size:.81rem;color:#fff;background:#404040;border:1px;border-color:#323232;box-shadow:0 0 1px 1px #323232}.ui-ticker-btn .ui-btn-box-s.ui-btn-up-s{background:#404040;box-shadow:0 0 1px 1px #323232;border-color:#323232}.ui-ticker-btn .ui-btn-box-s.ui-btn-hover-s{background:#404040;box-shadow:0 0 1px 1px #323232;border-color:#323232}.ui-ticker-icon{position:absolute;top:0;height:1.4545454545454546rem;width:1.4545454545454546rem;margin-top:.4090909090909091rem;margin-bottom:.4090909090909091rem;margin-left:.36363636363636365rem;margin-right:.36363636363636365rem;vertical-align:middle}.ui-ticker-text1-bg{position:absolute;top:0;height:.8181818181818182rem;left:2.1818181818181817rem;margin-top:.36363636363636365rem;font-size:.68rem;color:#fff}.ui-ticker-text2-bg{position:absolute;top:0;height:.7272727272727273rem;left:2.1818181818181817rem;margin-top:1.1818181818181819rem;font-size:.54rem;color:#fff}@-webkit-keyframes ui-smallpopup-show{from{ opacity:0;-webkit-transform:scaleY(0)}to{opacity:1;-webkit-transform:scaleY(1)}}@-webkit-keyframes ui-smallpopup-hide{from{ opacity:1;left:0;-webkit-transform:scaleY(1)}to{opacity:0;left:0;-webkit-transform:scaleY(0)}}.ui-smallpopup{position:fixed;display:none;left:0;width:100%;z-index:1100;background:#444;vertical-align:middle;font-size:.72rem;word-break:break-all}.ui-smallpopup.fix{display:block}.ui-smallpopup.show{display:block;-moz-animation:ui-smallpopup-show .5s 1 ease;-ms-animation:ui-smallpopup-show .5s 1 ease;-o-animation:ui-smallpopup-show .5s 1 ease;-webkit-animation:ui-smallpopup-show .5s 1 ease}.ui-smallpopup.hide{display:block;left:-100%;-moz-animation:ui-smallpopup-hide .5s 1 ease;-ms-animation:ui-smallpopup-hide .5s 1 ease;-o-animation:ui-smallpopup-hide .5s 1 ease;-webkit-animation:ui-smallpopup-hide .5s 1 ease}.ui-smallpopup-text-bg{position:relative;margin-top:.18181818181818182rem;margin-bottom:.18181818181818182rem;margin-left:.36363636363636365rem;margin-right:.36363636363636365rem;color:#fff}.ui-swipe{list-style-type:none;overflow:hidden}.ui-swipe-item{height:1.1818181818181819rem;-ms-user-select:none;-o-user-select:none;-moz-user-select:none;-webkit-user-select:none;-user-select:none;opacity:0;text-align:center}.ui-swipe-item .ui-btn{margin-top:-1.5em ! important;position:relative ! important}.ui-swipe-item p{margin:0}.ui-swipe-item-cover{position:absolute;border:0;top:0;left:0;width:100%;height:100%;z-index:100}.ui-swipe-item-cover .ui-swipe-item-cover-inner{position:absolute;padding-top:.6818181818181819rem;padding-bottom:.6818181818181819rem;padding-left:.36363636363636365rem;width:100%;text-align:left}.ui-swipe-item-cover .ui-swipe-item-cover-inner .ui-li-text-sub{position:absolute;padding-right:.7272727272727273rem}.ui-swipe-item-cover p{margin:0}.ui-fastscroll{position:absolute;right:0rem;background-color:#21344a;width:1.1363636363636365rem;-ms-user-select:none;-o-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none;margin:0;padding-right:.08em;opacity:1}.ui-fastscroll ul{list-style-type:none;margin:0;padding:0}.ui-fastscroll li{cursor:pointer;color:#d7d7d7;padding:.09090909090909091rem .09090909090909091rem .09090909090909091rem .09090909090909091rem;text-align:center;vertical-align:middle;font-size:.7272727272727273rem;font-weight:700;border-left-width:.13636363636363635rem;border-left-color:#3b73b6;border-left-style:solid;border-top-width:.13636363636363635rem;border-top-color:#21344a}.ui-fastscroll2{position:absolute;right:0rem;-ms-user-select:none;-o-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none;margin:0;padding-right:.08em;opacity:1}.ui-fastscroll2 ul{list-style-type:none;margin:0;padding:0}.ui-fastscroll2 li{cursor:pointer;color:#d7d7d7;padding:.09090909090909091rem .09090909090909091rem .09090909090909091rem .09090909090909091rem;text-align:right}.ui-fastscroll-bg{position:absolute;right:0rem;background-color:#21344a;width:1.1363636363636365rem;z-index:10;top:0}.ui-fastscroll-popup{position:absolute;background:#3b73b6;color:#fff;padding:.4545454545454546rem 1.3636363636363638rem;-ms-box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);-o-box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);-moz-box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);-webkit-box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);text-align:center;font-size:3.409090909090909rem;font-weight:700;display:none;box-sizing:border-box;left:50%;top:50%}li.ui-fastscroll-hover{color:#3b73b6}li.ui-fastscroll-hover,li.ui-fastscroll-hover-up,li.ui-fastscroll-hover-down{background:#202327;border-style:solid;border-color:#3b73b6;border-width:0;border-right-width:.13636363636363635rem;border-left-width:1px;border-left-color:#202327}li.ui-fastscroll-hover{padding-top:.045454545454545456rem;padding-bottom:.045454545454545456rem}li.ui-fastscroll-hover-first-item{padding-top:.09090909090909091rem}li.ui-fastscroll-hover-up{border-top-width:.13636363636363635rem;padding-top:0}li.ui-fastscroll-hover-down{border-bottom-width:.13636363636363635rem;padding-bottom:0}div.ui-slider.ui-toggle-switch{width:3rem;height:1.590909090909091rem;background-color:transparent;margin-top:.2272727272727273rem;margin-bottom:.2272727272727273rem}div.ui-slider.ui-toggle-switch .ui-slider-label{position:absolute;width:3rem;height:1.590909090909091rem;background-size:100% 100%;background-repeat:no-repeat;background-color:transparent}div.ui-slider.ui-toggle-switch .ui-slider-label.ui-slider-label-a{background-image:url(images/00_button_on.png)}div.ui-slider.ui-toggle-switch .ui-slider-label.ui-slider-label-b{background-image:url(images/00_button_off.png)}div.ui-slider.ui-toggle-switch .ui-slider-inneroffset a{background:0}.ui-slider-switch:not(.ui-toggle-switch){width:4.181818181818182rem}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch){position:relative;margin-top:.2272727272727273rem;margin-bottom:.2272727272727273rem;height:1.4545454545454546rem;top:0;margin:.2272727272727273rem;border-radius:.6818181818181819rem}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) .ui-slider-inneroffset{position:relative;margin:-1px .7272727272727273rem;z-index:1}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) a.ui-slider-handle{position:absolute;background:#fff;background-image:-webkit-gradient(radial,50% 50%,0,50% 50%,50,from( #f9f9f9),to( #323232));-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);top:50%;margin:1px 0 0 -.6818181818181819rem;border-radius:.6818181818181819rem;border:2px solid gray;width:1.2727272727272727rem;height:1.2727272727272727rem}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) a.ui-slider-handle-snapping{-webkit-transition:left 70ms linear}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span{position:absolute;overflow:hidden;text-align:center;height:1.4545454545454546rem;font-weight:700;font-size:.7272727272727273rem;border-radius:.6818181818181819rem;white-space:nowrap;line-height:2}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span.ui-slider-label-a{left:0;color:#fff;z-index:1;text-indent:-1.5em}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span.ui-slider-label-b{right:0;color:#fff;z-index:0;text-indent:1.5em}.ui-slider-switch .ui-slider-handle .ui-btn-inner{padding:0}.ui-triangle-container{position:relative}.ui-triangle-container .ui-triangle{position:absolute;border-style:solid;border-color:transparent;border-width:10px}.ui-triangle-container .ui-triangle-top{top:0;border-top-width:0;border-left-color:transparent;border-right-color:transparent;margin-left:-10px}.ui-triangle-container .ui-triangle-bottom{bottom:0;border-bottom-width:0;border-left-color:transparent;border-right-color:transparent;margin-left:-10px}.ui-triangle-container .ui-triangle-left{left:0;margin-top:-10px;border-left-width:0;border-left-color:transparent;border-right-color:transparent}.ui-triangle-container .ui-triangle-right{right:0;margin-top:-10px;border-right-width:0;border-left-color:transparent;border-right-color:transparent}.ui-triangle-container-top{height:10px;top:0;margin-top:-10px}.ui-triangle-container-bottom{height:10px;bottom:0;margin-bottom:-10px}.ui-triangle-container-left{width:10px}.ui-triangle-container-right{width:10px}.ui-tokentextarea{display:table;outline:0;position:relative}.ui-tokentextarea .ui-tokentextarea-label{display:inline-block;position:relative;margin-left:5px;margin-right:5px;padding:10px 0;color:#808080;font-weight:700;text-align:center;font-size:1em}.ui-tokentextarea-input{outline:0;position:relative;border:0!important;padding:0!important;margin:8px;color:#222;text-align:left;font-size:1em}.ui-tokentextarea-input-visible{display:inline-block!important}.ui-tokentextarea-input-invisible{display:none!important}.ui-tokentextarea div{display:inline-block;text-align:center;cursor:pointer;position:relative;margin-left:5px;margin-right:5px;margin-bottom:5px;margin-top:5px;padding:3px 8px;font-size:1em;text-shadow:0 .1em .1em rgba(0,0,0,.3);-ms-border-radius:.2em;-o-border-radius:.2em;-webkit-border-radius:.2em;-moz-border-radius:.2em;border-radius:.2em;-o-box-shadow:0 .1em .1em rgba(0,0,0,.2);-ms-box-shadow:0 .1em .1em rgba(0,0,0,.2);-moz-box-shadow:0 .1em .1em rgba(0,0,0,.2);-webkit-box-shadow:0 .1em .1em rgba(0,0,0,.2);box-shadow:0 .1em .1em rgba(0,0,0,.2);color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}div.ui-tokentextarea-block{background-color:#5f8abd;background-image:url(./images/00_contacts_button_header.png);background-size:contain;background-repeat:no-repeat;padding-left:11px}div.ui-tokentextarea-sblock{background-color:#365984;background-image:url(./images/00_contacts_button_header_press.png);background-size:contain;background-repeat:no-repeat;padding-left:11px}.ui-tokentextarea .ui-tokentextarea-desclabel{display:inline-block;outline:0;position:relative;border:0;color:#808080;text-align:left;font-size:1em}.ui-tokentextarea-link-base{position:absolute;right:0;bottom:.2em}.ui-handler{position:absolute;overflow:hidden;opacity:0}.ui-handler-visible{opacity:1}.ui-handler-direction-y{top:.2272727272727273rem;right:.2272727272727273rem;bottom:.2272727272727273rem;width:1.0909090909090908rem}.ui-handler-direction-x{right:.2272727272727273rem;bottom:.2272727272727273rem;left:.2272727272727273rem;height:1.0909090909090908rem}.ui-handler-track{position:relative;width:100%;height:100%}.ui-handler-thumb{position:absolute;top:0;left:0;background-position:center;background-repeat:no-repeat;-o-border-radius:.11363636363636365rem;-ms-border-radius:.11363636363636365rem;-moz-border-radius:.11363636363636365rem;-webkit-border-radius:.11363636363636365rem;border-radius:.11363636363636365rem}.ui-handler-direction-y .ui-handler-thumb{width:1.0909090909090908rem;height:4.863636363636364rem;background-size:1.0909090909090908rem .9090909090909092rem}.ui-handler-direction-x .ui-handler-thumb{width:4.863636363636364rem;height:1.0909090909090908rem;background-size:.9090909090909092rem 1.0909090909090908rem}.ui-handler-s .ui-handler-thumb{background-color:rgba(150,150,150,.5)}.ui-handler-s .ui-handler-direction-y .ui-handler-thumb{background-image:url("images/00_scroll_bar_handler.png")}.ui-handler-s .ui-handler-direction-x .ui-handler-thumb{background-image:url("images/00_scroll_bar_handler_hor.png")}.ui-virtualgrid{overflow:hidden;position:absolute}.ui-virtualgrid-wrapblock{position:absolute;left:0}.ui-virtualgrid-wrapblock-x{float:left;overflow:hidden}.ui-scrollbar-thumb-x{width:1.5rem!important}.ui-scrollbar-thumb-y{height:1.5rem!important}.ui-virtualgrid-overflow-indicator-x-top{position:absolute;display:block;left:0;top:0;width:.4545454545454546rem;height:100%;opacity:0;background:-webkit-gradient(linear,right top,left top,color-stop(0,rgba(128,128,128,0)),color-stop(1, #808080));pointer-events:none}.ui-virtualgrid-overflow-indicator-x-bottom{position:absolute;display:block;right:0;bottom:0;width:.4545454545454546rem;height:100%;opacity:0;background:-webkit-gradient(linear,right top,left top,color-stop(0, #808080),color-stop(1,rgba(128,128,128,0)));pointer-events:none}.ui-virtualgrid-overflow-indicator-y-top{position:absolute;display:block;top:0;width:100%;height:.4545454545454546rem;opacity:0;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,rgba(128,128,128,0)),color-stop(1, #808080));pointer-events:none}.ui-virtualgrid-overflow-indicator-y-bottom{position:absolute;display:block;bottom:0;width:100%;height:.4545454545454546rem;opacity:0;background:-webkit-gradient(linear,left bottom,left top,color-stop(0, #808080),color-stop(1,rgba(128,128,128,0)));pointer-events:none}.ui-content.ui-virtualgrid-content{padding:0}.ui-multimediaview{background-color:#f9f9f9;overflow:hidden}.ui-multimediaview-wrap{width:100%;padding:0;position:relative;overflow:hidden}.ui-multimediaview-siblings-off{display:none!important}.ui-multimediaview-control span{display:inline-block}.ui-multimediaview-video{position:absolute}.ui-multimediaview-control{display:block;z-index:1002;padding:0;margin:0;outline:0;border:0;height:1.9090909090909092rem;text-align:left;overflow:hidden}.ui-multimediaview-control span.ui-button{background-position:center center;background-size:80%;background-repeat:no-repeat;width:1.6818181818181819rem;height:1.6818181818181819rem;margin:.09090909090909091rem}.ui-multimediaview-control .ui-playpausebutton{float:left}.ui-multimediaview-control .ui-timestamplabel{text-align:center;float:left}.ui-multimediaview-control .ui-timestamplabel p{margin-top:-.22272727272727275rem;margin-left:.09090909090909091rem;padding:0;text-align:center;font-size:.5rem;line-height:.6363636363636364rem;text-align:left}.ui-multimediaview-control .ui-durationlabel{text-align:center;float:right}.ui-multimediaview-control .ui-durationlabel p{margin-top:-.22272727272727275rem;margin-right:.09090909090909091rem;padding:0;text-align:center;font-size:.5rem;line-height:.6363636363636364rem;text-align:right}.ui-multimediaview-bar{margin-top:.22272727272727275rem;float:left}.ui-multimediaview-bar-bg{height:.36363636363636365rem;border-radius:1.5em}.ui-multimediaview-bar-highlight{height:.36363636363636365rem;position:absolute;border-radius:1.5em}.ui-multimediaview-control .ui-seekbar{margin-left:.09090909090909091rem}.ui-multimediaview-control .ui-seekbar .ui-duration{width:100%}.ui-multimediaview-control .ui-volumecontrol{width:5rem;height:100%;float:left}.ui-multimediaview-control .ui-volumecontrol .ui-volumebar{margin-left:.6818181818181819rem}.ui-multimediaview-control .ui-volumecontrol .ui-volumebar .ui-guide{width:3.8636363636363638rem}.ui-multimediaview-control .ui-volumecontrol .ui-volumebar .ui-handle{margin:0;padding:0;width:.6818181818181819rem;height:.6818181818181819rem;border-style:solid;border-width:1px;border-radius:1.5em}.ui-fullscreen-parents{padding:0!important;margin:0!important;width:100%!important;height:100%!important;overflow:hidden}.ui-multimediaview-s .ui-multimediaview-video{background-color:rgba(248,246,239,.5)}.ui-multimediaview-s .ui-timestamplabel{color:#4a84c9}.ui-multimediaview-s .ui-durationlabel{color:#808080}.ui-multimediaview-s span.ui-button{background-color:#f8f6ef}.ui-multimediaview-s span.ui-play-icon{background-image:url(./images/00_button_play.png)}.ui-multimediaview-s span.ui-pause-icon{background-image:url(./images/00_button_pause.png)}.ui-multimediaview-s span.ui-volume-icon{background-image:url(./images/controls/00_slider_button_volume_02.png)}.ui-multimediaview-s span.ui-mute-icon{background-image:url(./images/controls/00_slider_button_volume_01.png)}.ui-multimediaview-s span.ui-fullscreen-on{background-image:url(./images/00_button_fullscreen_on.png)}.ui-multimediaview-s span.ui-fullscreen-off{background-image:url(./images/00_button_fullscreen_off.png)}.ui-multimediaview-s .ui-seekbar .ui-duration{background-color:#cbc8c5}.ui-multimediaview-s .ui-seekbar .ui-currenttime{background-color:#4a84c9;background-image:-webkit-gradient(linear,left top,left bottom,from( #6289d9),to( #295b98));background-image:-moz-linear-gradient(top, #6289d9, #295b98);background-image:-o-linear-gradient(top, #6289d9, #295b98);background-image:-ms-linear-gradient(top, #6289d9, #295b98)}.ui-multimediaview-s .ui-volumebar .ui-guide{background-color:#cbc8c5}.ui-multimediaview-s .ui-volumebar .ui-value{background-color:#4a84c9;background-image:-webkit-gradient(linear,left top,left bottom,from( #6289d9),to( #295b98));background-image:-moz-linear-gradient(top, #6289d9, #295b98);background-image:-o-linear-gradient(top, #6289d9, #295b98);background-image:-ms-linear-gradient(top, #6289d9, #295b98)}.ui-multimediaview-s .ui-volumebar .ui-handle{background-color:#f9f9f9;background-image:-webkit-gradient(linear,left top,left bottom,from( #fff),to( #e6e6e6));background-image:-moz-linear-gradient(top, #fff, #e6e6e6);background-image:-o-linear-gradient(top, #fff, #e6e6e6);background-image:-ms-linear-gradient(top, #fff, #e6e6e6);border-color:#bab9b4}.ui-popup-screen{top:0;left:0;width:100%;height:100%;border:0;position:absolute;filter:Alpha(Opacity=50);opacity:0}.ui-popup-screen-background-hack{background-color:#000;filter:Alpha(Opacity=0)}@-webkit-keyframes popup-fadein{from{ opacity:0}to{opacity:.5}}@-moz-keyframes popup-fadein{from{ opacity:0}to{opacity:.5}}@-webkit-keyframes popup-fadeout{from{ opacity:.5}to{opacity:0}}@-moz-keyframes popup-fadeout{from{ opacity:.5}to{opacity:0}}.ui-popup-screen.fade.in{opacity:.5;-webkit-animation-name:popup-fadein;-moz-animation-name:popup-fadein}.ui-popup-screen.fade.out{opacity:0;-webkit-animation-name:popup-fadeout;-moz-animation-name:popup-fadeout}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup>img{width:auto;height:auto;max-width:100%;max-height:100%;vertical-align:middle}.ui-popup iframe{vertical-align:middle}@media all and (min-width: 450px){.ui-popup .ui-field-contain label.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-label,.ui-popup .ui-field-contain label.ui-select,.ui-popup .ui-field-contain label.ui-input-text{ font-size:16px;line-height:1.4;display:block;font-weight:400;margin:0 0 .3em}.ui-popup .ui-field-contain .ui-btn.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-controls,.ui-popup .ui-field-contain .ui-select,.ui-popup .ui-field-contain input.ui-input-text,.ui-popup .ui-field-contain textarea.ui-input-text,.ui-popup .ui-field-contain .ui-input-search{width:100%;display:block}}.ui-popup>.ui-btn-left,.ui-popup>.ui-btn-right{position:absolute;top:-9px;margin:0;z-index:1101}.ui-popup>.ui-btn-left{left:-9px}.ui-popup>.ui-btn-right{right:-9px}.ui-popup-screen{background:#000;opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;z-index:1200}.ui-overlay-dim{opacity:.7}.ui-popup-scroller-bg{width:100%}.ui-popup-container{position:absolute;width:86.12%;z-index:1201!important;background:#2a2d30;text-align:center;outline-color:#202327;display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center}.ui-popup-container .ui-popup{padding:3px 2px 2px 2px;background:#2a2d30;width:100%;word-wrap:break-word}.ui-popup-container .ui-popup>.ui-popup-title,.ui-popup-container .ui-popup>.ui-popup-text,.ui-popup-container .ui-popup>.ui-popup-button-bg{width:100%}.ui-popup-container .ui-popup-title{width:100%;height:1.8181818181818183rem;text-align:left;color:#70a9ee;font-size:1.0909090909090908rem;font-weight:700}.ui-popup-container .ui-popup-title h1{font-size:1.0909090909090908rem;font-weight:700;color:#70a9ee;margin:0;padding-top:.4545454545454546rem;padding-left:.7272727272727273rem}.ui-popup-container .ui-popup-text{margin-top:1rem;margin-bottom:1rem;color:#f9f9f9;font-size:.9090909090909092rem;background:#2a2d30;text-align:center}.ui-popup-container .ui-popup-text .ui-li .ui-radio label,.ui-popup-container .ui-popup-text .ui-li .ui-checkbox label{background:transparent}.ui-popup-container .ui-popup-text input{display:inline-block}.ui-popup-container .ui-popup-button-bg{font-size:1.4545454545454546rem;height:1.6818181818181819rem;padding-top:.4545454545454546rem;padding-bottom:.4545454545454546rem;width:100%;vertical-align:middle}.ui-popup-container .ui-popup-button-bg>.ui-btn{display:inline-block;margin:auto;height:1.6818181818181819rem}.ui-popup-container .ui-popup-button-bg .ui-btn-inner{padding-top:.2272727272727273rem;padding-bottom:.2272727272727273rem;padding-left:.9090909090909092rem;padding-right:.9090909090909092rem}.ui-popup-container .center_basic_3btn .ui-btn,.ui-popup-container .center_title_3btn .ui-btn{max-width:3.6363636363636367rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_button_vertical .ui-popup-button-bg{display:block;height:auto}.ui-popup-container .center_button_vertical .ui-popup-button-bg>.ui-btn{display:block;width:9.090909090909092rem}.ui-popup-container .center_checkbox .ui-popup-check-bg{font-size:.9090909090909092rem;background:#2a2d30;width:100%;padding-top:0rem;padding-bottom:1rem;vertical-align:middle}.ui-popup-container .center_checkbox .ui-popup-check-bg .ui-checkbox .ui-btn{text-align:center;background:#2a2d30;border:0rem}.ui-popup-container .center_checkbox .ui-popup-check-bg .ui-checkbox .ui-btn .ui-btn-inner{border:0rem}.ui-popup-container .center_checkbox .ui-popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_checkbox .ui-popup-button-bg .ui-btn{width:5rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_liststyle_1btn .ui-popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:11.636363636363637rem}.ui-popup-container .center_liststyle_1btn .ui-popup-button-bg{padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_liststyle_2btn .ui-popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:11.636363636363637rem}.ui-popup-container .center_liststyle_2btn .ui-popup-button-bg{padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_liststyle_2btn .ui-popup-button-bg .ui-btn{width:5rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_liststyle_2btn .ui-popup-button-bg .ui-btn .ui-btn-inner{padding-top:.2272727272727273rem;padding-bottom:.2272727272727273rem;padding-left:.9090909090909092rem;padding-right:.9090909090909092rem}.ui-popup-container .center_title_2btn .ui-popup-button-bg{padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_title_2btn .ui-popup-button-bg .ui-btn{width:5.454545454545455rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_title_2btn .ui-popup-button-bg .ui-btn .ui-btn-inner{padding-top:.2272727272727273rem;padding-bottom:.2272727272727273rem;padding-left:.9090909090909092rem;padding-right:.9090909090909092rem}.ui-popup-container .center_liststyle_3btn .ui-popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:11.636363636363637rem}.ui-popup-container .center_liststyle_3btn .ui-popup-button-bg{padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_liststyle_3btn .ui-popup-button-bg .ui-btn{max-width:3.6363636363636367rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_progressbar{text-align:center}.ui-popup-container .center_progressbar .ui-popup-text{font-size:1.1818181818181819rem;font-color:#999;background:#2a2d30;width:100%;height:3.181818181818182rem}.ui-popup-container .center_progressbar .ui-popup-text p{height:100%;text-align:center;padding:1rem .7272727272727273rem 0rem .7272727272727273rem}.ui-popup-container .center_progressbar .ui-popup-text-bottom-bg{font-size:1.1818181818181819rem;font-color:#999;background:#2a2d30;width:100%;vertical-align:middle}.ui-popup-container .center_progressbar .ui-popup-text-bottom-bg .text-left{width:40%;height:2.1818181818181817rem;padding:0rem .7272727272727273rem 0rem .7272727272727273rem;text-align:left;display:inline-block}.ui-popup-container .center_progressbar .ui-popup-text-bottom-bg .text-right{width:40%;height:2.1818181818181817rem;padding:0rem .7272727272727273rem 0rem .7272727272727273rem;text-align:right;display:inline-block}.ui-popup-container .center_progressbar .ui-popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_progressbar .ui-popup-button-bg .ui-btn{width:9.136363636363637rem;height:1.6818181818181819rem;margin:auto}.ui-popup-container .center_progressbar .ui-popup-progress-bg{background:#2a2d30;width:100%;height:100%}.ui-popup-container .centertext_progressbar{text-align:center}.ui-popup-container .centertext_progressbar .ui-popup-text{font-size:1.1818181818181819rem;font-color:#999;background:#2a2d30;width:100%;padding-top:1rem;padding-bottom:.7272727272727273rem}.ui-popup-container .centertext_progressbar .ui-popup-text p{text-align:center}.ui-popup-container .centertext_progressbar .ui-popup-text-bottom-bg{font-size:1.1818181818181819rem;font-color:#999;background:#2a2d30;width:100%;vertical-align:middle}.ui-popup-container .centertext_progressbar .ui-popup-text-bottom-bg .text-left{width:40%;height:1.8181818181818183rem;padding:.7272727272727273rem .7272727272727273rem 1rem .7272727272727273rem;text-align:left;display:inline-block}.ui-popup-container .centertext_progressbar .ui-popup-text-bottom-bg .text-right{width:40%;height:1.8181818181818183rem;padding:.7272727272727273rem .7272727272727273rem 1rem .7272727272727273rem;text-align:right;display:inline-block}.ui-popup-container .centertext_progressbar .ui-popup-button-bg{font-size:1.4545454545454546rem;background:#2a2d30;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .centertext_progressbar .ui-popup-button-bg .ui-btn{width:18.272727272727273rem;height:1.6818181818181819rem;margin:auto}.ui-popup-container .centertext_progressbar .ui-popup-progress-bg{background:#2a2d30;width:100%;height:100%}.ui-text-ellipsis{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-tabbar{background:#202327;z-index:1000}.ui-tabbar a.ui-btn{background:#202327;color:#bababa;padding-top:.8636363636363636rem;padding-bottom:.8636363636363636rem}.ui-tabbar a.ui-btn .ui-btn-inner{padding-top:0;padding-bottom:0;border-left:2px solid;border-color:#3b3e40;border-radius:0;-0-border-radius:0;-ms-border-radius:0;-webkit-border-radius:0}.ui-tabbar a.ui-btn .ui-icon{width:1.4545454545454546rem;height:1.4545454545454546rem;background-repeat:no-repeat;background-size:100% 100%}.ui-tabbar.ui-tabbar-persist a.ui-btn{background:#202327}.ui-tabbar.ui-tabbar-persist a.ui-state-persist,.ui-tabbar.ui-tabbar-persist a.ui-state-persist.ui-btn-active,.ui-tabbar.ui-tabbar-persist a.ui-btn-show-style{color:#70a9ee}.ui-tabbar.ui-tabbar-persist a.ui-btn-hover-s.ui-btn-down-s:not(.ui-state-persist){color:#70a9ee;background:-webkit-linear-gradient(top, #000 0, #202327 100%)}.ui-tabbar:not(.ui-tabbar-persist) a.ui-btn{background:#202327}.ui-tabbar:not(.ui-tabbar-persist) a.ui-btn-active,.ui-tabbar:not(.ui-tabbar-persist) .ui-btn-show-style{color:#70a9ee}.ui-tabbar:not(.ui-tabbar-persist) a.ui-btn.ui-btn-hover-s.ui-btn-down-s{color:#70a9ee;background:-webkit-linear-gradient(top, #000 0, #202327 100%)}.ui-tabbar .ui-btn-inner{font-size:.6818181818181819rem;font-weight:700}.ui-tabbar .ui-btn-inner .ui-icon{top:.4545454545454546rem;left:50%;margin-left:-.7272727272727273rem}.ui-tabbar.ui-tabbar-notext a.ui-btn{padding-top:.5rem;padding-bottom:.4545454545454546rem}.ui-tabbar.ui-tabbar-notext .ui-btn-inner{height:1.5454545454545454rem}.ui-tabbar.ui-tabbar-notext .ui-btn-inner .ui-icon{top:0}.ui-header.ui-bar-s.ui-title-tabbar .ui-title{font-size:1rem;margin-top:.36363636363636365rem;margin-bottom:0rem}.ui-header.ui-bar-s.ui-title-tabbar .ui-tabbar.ui-tabbar-noicons a.ui-btn{padding-top:.6818181818181819rem;padding-bottom:.5909090909090909rem}.ui-header.ui-bar-s.ui-title-tabbar .ui-tabbar.ui-tabbar-notext a.ui-btn{padding-top:.3181818181818182rem;padding-bottom:.2272727272727273rem}.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn{padding-top:.5rem;padding-bottom:.4545454545454546rem}.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn .ui-btn-inner{height:2.4545454545454546rem}.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn .ui-btn-inner .ui-btn-text{padding-top:0;line-height:3.8636363636363638rem}.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn .ui-btn-inner .ui-icon{top:0}.ui-header.ui-bar-s li:first-child .ui-btn-inner{border-left-width:0}.ui-footer.ui-bar-s .ui-tabbar{height:2.2272727272727275rem;margin-left:auto;margin-right:auto}.ui-footer.ui-bar-s .ui-tabbar a.ui-btn{padding-top:.7272727272727273rem;padding-bottom:.7272727272727273rem}.ui-footer.ui-bar-s .ui-tabbar .ui-btn-inner .ui-icon{top:0}.ui-footer.ui-bar-s .ui-tabbar.ui-tabbar-notext a.ui-btn{padding-top:.36363636363636365rem;padding-bottom:.3181818181818182rem}.ui-footer.ui-bar-s .ui-tabbar li:first-child .ui-btn-inner{border-left-width:0}.ui-footer.ui-bar-s .ui-tabbar.ui-tabbar-margin-back{margin-right:2.5454545454545454rem}.ui-footer.ui-bar-s .ui-tabbar.ui-tabbar-margin-more{margin-left:2.5454545454545454rem}.ui-footer.ui-bar-s .ui-btn-back~.ui-tabbar li:last-child .ui-btn-inner{border-right:1px solid;border-right-color:#3b3e40}.ui-footer.ui-bar-s [data-icon="naviframe-more"]~.ui-tabbar li:first-child .ui-btn-inner{border-left:1px solid;border-left-color:#3b3e40}.ui-tabbar-s.ui-navbar-noicons{font-size:1rem}.ui-tabbar .tabbar-scroll-ul{margin-top:0;margin-bottom:0;padding-left:0}.ui-tabbar .tabbar-scroll-ul .tabbar-scroll-li{position:relative;display:inline-block;margin-left:-.36363636363636365rem}.ui-tabbar .tabbar-scroll-ul .tabbar-scroll-li a{width:100%}.ui-tabbar .tabbar-scroll-ul li.tabbar-scroll-li:first-child{margin-left:0}.ui-tabbar-divider{position:absolute;top:0;width:.4545454545454546rem;height:2.5rem;background:-webkit-linear-gradient(left, #00009b 0, #f6f8ef 100%)}.ui-tabbar-divider-left{left:0;border-top-right-radius:.4545454545454546rem;border-bottom-right-radius:.4545454545454546rem;background:-webkit-linear-gradient(left, #999 0, #f6f8ef 100%)}.ui-tabbar-divider-right{right:0;border-top-left-radius:.4545454545454546rem;border-bottom-left-radius:.4545454545454546rem;background:-webkit-linear-gradient(right, #999 0, #f6f8ef 100%)}.ui-splitview{margin:0;padding:0;position:relative}.ui-splitview .ui-pane{position:absolute;overflow:hidden;border:0;margin:0;padding:0}.ui-splitview .ui-pane .ui-listview{margin:0;padding:0}.ui-splitview .ui-spliter{position:absolute;z-index:100;display:block;margin:0;padding:0}.ui-splitview .ui-spliter-bar{background-color:#b3b3b3;border-color:#000;border-style:solid}.ui-splitview .ui-spliter-handle{margin:0;padding:0;cursor:move;display:block;text-align:center;cursor:pointer;position:relative;background-position:center center;background-repeat:no-repeat;background-size:100% 100%}.ui-direction-horizontal>.ui-spliter{width:60px}.ui-direction-vertical>.ui-spliter{height:60px}.ui-direction-horizontal>.ui-spliter>.ui-spliter-bar{width:13px;margin:0 0 0 25px;border-width:1px 1px 1px 0}.ui-direction-vertical>.ui-spliter>.ui-spliter-bar{height:13px;margin:25px 0 0 0;border-width:0 1px 1px 1px}.ui-spliter-active>.ui-spliter-bar{background-color:#5787c2}.ui-direction-horizontal>.ui-spliter>.ui-spliter-bar>.ui-spliter-handle{width:13px;height:26px;background-image:url(./images/00_splite_handler_v.png)}.ui-direction-vertical>.ui-spliter>.ui-spliter-bar>.ui-spliter-handle{width:26px;height:13px;background-image:url(./images/00_splite_handler_h.png)}.ui-direction-horizontal>.ui-fixed{width:0}.ui-direction-horizontal>.ui-fixed>.ui-spliter-bar{width:5px}.ui-direction-vertical>.ui-fixed{height:0}.ui-direction-vertical>.ui-fixed>.ui-spliter-bar{height:5px}.ui-fixed .ui-spliter-handle{display:none}
\ No newline at end of file
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-white/images/controls/button/00_icon_SIP_close_press_web.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-white/images/controls/button/00_icon_SIP_close_press_web.png
new file mode 100644 (file)
index 0000000..6ca9b0c
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-white/images/controls/button/00_icon_SIP_close_press_web.png differ
diff --git a/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-white/images/controls/button/00_icon_SIP_close_web_web.png b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-white/images/controls/button/00_icon_SIP_close_web_web.png
new file mode 100644 (file)
index 0000000..7a744ab
Binary files /dev/null and b/org.tizen.common.verrari/templates/cli/tizenwebuifw-common-resources/tizen-web-ui-fw/latest/themes/tizen-white/images/controls/button/00_icon_SIP_close_web_web.png differ
index aaadc7b..b9a466a 100644 (file)
 .ui-bar-s {
   border: none;
   background: #f8f6ef;
+  /* Header Background */
+
   color: #3b73b6;
   font-family: Helvetica, Arial, sans-serif;
   font-weight: bold;
 }
 .ui-bar-s > .ui-btn.ui-btn-footer-down .ui-icon {
   top: 0.36363636363636365rem;
-  left: auto;
-  right: 0.5909090909090909rem;
   margin-top: 0px;
 }
 /* Header style */
   -webkit-box-shadow: none /* temp code */
 ;
 }
+.ui-footer.ui-bar-s > .ui-btn.ui-btn-back,
+.ui-footer.ui-bar-s > .ui-btn.ui-btn-footer-down {
+  top: 0px;
+}
+.ui-footer.ui-bar-s > .ui-btn.ui-btn-footer-down .ui-icon {
+  left: auto;
+  right: 0.5909090909090909rem;
+}
 .ui-footer.ui-bar-s [data-icon="naviframe-more"] {
   position: absolute;
   left: 0rem;
 .ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] {
   background: transparent;
   border-style: solid;
-  border-color: #c0c0c0;
+  border-color: #b2b1ae;
   border-top-width: 0px;
   border-bottom-width: 0px;
   border-left-width: 1px;
@@ -696,31 +704,48 @@ a.ui-link-inherit {
   background-repeat: no-repeat;
   background-size: 100% 100%;
 }
-.ui-btn-up-s,
+.ui-btn-up-s {
+  /* less parsing problem : divide css */
+
+  /* FIXME : check ux if it needs to be deprecated... */
+
+}
+.ui-btn-up-s .ui-icon-header-back-btn {
+  background-image: url(images/page/00_icon_Back.png);
+}
+.ui-btn-up-s .ui-icon-naviframe-more {
+  background-image: url(images/page/00_icon_more.png);
+}
+.ui-btn-up-s .ui-icon-naviframe-cancel {
+  background-image: url(images/00_icon_cancel.png);
+}
+.ui-btn-up-s .ui-icon-naviframe-edit {
+  background-image: url(images/page/00_icon_edit.png);
+}
+.ui-btn-up-s .ui-icon-naviframe-plus {
+  background-image: url(images/page/00_icon_plus.png);
+}
+.ui-btn-up-s .ui-icon-down {
+  background-image: url(images/controls/button/00_icon_SIP_close_web_web.png);
+}
 
-.ui-btn-up-s .ui-icon-header-back-btn,
 .ui-btn-hover-s .ui-icon-header-back-btn {
   background-image: url(images/page/00_icon_Back.png);
 }
-.ui-btn-up-s .ui-icon-naviframe-more,
 .ui-btn-hover-s .ui-icon-naviframe-more {
   background-image: url(images/page/00_icon_more.png);
 }
-.ui-btn-up-s .ui-icon-naviframe-cancel,
 .ui-btn-hover-s .ui-icon-naviframe-cancel {
   background-image: url(images/00_icon_cancel.png);
 }
-.ui-btn-up-s .ui-icon-naviframe-edit,
 .ui-btn-hover-s .ui-icon-naviframe-edit {
   background-image: url(images/page/00_icon_edit.png);
 }
-.ui-btn-up-s .ui-icon-naviframe-plus,
 .ui-btn-hover-s .ui-icon-naviframe-plus {
   background-image: url(images/page/00_icon_plus.png);
 }
-.ui-btn-up-s .ui-icon-down,
 .ui-btn-hover-s .ui-icon-down {
-  background-image: url(images/controls/button/00_button_down.png);
+  background-image: url(images/controls/button/00_icon_SIP_close_web_web.png);
 }
 
 .ui-btn-down-s .ui-icon-header-back-btn {
@@ -739,7 +764,7 @@ a.ui-link-inherit {
   background-image: url(images/page/00_icon_plus_press.png);
 }
 .ui-btn-down-s .ui-icon-down {
-  background-image: url(images/controls/button/00_button_down_press.png);
+  background-image: url(images/controls/button/00_icon_SIP_close_press_web.png);
 }
 /* Interaction cues
 -----------------------------------------------------------------------------------------------------------*/
@@ -881,6 +906,12 @@ a.ui-link-inherit {
   height: 100%;
   font-size: 22px;
 }
+@media all and (max-width: 359px) {
+  .ui-mobile,
+  .ui-mobile body {
+    font-size: 19px;
+  }
+}
 .ui-mobile fieldset,
 .ui-page {
   padding: 0;
@@ -3127,7 +3158,7 @@ a.ui-link-inherit {
   padding: 0.7272727272727273rem 0.7272727272727273rem;
 }
 .ui-btn-icon-only .ui-btn-text {
-  display: block;
+  display: none;
   width: 0;
   height: 0;
   overflow: hidden;
@@ -4100,6 +4131,7 @@ input.ui-input-text {
 }
 textarea.ui-input-text {
   height: 2.272727272727273rem;
+  width: 95%;
   resize: none;
   -webkit-transition: height 200ms linear;
   -moz-transition: height 200ms linear;
@@ -4431,10 +4463,6 @@ fieldset.ui-controlgroup {
   text-align: center;
   white-space: nowrap;
 }
-.ui-controlgroup .ui-radio-off,
-.ui-controlgroup .ui-radio-on {
-  width: 100%;
-}
 .ui-controlgroup .ui-radio-on .ui-btn-inner {
   background: #f8f6ef;
 }
@@ -5916,8 +5944,8 @@ ul.ui-virtual-list-container > ul.position_absolute {
   position: relative;
 }
 .ui-scrollview-view {
-  overflow: visible;
   overflow-x: hidden;
+  overflow-y: visible;
 }
 .ui-scrolllistview .ui-li-divider {
   z-index: 10;
@@ -8049,14 +8077,14 @@ select.ui-slider-switch {
   top: -0.5rem;
   height: 1.6818181818181819rem;
   text-align: center;
-  color: #646464;
+  color: #808080;
 }
 .ui-slider-right-text {
   position: absolute;
   top: -0.5rem;
   height: 1.6818181818181819rem;
   text-align: center;
-  color: #646464;
+  color: #808080;
 }
 div.ui-slider:not(.ui-toggle-switch) {
   position: relative;
@@ -8072,11 +8100,11 @@ div.ui-slider:not(.ui-toggle-switch) {
   border: 1px;
   border-style: solid;
   border-color: #a3a09e;
-  -o-box-shadow: 1px -1px 1px #a3a09e;
-  -ms-box-shadow: 1px -1px 1px #a3a09e;
-  -moz-box-shadow: 1px -1px 1px #a3a09e;
-  -webkit-box-shadow: 1px -1px 1px #a3a09e;
-  box-shadow: 1px -1px 1px #a3a09e;
+  -o-box-shadow: 1px 1px 0px #000000;
+  -ms-box-shadow: 1px 1px 0px #000000;
+  -moz-box-shadow: 1px 1px 0px #000000;
+  -webkit-box-shadow: 1px 1px 0px #000000;
+  box-shadow: 1px 1px 0px #000000;
   background-color: #cac8c4;
 }
 div.ui-slider:not(.ui-toggle-switch) .ui-btn {
@@ -8676,6 +8704,7 @@ a.ui-slider-handle {
 ***************************************************************************/
 .ui-swipe {
   list-style-type: none;
+  overflow: hidden;
 }
 .ui-swipe-item {
   height: 1.1818181818181819rem;
@@ -9103,6 +9132,8 @@ div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) .ui-slider-inneroffset {
 div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) a.ui-slider-handle {
   position: absolute;
   background: #ffffff;
+  background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 50, from(#f9f9f9), to(#323232));
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
   top: 50%;
   margin: 1px 0 0 -0.6818181818181819rem;
   border-radius: 0.6818181818181819rem;
@@ -9132,7 +9163,7 @@ div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span.ui-slider-label-a {
 }
 div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span.ui-slider-label-b {
   right: 0px;
-  color: black;
+  color: #000000;
   z-index: 0;
   text-indent: 1.5em;
 }
@@ -9878,10 +9909,7 @@ div.ui-tokentextarea-sblock {
   width: 100%;
   padding: 0;
   position: relative;
-}
-.ui-multimediaview-fullscreen {
-  position: absolute !important;
-  z-index: 1001;
+  overflow: hidden;
 }
 .ui-multimediaview-siblings-off {
   display: none !important;
@@ -9984,6 +10012,7 @@ div.ui-tokentextarea-sblock {
   margin: 0 !important;
   width: 100% !important;
   height: 100% !important;
+  overflow: hidden;
 }
 /* S
 -----------------------------------------------------------------------------------------------------------*/
@@ -10854,8 +10883,8 @@ div.ui-tokentextarea-sblock {
 .ui-tabbar a.ui-btn .ui-btn-inner {
   padding-top: 0px;
   padding-bottom: 0px;
-  border-left: 1px solid;
-  border-color: #c0c0c0;
+  border-left: 2px solid;
+  border-color: #b2b1ae;
   border-radius: 0px;
   -0-border-radius: 0px;
   -ms-border-radius: 0px;
@@ -10969,11 +10998,11 @@ div.ui-tokentextarea-sblock {
 }
 .ui-footer.ui-bar-s .ui-btn-back ~ .ui-tabbar li:last-child .ui-btn-inner {
   border-right: 1px solid;
-  border-right-color: #c0c0c0;
+  border-right-color: #b2b1ae;
 }
 .ui-footer.ui-bar-s [data-icon="naviframe-more"] ~ .ui-tabbar li:first-child .ui-btn-inner {
   border-left: 1px solid;
-  border-left-color: #c0c0c0;
+  border-left-color: #b2b1ae;
 }
 .ui-tabbar-s.ui-navbar-noicons {
   font-size: 1rem;
index fdaa38f..720835c 100644 (file)
@@ -1 +1 @@
-.ui-bar-s{border:0;background:#f8f6ef;color:#3b73b6;font-family:Helvetica,Arial,sans-serif;font-weight:700;font-size:1.2727272727272727rem}.ui-bar-s .ui-link-inherit{color:#3b73b6}.ui-bar-s>.ui-btn.ui-btn-back,.ui-bar-s>.ui-btn.ui-btn-footer-down{background:transparent;position:absolute;right:0}.ui-bar-s>.ui-btn.ui-btn-back .ui-icon-header-back-btn,.ui-bar-s>.ui-btn.ui-btn-footer-down .ui-icon-header-back-btn{top:.36363636363636365rem;left:auto;right:.5909090909090909rem;margin-top:0}.ui-bar-s>.ui-btn.ui-btn-footer-down{border:0;box-shadow:none}.ui-bar-s>.ui-btn.ui-btn-footer-down .ui-icon{top:.36363636363636365rem;left:auto;right:.5909090909090909rem;margin-top:0}.ui-header.ui-bar-s{position:fixed;top:0;min-height:2.5rem}.ui-header.ui-bar-s .ui-title{display:inline-block;color:#3b73b6;min-height:1.2727272727272727rem;max-height:1.5454545454545454rem;font-size:1.2727272727272727rem;font-weight:500;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important;text-align:left;margin:.7272727272727273rem .36363636363636365rem .2272727272727273rem .36363636363636365rem}.ui-header.ui-bar-s>.ui-btn .ui-btn-inner.ui-btn-icon-only{-o-box-sizing:border-box;-ms-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%}.ui-header.ui-bar-s>.ui-btn .ui-btn-inner.ui-btn-icon-only .ui-icon{top:0}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon-notext) .ui-btn-inner.ui-btn-icon-only{padding-left:0}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon_only){width:2.409090909090909rem;height:.8181818181818182rem;top:auto;bottom:.4545454545454546rem}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon_only) .ui-btn-inner{padding:0}.ui-header.ui-bar-s>.ui-btn.ui-btn-back,.ui-header.ui-bar-s>.ui-btn.ui-btn-footer-down{right:.5909090909090909rem}.ui-header.ui-bar-s>.ui-btn.ui-btn-back .ui-icon-header-back-btn,.ui-header.ui-bar-s>.ui-btn.ui-btn-footer-down .ui-icon-header-back-btn{left:0}.ui-header.ui-bar-s img{display:inline-block;height:.7272727272727273rem;width:.7272727272727273rem;margin-left:.36363636363636365rem}.ui-header.ui-bar-s .ui-title-text-sub{position:absolute;top:1.6363636363636365rem;left:.36363636363636365rem;font-size:.5454545454545454rem}.ui-header.ui-bar-s .ui-title-text-sub img{height:.7272727272727273rem;width:.7272727272727273rem;margin-left:.36363636363636365rem}.ui-header.ui-bar-s>.ui-btn{position:absolute;top:.7272727272727273rem;margin-top:0;height:1.5454545454545454rem;width:1.5454545454545454rem;background:transparent;color:#3a3a3a}.ui-header.ui-bar-s.ui-title-tabbar>.ui-btn{top:.36363636363636365rem}.ui-header.ui-bar-s>.ui-btn.ui-btn-icon_only{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-header.ui-bar-s .ui-btn-right-0{right:.5rem}.ui-header.ui-bar-s .ui-btn-right-1{right:2.5454545454545454rem}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon_only):nth-child(2){right:.3181818181818182rem}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon_only):nth-child(3){right:2.8181818181818183rem}.ui-header.ui-bar-s>img+h1+.ui-btn:not(.ui-btn-icon_only):nth-child(3){right:.3181818181818182rem}.ui-header.ui-bar-s>img+h1+.ui-btn:not(.ui-btn-icon_only):nth-child(3)+.ui-btn:not(.ui-btn-icon_only){right:2.8181818181818183rem}.ui-header.ui-bar-s>img+h1+span.ui-title-text-sub+.ui-btn:not(.ui-btn-icon_only):nth-child(4){right:.3181818181818182rem}.ui-header.ui-bar-s>img+h1+span.ui-title-text-sub+.ui-btn:not(.ui-btn-icon_only):nth-child(4)+.ui-btn:not(.ui-btn-icon_only){right:2.8181818181818183rem}.ui-header.ui-bar-s>.ui-btn.ui-btn-down-s{background:rgba(64,147,247,.1);color:#3b73b6}.ui-header.ui-bar-s.ui-title-multiline .ui-title{min-height:1.0909090909090908rem;max-height:1.0909090909090908rem;font-size:1rem;margin:.4090909090909091rem .36363636363636365rem 1rem .36363636363636365rem}.ui-footer.ui-bar-s{height:2.2272727272727275rem;text-align:center;bottom:0}.ui-footer.ui-bar-s>.ui-btn.ui-btn-back,.ui-footer.ui-bar-s>.ui-btn.ui-btn-footer-down,.ui-footer.ui-bar-s>[data-icon="naviframe-more"]{background:transparent}.ui-footer.ui-bar-s>.ui-btn.ui-btn-back>.ui-btn-icon-only,.ui-footer.ui-bar-s>.ui-btn.ui-btn-footer-down>.ui-btn-icon-only,.ui-footer.ui-bar-s>[data-icon="naviframe-more"]>.ui-btn-icon-only{width:2.5454545454545454rem;height:2.2272727272727275rem;padding:0;-webkit-box-shadow:none}.ui-footer.ui-bar-s [data-icon="naviframe-more"]{position:absolute;left:0rem;top:0rem;box-shadow:none;border-width:0}.ui-footer.ui-bar-s [data-icon="naviframe-more"] .ui-icon-naviframe-more{left:.5909090909090909rem;top:.36363636363636365rem;margin-top:0}.ui-footer.ui-bar-s [data-icon="naviframe-more"] .ui-btn-inner{border:0;background:transparent;box-shadow:none}.ui-footer.ui-bar-s>[data-role="button"]{font-size:.6818181818181819rem;font-weight:700;color:#999}.ui-footer.ui-bar-s [data-role="controlgroup"]{margin-left:auto;margin-right:auto;margin-top:.2727272727272727rem;margin-bottom:.2727272727272727rem;padding-left:2.6363636363636362rem;padding-right:2.6363636363636362rem}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"]{background:transparent;border-style:solid;border-color:#c0c0c0;border-top-width:0;border-bottom-width:0;border-left-width:1px;border-right-width:1px;-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;box-shadow:none;padding:0;margin-left:-.18181818181818182rem;margin-right:-.2272727272727273rem}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-hover-s{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-down-s,.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-active-s{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-down-s .ui-btn-inner,.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-active-s .ui-btn-inner{background:#f8f6ef}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-down-s .ui-btn-inner .ui-btn-text,.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-active-s .ui-btn-inner .ui-btn-text{color:#3b73b6}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"]>.ui-btn-inner{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border:0 solid;box-shadow:none}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-text{font-size:.7727272727272727rem;color:#3a3a3a}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-corner-right{border-right-width:0}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-corner-left{border-left-width:0}.ui-footer.ui-bar-s>[data-role="button"]:not([data-icon="naviframe-more"]){top:.2727272727272727rem}.ui-footer.ui-bar-s>p{margin-top:.36363636363636365rem;margin-bottom:.36363636363636365rem}.ui-footer.ui-bar-s>h1,.ui-footer.ui-bar-s h2,.ui-footer.ui-bar-s h3,.ui-footer.ui-bar-s h4,.ui-footer.ui-bar-s h5,.ui-footer.ui-bar-s h6{display:inline-block}.ui-content{position:relative;top:0}.ui-body-s{border:1px solid #2a2a2a;background:#f8f6ef;color:#000;font-weight:400;font-family:Helvetica,Arial,sans-serif}.ui-body-s .ui-link-inherit{color:#fff}.ui-body-s .ui-link{color:#2489CE;font-weight:700}.ui-body-s .ui-link:hover{color:#2489CE}.ui-body-s .ui-link:active{color:#2489CE}.ui-body-s .ui-link:visited{color:#2489CE}.ui-btn-box-s{padding:.045454545454545456rem}.ui-btn-box-s.ui-btn-up-s{color:#3a3a3a;background:#ebe8e3;background:-webkit-linear-gradient(top, #ebe8e3, #eae7e2);background:-moz-linear-gradient(top, #ebe8e3, #eae7e2);background:-o-linear-gradient(top, #ebe8e3, #eae7e2);background:-ms-linear-gradient(top, #ebe8e3, #eae7e2);border:1px solid;border-color:#dcdad3;-o-box-shadow:0 0 1px 1px #fff;-ms-box-shadow:0 0 1px 1px #fff;-moz-box-shadow:0 0 1px 1px #fff;-webkit-box-shadow:0 0 1px 1px #fff;box-shadow:0 0 1px 1px #fff;-o-border-radius:.3rem;-ms-border-radius:.3rem;-moz-border-radius:.3rem;-webkit-border-radius:.3rem;border-radius:.3rem;font-family:Helvetica,Arial,sans-serif;font-weight:400;font-size:1.0rem;font-style:normal;color:#000}.ui-btn.ui-btn-corner-all .ui-btn-box-s.ui-btn-up-s{-o-border-radius:1.2rem;-ms-border-radius:1.2rem;-moz-border-radius:1.2rem;-webkit-border-radius:1.2rem;border-radius:1.2rem}.ui-btn-box-s .ui-btn-inner{border:1px solid;border-color:#c7c5be;-o-border-radius:.3rem;-ms-border-radius:.3rem;-moz-border-radius:.3rem;-webkit-border-radius:.3rem;border-radius:.3rem;-o-box-sizing:border-box;-ms-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;background:#f7f5ee;background:-webkit-linear-gradient(top, #faf7f2, #f8f5f0);background:-ms-linear-gradient(top, #faf7f2, #f8f5f0);background:-o-linear-gradient(top, #faf7f2, #f8f5f0);background:-moz-linear-gradient(top, #faf7f2, #f8f5f0);-o-box-shadow:none;-ms-box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;height:100%}.ui-btn.ui-btn-corner-all.ui-btn-box-s .ui-btn-inner{-o-border-radius:1.2rem;-ms-border-radius:1.2rem;-moz-border-radius:1.2rem;-webkit-border-radius:1.2rem;border-radius:1.2rem}.ui-ctxpopup .ui-btn-box-s.ui-btn-up-s,.ui-ctxpopup .ui-btn-box-s.ui-btn-hover-s{background:transparent!important;border:0;box-shadow:none;padding:0;color:#fff!important}.ui-ctxpopup .ui-btn-box-s.ui-btn-down-s{background:#3b73b6!important;border:0;box-shadow:none;padding:0;color:#fff!important;-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-ctxpopup .ui-btn-box-s .ui-btn-inner{background:transparent ! important;box-shadow:none;border:0}.ui-ctxpopup .ui-btn-down-s{background:#3b73b6!important}.ui-header .ui-btn-box-s,.ui-footer .ui-btn-box-s,.ui-btn-back.ui-btn-up-s,.ui-btn-back.ui-btn-hover-s,.ui-btn-back.ui-btn-down-s,.ui-btn-footer-down.ui-btn-up-s,.ui-btn-footer-down.ui-btn-hover-s,.ui-btn-footer-down.ui-btn-down-s,.ui-popup-container .ui-btn-box-s{font-weight:400;-o-border-radius:.9 rem;-ms-border-radius:.9 rem;-moz-border-radius:.9 rem;-webkit-border-radius:.9 rem;border-radius:.9 rem}.ui-btn-box-s.ui-btn-hover-s{color:#3a3a3a;font-family:Helvetica,Arial,sans-serif;font-weight:400;font-size:1.0rem;font-style:normal;color:#000;-o-border-radius:.3em ! important;-ms-border-radius:.3em ! important;-moz-border-radius:.3em ! important;-webkit-border-radius:.3em ! important;border-radius:.3em ! important}.ui-btn-box-s.ui-btn-hover-s.ui-btn-corner-circle{-o-border-radius:1em ! important;-ms-border-radius:1em ! important;-moz-border-radius:1em ! important;-webkit-border-radius:1em ! important;border-radius:1em ! important}.ui-btn-box-s.ui-btn-hover-s.ui-btn-corner-all{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn-box-s.ui-btn-hover-s.ui-btn-round{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn-box-s.ui-btn-down-s .ui-btn-inner{background:#3b73b6;color:#f8f6ef}.ui-btn-up-s,.ui-btn-hover-s,.ui-btn-down-s{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{color:#3a3a3a;cursor:pointer;text-decoration:none;background:#3b73b6;outline:0}.ui-btn-active a.ui-link-inherit{color:#3a3a3a}.ui-corner-tl{-moz-border-radius-topleft:.3em;-webkit-border-top-left-radius:.3em;border-top-left-radius:.3em}.ui-corner-tr{-moz-border-radius-topright:.3em;-webkit-border-top-right-radius:.3em;border-top-right-radius:.3em}.ui-corner-bl{-moz-border-radius-bottomleft:.3em;-webkit-border-bottom-left-radius:.3em;border-bottom-left-radius:.3em}.ui-corner-br{-moz-border-radius-bottomright:.3em;-webkit-border-bottom-right-radius:.3em;border-bottom-right-radius:.3em}.ui-corner-top{-moz-border-radius-topleft:.3em;-webkit-border-top-left-radius:.3em;border-top-left-radius:.3em;-moz-border-radius-topright:.3em;-webkit-border-top-right-radius:.3em;border-top-right-radius:.3em}.ui-corner-bottom{-moz-border-radius-bottomleft:.3em;-webkit-border-bottom-left-radius:.3em;border-bottom-left-radius:.3em;-moz-border-radius-bottomright:.3em;-webkit-border-bottom-right-radius:.3em;border-bottom-right-radius:.3em}.ui-corner-right{-moz-border-radius-topright:.3em;-webkit-border-top-right-radius:.3em;border-top-right-radius:.3em;-moz-border-radius-bottomright:.3em;-webkit-border-bottom-right-radius:.3em;border-bottom-right-radius:.3em}.ui-corner-left{-moz-border-radius-topleft:.3em;-webkit-border-top-left-radius:.3em;border-top-left-radius:.3em;-moz-border-radius-bottomleft:.3em;-webkit-border-bottom-left-radius:.3em;border-bottom-left-radius:.3em}.ui-corner-none{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-header .ui-btn .ui-btn-icon-only .ui-icon,.ui-footer .ui-btn .ui-btn-icon-only .ui-icon{width:1.4545454545454546rem;height:1.4545454545454546rem}.ui-btn-back .ui-btn-inner .ui-icon-header-back-btn,.ui-btn-footer-down .ui-btn-inner .ui-icon{width:1.4545454545454546rem;height:1.4545454545454546rem;background-repeat:no-repeat;background-size:100% 100%}.ui-btn-up-s,.ui-btn-up-s .ui-icon-header-back-btn,.ui-btn-hover-s .ui-icon-header-back-btn{background-image:url(images/page/00_icon_Back.png)}.ui-btn-up-s .ui-icon-naviframe-more,.ui-btn-hover-s .ui-icon-naviframe-more{background-image:url(images/page/00_icon_more.png)}.ui-btn-up-s .ui-icon-naviframe-cancel,.ui-btn-hover-s .ui-icon-naviframe-cancel{background-image:url(images/00_icon_cancel.png)}.ui-btn-up-s .ui-icon-naviframe-edit,.ui-btn-hover-s .ui-icon-naviframe-edit{background-image:url(images/page/00_icon_edit.png)}.ui-btn-up-s .ui-icon-naviframe-plus,.ui-btn-hover-s .ui-icon-naviframe-plus{background-image:url(images/page/00_icon_plus.png)}.ui-btn-up-s .ui-icon-down,.ui-btn-hover-s .ui-icon-down{background-image:url(images/controls/button/00_button_down.png)}.ui-btn-down-s .ui-icon-header-back-btn{background-image:url(images/page/00_icon_Back_press.png)}.ui-btn-down-s .ui-icon-naviframe-more{background-image:url(images/page/00_icon_more_press.png)}.ui-btn-down-s .ui-icon-naviframe-cancel{background-image:url(images/00_icon_cancel_press.png)}.ui-btn-down-s .ui-icon-naviframe-edit{background-image:url(images/page/00_icon_edit_press.png)}.ui-btn-down-s .ui-icon-naviframe-plus{background-image:url(images/page/00_icon_plus_press.png)}.ui-btn-down-s .ui-icon-down{background-image:url(images/controls/button/00_button_down_press.png)}.ui-disabled{filter:alpha(opacity=30);opacity:.3;zoom:1}.ui-disabled,.ui-disabled a{cursor:default!important;pointer-events:none}.ui-mobile,.ui-mobile body{height:100%;font-size:22px}.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:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}.ui-mobile,.ui-mobile .ui-page{background:#f8f6ef;color:#000}.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 *{transform:rotateY(0);-ms-transform:rotateY(0);-moz-transform:rotateY(0);-webkit-transform:rotateY(0);-o-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:1.4545454545454546rem;text-align:center}.ui-loader .ui-icon{position:static;display:block;opacity:.9;margin:0 auto;width:35px;height:35px;background-color:transparent}.ui-blocker{width:100%;height:100%;z-index:2147483647}.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:fixed;z-index:1000}.ui-header .ui-btn-left{top:.4em;float:left}.ui-header .ui-btn-right{float:right;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-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-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden}.in{-ms-animation-timing-function:ease-out;-ms-animation-duration:350ms;-o-animation-timing-function:ease-out;-o-animation-duration:350ms;-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms}.out{-ms-animation-timing-function:ease-in;-ms-animation-duration:225ms;-o-animation-timing-function:ease-in;-o-animation-duration:225;-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225}@-webkit-keyframes fadein{from{ opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{ opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{ opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{ opacity:1}to{opacity:0}}.fade.out{opacity:0;-ms-animation-duration:125ms;-ms-animation-name:fadeout;-o-animation-duration:125ms;-o-animation-name:fadeout;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout}.fade.in{opacity:1;-ms-animation-duration:225ms;-ms-animation-name:fadein;-o-animation-duration:225ms;-o-animation-name:fadein;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein}.viewport-flip{-ms-perspective:1000;-o-perspective:1000;-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-backface-visibility:hidden;-moz-transform:translate3d(0,0,0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{ -webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{ -moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{ -webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{ -moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{ -webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{ -moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{ -webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{ -moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-moz-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-moz-transform-origin:none;-webkit-box-shadow:none;-moz-box-shadow:none}.flow.out{-webkit-transform:translate3d(-100%,0,0) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translate3d(-100%,0,0) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms}.flow.in{-webkit-transform:translate3d(0,0,0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translate3d(0,0,0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms}.flow.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:flowouttoright;-moz-transform:translate3d(100%,0,0);-moz-animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{ -webkit-transform:translate3d(0,0,0) scale(1)}60%,70%{-webkit-transform:translate3d(0,0,0) scale(.7)}100%{-webkit-transform:translate3d(-100%,0,0) scale(.7)}}@-moz-keyframes flowouttoleft{0%{ -moz-transform:translate3d(0,0,0) scale(1)}60%,70%{-moz-transform:translate3d(0,0,0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{ -webkit-transform:translate3d(0,0,0) scale(1)}60%,70%{-webkit-transform:translate3d(0,0,0) scale(.7)}100%{-webkit-transform:translate3d(100%,0,0) scale(.7)}}@-moz-keyframes flowouttoright{0%{ -moz-transform:translate3d(0,0,0) scale(1)}60%,70%{-moz-transform:translate3d(0,0,0) scale(.7)}100%{-moz-transform:translate3d(100%,0,0) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{ -webkit-transform:translate3d(-100%,0,0) scale(.7)}30%,40%{-webkit-transform:translate3d(0,0,0) scale(.7)}100%{-webkit-transform:translate3d(0,0,0) scale(1)}}@-moz-keyframes flowinfromleft{0%{ -moz-transform:translate3d(-100%,0,0) scale(.7)}30%,40%{-moz-transform:translate3d(0,0,0) scale(.7)}100%{-moz-transform:translate3d(0,0,0) scale(1)}}@-webkit-keyframes flowinfromright{0%{ -webkit-transform:translate3d(100%,0,0) scale(.7)}30%,40%{-webkit-transform:translate3d(0,0,0) scale(.7)}100%{-webkit-transform:translate3d(0,0,0) scale(1)}}@-moz-keyframes flowinfromright{0%{ -moz-transform:translate3d(100%,0,0) scale(.7)}30%,40%{-moz-transform:translate3d(0,0,0) scale(.7)}100%{-moz-transform:translate3d(0,0,0) scale(1)}}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:popin;-moz-animation-name:popin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms}.pop.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;opacity:0;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-moz-transform:scale(.8);-webkit-animation-name:popout;-moz-animation-name:popout}@-webkit-keyframes popin{from{ -webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{ -moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{ -webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{ -moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{ -webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromright{from{ -moz-transform:translate3d(100%,0,0)}to{-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideinfromleft{from{ -webkit-transform:translate3d(-100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromleft{from{ -moz-transform:translate3d(-100%,0,0)}to{-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideouttoleft{from{ -webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes slideouttoleft{from{ -moz-transform:translate3d(0,0,0)}to{-moz-transform:translate3d(-100%,0,0)}}@-webkit-keyframes slideouttoright{from{ -webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes slideouttoright{from{ -moz-transform:translate3d(0,0,0)}to{-moz-transform:translate3d(100%,0,0)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms}.slide.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translate3d(-100%,0,0);-moz-animation-name:slideouttoleft}.slide.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromright;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translate3d(100%,0,0);-moz-animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromleft;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideinfromleft}.slidedown.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slidedown.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromtop;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translate3d(0,-100%,0);-moz-transform:translate3d(0,-100%,0);-webkit-animation-name:slideouttotop;-moz-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{ -webkit-transform:translate3d(0,-100%,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromtop{from{ -moz-transform:translate3d(0,-100%,0)}to{-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideouttotop{from{ -webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(0,-100%,0)}}@-moz-keyframes slideouttotop{from{ -moz-transform:translate3d(0,0,0)}to{-moz-transform:translate3d(0,-100%,0)}}.slideup.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slideup.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfrombottom;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translate3d(0,100%,0);-moz-transform:translate3d(0,100%,0);-webkit-animation-name:slideouttobottom;-moz-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{ -webkit-transform:translate3d(0,100%,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfrombottom{from{ -moz-transform:translate3d(0,100%,0)}to{-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideouttobottom{from{ -webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(0,100%,0)}}@-moz-keyframes slideouttobottom{from{ -moz-transform:translate3d(0,0,0)}to{-moz-transform:translate3d(0,100%,0)}}.slideupfade.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slideupfade.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideupfadeinfrombottom;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideupfadeinfrombottom;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slideupfade.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slideupfade.out.reverse{-webkit-transform:translate3d(0,5%,0);-moz-transform:translate3d(0,5%,0);-webkit-animation-name:slideupfadeouttobottom;-moz-animation-name:slideupfadeouttobottom;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slideupfadeinfrombottom{from{ opacity:0;-webkit-transform:translate3d(0,5%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideupfadeinfrombottom{from{ opacity:0;-moz-transform:translate3d(0,5%,0)}to{opacity:1;-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideupfadeouttobottom{from{ opacity:1;-webkit-transform:translate3d(0,0,0)}to{opacity:0;-webkit-transform:translate3d(0,5%,0)}}@-moz-keyframes slideupfadeouttobottom{from{ opacity:1;-moz-transform:translate3d(0,0,0)}to{opacity:0;-moz-transform:translate3d(0,5%,0)}}.slidedownfade.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slidedownfade.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slidedownfadeinfromtop;-moz-transform:translate3d(0,0,0);-moz-animation-name:slidedownfadeinfromtop;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slidedownfade.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slidedownfade.out.reverse{-webkit-transform:translate3d(0,-5%,0);-moz-transform:translate3d(0,-5%,0);-webkit-animation-name:slidedownfadeouttotop;-moz-animation-name:slidedownfadeouttotop;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slidedownfadeinfromtop{from{ opacity:0;-webkit-transform:translate3d(0,-5%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slidedownfadeinfromtop{from{ opacity:0;-moz-transform:translate3d(0,-5%,0)}to{opacity:1;-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slidedownfadeouttotop{from{ opacity:1;-webkit-transform:translate3d(0,0,0)}to{opacity:0;-webkit-transform:translate3d(0,-5%,0)}}@-moz-keyframes slidedownfadeouttotop{from{ opacity:1;-moz-transform:translate3d(0,0,0)}to{opacity:0;-moz-transform:translate3d(0,-5%,0)}}.slidefade.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translate3d(-100%,0,0);-moz-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-animation-duration:225ms}.slidefade.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:fadein;-moz-transform:translate3d(0,0,0);-moz-animation-name:fadein;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translate3d(100%,0,0);-moz-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:fadein;-moz-transform:translate3d(0,0,0);-moz-animation-name:fadein;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.viewport-turn{-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translate3d(0,0,0);-moz-transform-origin:0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-moz-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{ -webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{ -moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{ -webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{ -moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{ -webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{ -moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{ -webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{ -moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}.depth{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%}.depth.out{-webkit-animation-name:depthout;-moz-animation-name:depthout;opacity:0;-webkit-animation-duration:250ms;-moz-animation-duration:250ms;-webkit-animation-timing-function:ease;-moz-animation-timing-function:ease}.depth.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:depthin;-moz-animation-name:depthin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms;-webkit-animation-timing-function:ease;-moz-animation-timing-function:ease}.depth.in.reverse{-webkit-animation-name:depthinreverse;-moz-animation-name:depthinreverse}.depth.out.reverse{-webkit-transform:scale(.9);-moz-transform:scale(.9);-webkit-animation-name:depthoutreverse;-moz-animation-name:depthoutreverse}@-webkit-keyframes depthout{from{ -webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(1.1);opacity:0}}@-moz-keyframes depthout{from{ -moz-transform:scale(1);opacity:1}to{-moz-transform:scale(1.1);opacity:0}}@-webkit-keyframes depthin{0%{ -webkit-transform:scale(.9);opacity:0}30%{-webkit-transform:scale(.9);opacity:0}100%{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes depthin{0%{ -moz-transform:scale(.9);opacity:0}30%{-moz-transform:scale(.9);opacity:0}100%{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes depthinreverse{0%{ -webkit-transform:scale(1.1);opacity:0}30%{-webkit-transform:scale(1.1);opacity:0}100%{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes depthinreverse{0%{ -moz-transform:scale(1.1);opacity:0}30%{-moz-transform:scale(1.1);opacity:0}100%{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes depthoutreverse{from{ -webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.9);opacity:0}}@-moz-keyframes depthoutreverse{from{ -moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.9);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;vertical-align:middle}.ui-btn:focus,.ui-btn:active{outline:0}.ui-header .ui-btn,.ui-footer .ui-btn,.ui-bar .ui-btn{display:inline-block;font-size:.5909090909090909rem;margin:0}.ui-btn-inline{display:inline-block}.ui-btn-inner{padding:.5em .4090909090909091rem;display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative;zoom:1}.ui-btn-icon-notext{width:1.6363636363636365rem;height:1.6363636363636365rem}.ui-btn-icon-notext .ui-btn-inner{padding:.09090909090909091rem .045454545454545456rem .09090909090909091rem .13636363636363635rem}.ui-btn-icon-notext .ui-btn-inner .ui-icon{margin-left:-.7272727272727273rem;margin-top:-.7272727272727273rem}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-45.409090909090914rem}.ui-btn-icon-left .ui-btn-inner{padding-left:1.5rem}.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:1.2272727272727273rem}.ui-btn-icon-right .ui-btn-inner{padding-right:1.5rem}.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:1.2272727272727273rem}.ui-btn-icon-top .ui-btn-inner{padding-top:1.2272727272727273rem}.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:1.2272727272727273rem}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:1.5rem}.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:1.2272727272727273rem}.ui-btn-icon-notext .ui-icon{display:block}.ui-btn-icon-left .ui-icon,.ui-btn-icon-right .ui-icon,.ui-btn-icon-circle .ui-icon{position:absolute}.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:0rem}.ui-btn-icon-circle .ui-icon{left:0rem}.ui-btn-icon-right .ui-icon{right:.4545454545454546rem}.ui-btn-icon-top .ui-icon{top:0rem;margin-top:0}.ui-btn-icon-bottom .ui-icon{bottom:0rem}.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:.18181818181818182rem}.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:.18181818181818182rem}.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:.18181818181818182rem}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:.1;cursor:pointer;background:transparent;font-size:.045454545454545456rem;border:0;line-height:45.409090909090914rem}.ui-btn-text{margin-left:auto;margin-right:auto;padding:0 1px}.ui-li .ui-btn.ui-btn-icon_only{top:50%;margin-top:-.7272727272727273rem}.ui-li .ui-btn .ui-btn-inner.ui-btn-hastxt{padding:.2em .5em}.ui-btn-icon-nobg.ui-btn-down-s .ui-btn-inner{background:transparent ! important}.ui-btn.ui-btn-box-s.ui-btn-down-s .ui-btn-inner{color:#f8f6ef}.ui-header .ui-btn-box-s:not(.ui-input-cancel):not(.ui-btn-search-front-icon),.ui-header .ui-btn-box-s:not(.ui-input-cancel):not(.ui-btn-search-front-icon) .ui-btn-inner,.ui-header .ui-btn.ui-btn-box-s.ui-btn-down-s:not(.ui-input-cancel):not(.ui-btn-search-front-icon) .ui-btn-inner,.ui-btn.ui-btn-back.ui-btn-up-s .ui-btn-inner,.ui-btn.ui-btn-back.ui-btn-hover-s .ui-btn-inner,.ui-btn.ui-btn-back.ui-btn-down-s .ui-btn-inner,.ui-btn.ui-btn-footer-down.ui-btn-up-s>.ui-btn-inner,.ui-btn.ui-btn-footer-down.ui-btn-hover-s>.ui-btn-inner,.ui-btn.ui-btn-footer-down.ui-btn-down-s>.ui-btn-inner{background:transparent;border:0;box-shadow:none}.ui-btn-icon-top .ui-btn-inner.ui-btn-hastxt,.ui-li .ui-btn-icon-top .ui-btn-inner.ui-btn-hastxt{padding-top:2.3636363636363638rem}.ui-btn-icon-bottom .ui-btn-inner.ui-btn-hastxt,.ui-li .ui-btn-icon-bottom .ui-btn-inner.ui-btn-hastxt{padding-bottom:2.3636363636363638rem}.ui-btn .ui-icon{width:1.4545454545454546rem;height:1.4545454545454546rem}.ui-btn.ui-btn-edit .ui-icon{width:3.3636363636363638rem;height:3.3636363636363638rem}.ui-btn .ui-btn-text.ui-btn-text-padding-left{padding-left:2rem}.ui-btn .ui-btn-text.ui-btn-text-padding-right{padding-right:2.1818181818181817rem}.ui-btn .ui-btn-text.ui-btn-text-padding-top{padding-top:1.4545454545454546rem}.ui-icon{background-repeat:no-repeat;vertical-align:middle;background-position:0 0;background-size:100%}.ui-btn-box.s .ui-icon{position:absolute}.ui-btn-box-s.ui-btn-icon-left .ui-icon,.ui-btn-box-s.ui-btn-icon-right .ui-icon{margin-top:-.7272727272727273rem;top:50%}.ui-btn-box-s.ui-btn-icon-top .ui-icon,.ui-btn-box-s.ui-btn-icon-bottom .ui-icon{margin-left:-.7272727272727273rem;left:50%}.tizen-icon-common{width:1.4545454545454546rem;height:1.4545454545454546rem}.tizen-smallicon-common{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important}.ui-icon-bg{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_btn_circle_bg_normal.png);z-index:0}.ui-icon-arrow-l{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_left.png)}.ui-icon-arrow-r{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_right.png)}.ui-icon-arrow-u{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_opened.png)}.ui-icon-arrow-d{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_closed.png)}.ui-icon-delete{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_cancel.png)}.ui-icon-plus{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_plus.png)}.ui-icon-minus{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_minus.png)}.ui-icon-check{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_check.png)}.ui-icon-gear{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_gear.png)}.ui-icon-refresh{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_refresh.png)}.ui-icon-forward{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_send.png)}.ui-icon-back{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_back.png)}.ui-icon-grid{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_grid.png)}.ui-icon-star{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_star.png)}.ui-icon-alert{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_warning.png)}.ui-icon-info{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_info.png)}.ui-icon-home{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_home.png)}.ui-icon-search{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_search.png)}.ui-icon-call{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_call.png)}.ui-icon-rename{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_rename.png)}.ui-icon-scrolltop{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important;background-image:url(images/controls/button/00_icon_jump.png)}.ui-icon-scrollleft{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important;background-image:url(images/controls/button/00_icon_jump_left.png)}.ui-icon-expandable-divider-opened{width:1.9090909090909092rem;height:1.9090909090909092rem;position:absolute;right:1.2727272727272727rem;top:0rem;background-repeat:no-repeat;background-size:100% 100%;background-image:url(images/00_indexlist_icon_opened.png)}.ui-icon-expandable-divider-closed{width:1.9090909090909092rem;height:1.9090909090909092rem;position:absolute;right:1.2727272727272727rem;top:0rem;background-repeat:no-repeat;background-size:100% 100%;background-image:url(images/00_indexlist_icon_closed.png)}.ui-btn-down-s .ui-icon-bg,.ui-btn-down-s.ui-tizen-icon-bg{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_btn_circle_bg_press.png);z-index:0}.ui-btn-down-s .ui-icon-arrow-l{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_left_press.png)}.ui-btn-down-s .ui-icon-arrow-r{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_right_press.png)}.ui-btn-down-s .ui-icon-arrow-u{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_opened_press.png)}.ui-btn-down-s .ui-icon-arrow-d{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_closed_press.png)}.ui-btn-down-s .ui-icon-delete{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_cancel_press.png)}.ui-btn-down-s .ui-icon-plus{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_plus_press.png)}.ui-btn-down-s .ui-icon-minus{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_minus_press.png)}.ui-btn-down-s .ui-icon-check{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_check_press.png)}.ui-btn-down-s .ui-icon-gear{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_gear_press.png)}.ui-btn-down-s .ui-icon-refresh{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_refresh_press.png)}.ui-btn-down-s .ui-icon-forward{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_send_press.png)}.ui-btn-down-s .ui-icon-back{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_back_press.png)}.ui-btn-down-s .ui-icon-grid{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_grid_press.png)}.ui-btn-down-s .ui-icon-star{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_star_press.png)}.ui-btn-down-s .ui-icon-alert{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_warning_press.png)}.ui-btn-down-s .ui-icon-info{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_info_press.png)}.ui-btn-down-s .ui-icon-home{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_home_press.png)}.ui-btn-down-s .ui-icon-search{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_search_press.png)}.ui-btn-down-s .ui-icon-call{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_call_press.png)}.ui-btn-down-s .ui-icon-rename{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_rename_press.png)}.ui-btn-down-s .ui-icon-scrolltop{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important;background-image:url(images/controls/button/00_icon_jump_press.png)}.ui-btn-down-s .ui-icon-scrollleft{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important;background-image:url(images/controls/button/00_icon_jump_left_press.png)}.ui-btn-inner.ui-btn-icon-only{padding:.7272727272727273rem .7272727272727273rem}.ui-btn-icon-only .ui-btn-text{display:block;width:0;height:0;overflow:hidden}.ui-btn.ui-btn-corner-all{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn.ui-btn-icon-nobg{box-shadow:none}.ui-btn-corner-circle{-o-border-radius:1em ! important;-ms-border-radius:1em ! important;-moz-border-radius:1em ! important;-webkit-border-radius:1em ! important;border-radius:1em ! important}.ui-btn-round{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn-round .ui-btn-inner{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn.ui-btn-icon-nobg,.ui-btn .ui-btn-icon-nobg{background:transparent;background-color:transparent;border:0}.ui-btn.ui-btn-edit .ui-btn-text{color:#f9f9f9}.ui-btn.ui-btn-edit .ui-btn-inner{background:#c95858;background:-webkit-gradient(linear,left top,left bottom,from( #c95858),to( #a12828));background:-moz_linear-gradient(top, #c95858, #a12828)}.ui-btn-box-s{color:#3a3a3a;background:#ebe8e3;background:-webkit-linear-gradient(top, #ebe8e3, #eae7e2);background:-moz-linear-gradient(top, #ebe8e3, #eae7e2);background:-o-linear-gradient(top, #ebe8e3, #eae7e2);background:-ms-linear-gradient(top, #ebe8e3, #eae7e2);border:1px solid;border-color:#dcdad3;-o-box-shadow:0 0 1px 1px #fff;-ms-box-shadow:0 0 1px 1px #fff;-moz-box-shadow:0 0 1px 1px #fff;-webkit-box-shadow:0 0 1px 1px #fff;box-shadow:0 0 1px 1px #fff}.ui-collapsible-inset{margin:.5em 0}.ui-collapsible-inset .ui-collapsible-heading{margin:0}.ui-collapsible-inset .ui-collapsible-heading .ui-btn{border-right-width:1px;border-left-width:1px}.ui-collapsible-collapsed+.ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:0}.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:1px}.ui-collapsible-heading,.ui-collapsible-content>li{position:relative}.ui-collapsible-heading{font-size:1rem;display:block;margin:0 -15px;padding:0;position:relative}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width:0}.ui-collapsible-heading .ui-btn-text{color:#000}.ui-collapsible-heading .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner{padding-left:12px;padding-right:40px}.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner{padding-right:40px;text-align:center}.ui-collapsible-heading .ui-btn-inner>.ui-icon-arrow-d{-webkit-transition:all .33s ease;-moz-transition:all .33s ease;-ms-transition:all .33s ease;-o-transition:all .33s ease;transition:all .33s ease;-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.ui-collapsible-heading .ui-btn-inner>.ui-icon-arrow-u{background-image:url(images/controls/button/00_button_expand_closed.png);-webkit-transition:all .33s ease;-moz-transition:all .33s ease;-ms-transition:all .33s ease;-o-transition:all .33s ease;transition:all .33s ease;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}.ui-collapsible-heading .ui-btn 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 .ui-btn span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading .ui-btn 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 -15px;padding:0 15px;border-left-width:0;border-right-width:0;border-top:0;background-image:none;visibility:visible;overflow:auto;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-ms-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease}.ui-collapsible-inset .ui-collapsible-content{margin:0;border-right-width:1px;border-left-width:1px}.ui-collapsible-content-collapsed{overflow:hidden;max-height:0!important;visibility:hidden}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible:first-child{margin-top:0}.ui-dialog{min-height:480px}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{margin:15px;position:relative}.ui-dialog .ui-header,.ui-dialog .ui-footer{z-index:10;width:auto}.ui-dialog .ui-header .ui-btn-left{width:0;border-width:0}.ui-dialog .center_info{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center}.ui-dialog .center_info .popup-text{font-size:42px;background:#213c49;width:100%}.ui-dialog .center_info .popup-text p{text-align:center;padding:22px 16px}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox,.ui-radio{position:relative;margin:0}.ui-checkbox .ui-btn-corner-all,.ui-radio .ui-btn-corner-all{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{border-top:0}.ui-checkbox .ui-btn-up-s,.ui-radio .ui-btn-up-s{border:0;background:transparent;font-weight:400}.ui-checkbox .ui-btn-hover-s,.ui-radio .ui-btn-hover-s{border:0;background:transparent;font-weight:400}.ui-checkbox .ui-btn-down-s,.ui-radio .ui-btn-down-s{border:0;background:transparent;font-weight:400}.ui-checkbox input,.ui-radio input{z-index:1;margin:0;left:.4545454545454546rem;position:absolute;outline:0!important}.ui-checkbox>input,.ui-radio>input{display:none}.ui-checkbox .ui-btn,.ui-radio .ui-btn{z-index:2;height:100%;margin:0;text-align:left}.ui-checkbox .ui-btn.ui-btn-icon-left,.ui-radio .ui-btn.ui-btn-icon-left{display:inline-block}.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner{min-width:1.8181818181818183rem;display:inline-block;line-height:1.4545454545454546rem;padding:0 .7272727272727273rem 0 .7272727272727273rem}.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text,.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text{display:inline-block;vertical-align:middle;min-height:1.4545454545454546rem}.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text.ui-btn-text-padding-left,.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text.ui-btn-text-padding-left{padding-left:1.0909090909090908rem}.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-icon,.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-icon{position:absolute;top:50%;width:1.4545454545454546rem;height:1.4545454545454546rem;margin-top:-.7272727272727273rem}.ui-checkbox.favorite input{position:absolute;left:-10000px;height:100%;outline:0!important}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left{display:block}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner{display:inline-block;line-height:1.4545454545454546rem;padding:0 0 0 .7272727272727273rem}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text{display:inline-block;vertical-align:middle}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text.ui-btn-text-padding-left{padding-left:1.0909090909090908rem}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-icon{position:absolute;top:50%;width:1.4545454545454546rem;height:1.4545454545454546rem;margin-top:-.7272727272727273rem}.ui-icon-checkbox-off,.ui-icon-checkbox-on,.favorite .ui-icon-checkbox-off,.favorite .ui-icon-checkbox-on,.ui-icon-checkbox-on-press,.ui-icon-checkbox-off-press,.ui-icon-radio-off,.ui-icon-radio-on,.ui-icon-radio-on-press,.ui-icon-radio-off-press{background-size:100% 100%;background-color:transparent}.ui-icon-checkbox-off{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_check_bg.png)}.ui-icon-checkbox-on{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_check_checking.png),url(images/00_check_bg.png);background-repeat:no-repeat}.ui-icon-checkbox-off-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_check_bg_press.png)}.ui-icon-checkbox-on-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_check_checking.png),url(images/00_check_bg_press.png);background-repeat:no-repeat}.favorite .ui-icon-checkbox-off,.favorite .ui-icon-checkbox-off-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/00_icon_favorite_off.png)}.favorite .ui-icon-checkbox-on,.favorite .ui-icon-checkbox-on-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/00_icon_favorite_on.png)}.ui-icon-radio-off{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_button_radio.png)}.ui-icon-radio-on{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_button_radio_select.png),url(images/00_button_radio.png)}.ui-icon-radio-on-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_button_radio.png)}.ui-icon-radio-off-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_button_radio.png)}.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{.ui-field-contain{ border-width:0;padding:0;margin:.8em 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 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}@-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:400;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em}.ui-select .ui-btn-text{text-overflow:ellipsis;overflow:hidden}.ui-selectmenu{position:absolute;padding:0;z-index:100!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){label.ui-select{ vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-select{width:60%;display:inline-block}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:1rem;line-height:1.2;display:block;font-weight:400;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:.7272727272727273rem;display:block}input.ui-input-text{appearance:none;-webkit-appearance:none}textarea.ui-input-text{height:2.272727272727273rem;resize:none;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;-ms-transition:height 200ms linear;transition:height 200ms linear}.ui-input-search{position:relative;padding-right:1.6363636363636365rem;padding-left:1.6363636363636365rem;border:1px solid #999;-webkit-box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999;-moz-box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999;-o-box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999;-ms-box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999;box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999}.ui-input-search input.ui-input-text{width:100%;border:0;background:transparent none;outline:0!important}.ui-input-search .ui-btn-down-s,.ui-input-search .ui-btn-up-s,.ui-input-search .ui-btn-hover-s{border:0;background:transparent none}.ui-input-search .ui-btn-icon-notext.ui-input-clear{width:1.6363636363636365rem;height:1.5rem}.ui-input-search .ui-btn-icon-notext.ui-input-clear .ui-btn-inner{padding:.2727272727272727rem}.ui-input-search .ui-btn-inner .ui-icon-deleteSearch{width:1rem;height:1rem;margin-top:0;margin-left:0}.ui-input-search .ui-input-clear{position:absolute;right:0;top:0;vertical-align:middle}.ui-input-search .ui-input-clear-hidden{display:none}@media all and (min-width: 721px){label.ui-input-text:not([data-type='search']){ vertical-align:top;display:inline-block;margin:0 2% 0 0}input.ui-input-text:not([data-type='search']),textarea.ui-input-text:not([data-type='search']){width:60%;display:inline-block}.ui-input-search input.ui-input-text:not([data-type='search']){width:85%}}.ui-body-s>div>.ui-field-contain>.input-search-bar,.ui-body-s>.ui-field-contain>.input-search-bar{margin:-2.1818181818181817rem -.6818181818181819rem -1.4545454545454546rem -.6818181818181819rem}.input-search-bar{position:relative;background-color:#f8f6ef;padding:.5909090909090909rem;vertical-align:middle}.input-search-bar .ui-corner-all{-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.input-search-bar .ui-input-search{font-size:.7272727272727273rem;display:block;position:relative;background-color:#fff}.input-search-bar .ui-input-search .ui-input-text{height:1.5rem;padding:0;margin-right:1.7272727272727273rem}.input-search-bar .ui-input-search .ui-image-search{position:absolute;top:0;left:0;width:1rem;height:1rem;margin:.2727272727272727rem}.input-search-bar .ui-input-search-default{margin-right:3.409090909090909rem;-webkit-transition:all 400ms linear;-moz-transition:all 400ms linear;-o-transition:all 400ms linear;-ms-transition:all 400ms linear;transition:all 400ms linear}.input-search-bar .ui-input-search-wide{margin-right:0rem;-webkit-transition:all 400ms linear;-moz-transition:all 400ms linear;-o-transition:all 400ms linear;-ms-transition:all 400ms linear;transition:all 400ms linear}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel{display:inline-block;position:absolute;top:.13636363636363635rem;right:0rem;height:1.5rem;margin-right:.4545454545454546rem;vertical-align:middle;padding:0;border-color:none;width:3.090909090909091rem;-webkit-transition:all 400ms linear;-moz-transition:all 400ms linear;-o-transition:all 400ms linear;-ms-transition:all 400ms linear;transition:all 400ms linear}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel .ui-btn-inner{padding-top:.2727272727272727rem;padding-bottom:.2727272727272727rem}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel .ui-btn-inner .ui-btn-text{font-size:.6818181818181819rem}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel.ui-btn-cancel-hide{right:-3.409090909090909rem;visibility:hidden}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel.ui-btn-cancel-show{right:0;visibility:visible}.input-search-bar .ui-search-bar-icon{margin-left:1.9090909090909092rem}.input-search-bar .ui-btn.ui-btn-search-front-icon{position:absolute;width:1.590909090909091rem;height:1.590909090909091rem;top:.09090909090909091rem;border-radius:3rem}.input-search-bar .ui-btn.ui-btn-search-front-icon>.ui-btn-inner.ui-btn-icon-only{border-radius:3rem}.ui-header .input-search-bar{padding-top:.18181818181818182rem;padding-bottom:.18181818181818182rem}.ui-image-search{background-image:url(images/controls/00_search_icon.png);background-repeat:no-repeat;background-size:100% 100%}.ui-icon-deleteSearch{background-image:url(images/controls/00_field_btn_clear.png);background-repeat:no-repeat;background-size:100% 100%}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0 1em}.ui-bar .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:1em;line-height:1.4;font-weight:400;margin:0 0 .3em}.ui-controlgroup-controls{display:block}.ui-controlgroup li{list-style:none}.ui-controlgroup .ui-btn-inner{white-space:nowrap}.ui-controlgroup .ui-checkbox label label,.ui-controlgroup .ui-radio label{font-size:1em}.ui-controlgroup .ui-radio{width:25%;overflow:hidden}.ui-controlgroup .ui-radio label{text-align:center;white-space:nowrap}.ui-controlgroup .ui-radio-off,.ui-controlgroup .ui-radio-on{width:100%}.ui-controlgroup .ui-radio-on .ui-btn-inner{background:#f8f6ef}.ui-controlgroup .ui-radio-on .ui-btn-inner .ui-btn-text{color:#3b73b6}.ui-controlgroup .ui-corner-left{border-left-width:0}.ui-controlgroup .ui-corner-right{border-right-width:0}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-vertical .ui-radio{width:100%}.ui-controlgroup-vertical .ui-radio label{text-align:left}.ui-controlgroup-vertical .ui-radio label .ui-btn-inner{margin-left:.7272727272727273rem;margin-right:.7272727272727273rem}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal .ui-btn{display:inline-block;margin-left:-.18181818181818182rem;margin-right:-.13636363636363635rem}.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{float:left;margin:0 -1px 0 0}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0}.ui-controlgroup-horizontal [data-role="button"]{border-top:0;border-bottom:0;border-radius:0;box-shadow:none;background:0}.ui-controlgroup-horizontal [data-role="button"].ui-btn-down-s .ui-btn-inner,.ui-controlgroup-horizontal [data-role="button"] .ui-btn-active-s .ui-btn-inner{background:#f8f6ef}.ui-controlgroup-horizontal [data-role="button"].ui-btn-down-s .ui-btn-inner .ui-btn-text,.ui-controlgroup-horizontal [data-role="button"] .ui-btn-active-s .ui-btn-inner .ui-btn-text{color:#3b73b6}.ui-controlgroup-horizontal [data-role="button"].ui-btn-down-s .ui-btn-inner{background:-webkit-linear-gradient(top, #d2d2c8 0, #f6f8ef 100%)}.ui-controlgroup-horizontal [data-role="button"]>.ui-btn-inner{border:0 solid;box-shadow:none;padding-top:.2272727272727273rem;padding-bottom:.2272727272727273rem;padding-left:.4545454545454546rem;padding-right:.4545454545454546rem}.ui-controlgroup-horizontal label>span.ui-btn-inner{padding-top:.13636363636363635rem;padding-bottom:.13636363636363635rem}.ui-listview{margin:0;counter-reset:listnumbering;border-top-color:rgba(211,209,203,.5)}.ui-listview li.ui-btn>.ui-btn-hastxt>.ui-btn-text.ui-btn-text-padding-right{padding-right:0rem}.ui-listview .ui-li{border-left-width:0;border-right-width:0;border-top-width:0}.ui-listview .ui-li>.ui-btn-inner{border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgba(211,209,203,.5);margin-left:.5909090909090909rem;margin-right:.5909090909090909rem}.ui-listview .ui-li-static{background-color:#f8f6ef;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgba(211,209,203,.5);margin-left:.5909090909090909rem;margin-right:.5909090909090909rem}.ui-listview .ui-li:not(.ui-li-divider):not(.ui-li-static){min-height:2.5rem}.ui-listview .ui-li.ui-li-has-multiline:not(.ui-li-divider):not(.ui-li-static){min-height:2.909090909090909rem}.ui-listview li.ui-btn-up-s,.ui-listview li.ui-btn-hover-s{background:0;background-color:#f8f6ef;color:#000}.ui-listview li.ui-btn-down-s{background:0;background-color:#5787c2;color:#000}.ui-listview li.ui-btn-up-s>.ui-li>.ui-btn-text>a.ui-link-inherit,.ui-listview li.ui-btn-hover-s>.ui-li>.ui-btn-text>a.ui-link-inherit{color:#000}.ui-listview li.ui-btn-down-s>.ui-li>.ui-btn-text>a.ui-link-inherit{color:#f9f9f9}.ui-content .ui-listview{margin-left:-.36363636363636365rem;margin-right:-.36363636363636365rem;padding-bottom:1px}.ui-content .ui-listview .ui-listview{margin:0}.ui-content .ui-listview-inset{margin:1em 0}.ui-listview,.ui-li,.ui-collapsible-heading{list-style:none;padding:0;font-size:1rem}.ui-li,.ui-collapsible-heading,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left}.ui-li .ui-btn{top:50%;margin-top:-.8em}.ui-li h3,.ui-collapsible-heading h3,.ui-collapsible>.ui-collapsible-content h3,.ui-listview li h3{margin-top:0;margin-bottom:0;font-size:1rem;font-weight:400}.ui-li form,.ui-collapsible-heading form,.ui-collapsible>.ui-collapsible-content form,.ui-listview li form{display:inline-block}.ui-li .ui-btn-text,.ui-collapsible-heading .ui-btn-text,.ui-collapsible>.ui-collapsible-content .ui-btn-text,.ui-listview li .ui-btn-text{position:relative}.ui-li .ui-btn-text a.ui-link-inherit,.ui-collapsible-heading .ui-btn-text a.ui-link-inherit,.ui-collapsible>.ui-collapsible-content .ui-btn-text a.ui-link-inherit,.ui-listview li .ui-btn-text a.ui-link-inherit{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li:last-child,.ui-collapsible-heading:last-child,.ui-collapsible>.ui-collapsible-content:last-child,.ui-listview li:last-child,.ui-li.ui-field-contain:last-child,.ui-collapsible-heading.ui-field-contain:last-child,.ui-collapsible>.ui-collapsible-content.ui-field-contain:last-child,.ui-listview li.ui-field-contain:last-child{border-bottom-width:1px}.ui-li>.ui-btn-inner,.ui-collapsible-heading>.ui-btn-inner,.ui-collapsible>.ui-collapsible-content>.ui-btn-inner,.ui-listview li>.ui-btn-inner,.ui-li.ui-collapsible-heading>.ui-collapsible-heading-toggle,.ui-collapsible-heading.ui-collapsible-heading>.ui-collapsible-heading-toggle,.ui-collapsible>.ui-collapsible-content.ui-collapsible-heading>.ui-collapsible-heading-toggle,.ui-listview li.ui-collapsible-heading>.ui-collapsible-heading-toggle{display:block;position:relative;padding:0;border-width:0}.ui-li>.ui-btn-inner.ui-btn-hastxt,.ui-collapsible-heading>.ui-btn-inner.ui-btn-hastxt,.ui-collapsible>.ui-collapsible-content>.ui-btn-inner.ui-btn-hastxt,.ui-listview li>.ui-btn-inner.ui-btn-hastxt{padding:0 0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-collapsible-heading .ui-btn-inner a.ui-link-inherit,.ui-collapsible>.ui-collapsible-content .ui-btn-inner a.ui-link-inherit,.ui-listview li .ui-btn-inner a.ui-link-inherit,.ui-li .ui-collapsible-heading-toggle>.ui-btn-inner,.ui-collapsible-heading .ui-collapsible-heading-toggle>.ui-btn-inner,.ui-collapsible>.ui-collapsible-content .ui-collapsible-heading-toggle>.ui-btn-inner,.ui-listview li .ui-collapsible-heading-toggle>.ui-btn-inner,.ui-li>li,.ui-collapsible-heading>li,.ui-collapsible>.ui-collapsible-content>li,.ui-listview li>li,.ui-li.ui-li-static,.ui-collapsible-heading.ui-li-static,.ui-collapsible>.ui-collapsible-content.ui-li-static,.ui-listview li.ui-li-static{padding-top:.6818181818181819rem;padding-bottom:.6818181818181819rem;display:block;white-space:normal;border-left-width:0;border-right-width:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-collapsible-heading .ui-btn-inner a.ui-link-inherit,.ui-collapsible>.ui-collapsible-content .ui-btn-inner a.ui-link-inherit,.ui-listview li .ui-btn-inner a.ui-link-inherit,.ui-li .ui-collapsible-heading-toggle,.ui-collapsible-heading .ui-collapsible-heading-toggle,.ui-collapsible>.ui-collapsible-content .ui-collapsible-heading-toggle,.ui-listview li .ui-collapsible-heading-toggle{white-space:normal;overflow:visible!important}.ui-li .ui-toggle-switch:last-child,.ui-collapsible-heading .ui-toggle-switch:last-child,.ui-collapsible>.ui-collapsible-content .ui-toggle-switch:last-child,.ui-listview li .ui-toggle-switch:last-child{top:50%;margin-top:-.7727272727272727rem;display:inline-block;position:absolute;right:0}.ui-li [data-role="button"]:last-child,.ui-collapsible-heading [data-role="button"]:last-child,.ui-collapsible>.ui-collapsible-content [data-role="button"]:last-child,.ui-listview li [data-role="button"]:last-child{position:absolute;right:0}.ui-li .ui-radio:first-child,.ui-collapsible-heading .ui-radio:first-child,.ui-collapsible>.ui-collapsible-content .ui-radio:first-child,.ui-listview li .ui-radio:first-child,.ui-li .ui-checkbox:first-child,.ui-collapsible-heading .ui-checkbox:first-child,.ui-collapsible>.ui-collapsible-content .ui-checkbox:first-child,.ui-listview li .ui-checkbox:first-child{position:absolute;top:50%;margin-top:-.6818181818181819rem;left:-.18181818181818182rem;width:1.3636363636363638rem;height:1.3636363636363638rem}.ui-li .ui-radio:first-child .ui-btn-inner,.ui-collapsible-heading .ui-radio:first-child .ui-btn-inner,.ui-collapsible>.ui-collapsible-content .ui-radio:first-child .ui-btn-inner,.ui-listview li .ui-radio:first-child .ui-btn-inner,.ui-li .ui-checkbox:first-child .ui-btn-inner,.ui-collapsible-heading .ui-checkbox:first-child .ui-btn-inner,.ui-collapsible>.ui-collapsible-content .ui-checkbox:first-child .ui-btn-inner,.ui-listview li .ui-checkbox:first-child .ui-btn-inner{line-height:.9090909090909092rem;color:transparent}.ui-li .ui-radio:first-child .ui-btn-inner .ui-icon,.ui-collapsible-heading .ui-radio:first-child .ui-btn-inner .ui-icon,.ui-collapsible>.ui-collapsible-content .ui-radio:first-child .ui-btn-inner .ui-icon,.ui-listview li .ui-radio:first-child .ui-btn-inner .ui-icon,.ui-li .ui-checkbox:first-child .ui-btn-inner .ui-icon,.ui-collapsible-heading .ui-checkbox:first-child .ui-btn-inner .ui-icon,.ui-collapsible>.ui-collapsible-content .ui-checkbox:first-child .ui-btn-inner .ui-icon,.ui-listview li .ui-checkbox:first-child .ui-btn-inner .ui-icon{left:.2272727272727273rem}.ui-li .ui-radio:first-child label.ui-btn-icon_only,.ui-collapsible-heading .ui-radio:first-child label.ui-btn-icon_only,.ui-collapsible>.ui-collapsible-content .ui-radio:first-child label.ui-btn-icon_only,.ui-listview li .ui-radio:first-child label.ui-btn-icon_only,.ui-li .ui-checkbox:first-child label.ui-btn-icon_only,.ui-collapsible-heading .ui-checkbox:first-child label.ui-btn-icon_only,.ui-collapsible>.ui-collapsible-content .ui-checkbox:first-child label.ui-btn-icon_only,.ui-listview li .ui-checkbox:first-child label.ui-btn-icon_only{top:0;margin-top:0}.ui-li img.ui-li-bigicon,.ui-collapsible-heading img.ui-li-bigicon,.ui-collapsible>.ui-collapsible-content img.ui-li-bigicon,.ui-listview li img.ui-li-bigicon{position:absolute;width:1.590909090909091rem;height:1.590909090909091rem;top:50%;margin-top:-.8181818181818182rem}.ui-li img.ui-li-bigicon:first-child,.ui-collapsible-heading img.ui-li-bigicon:first-child,.ui-collapsible>.ui-collapsible-content img.ui-li-bigicon:first-child,.ui-listview li img.ui-li-bigicon:first-child{left:0}.ui-li img.ui-li-bigicon:nth-child(2),.ui-collapsible-heading img.ui-li-bigicon:nth-child(2),.ui-collapsible>.ui-collapsible-content img.ui-li-bigicon:nth-child(2),.ui-listview li img.ui-li-bigicon:nth-child(2){left:1.6363636363636365rem}.ui-li img.ui-li-bigicon:last-child,.ui-collapsible-heading img.ui-li-bigicon:last-child,.ui-collapsible>.ui-collapsible-content img.ui-li-bigicon:last-child,.ui-listview li img.ui-li-bigicon:last-child{right:.7272727272727273rem}.ui-li .ui-li-color-bar+img.ui-li-bigicon:nth-child(2),.ui-collapsible-heading .ui-li-color-bar+img.ui-li-bigicon:nth-child(2),.ui-collapsible>.ui-collapsible-content .ui-li-color-bar+img.ui-li-bigicon:nth-child(2),.ui-listview li .ui-li-color-bar+img.ui-li-bigicon:nth-child(2){left:0}.ui-li .ui-li-color-bar,.ui-collapsible-heading .ui-li-color-bar,.ui-collapsible>.ui-collapsible-content .ui-li-color-bar,.ui-listview li .ui-li-color-bar{position:absolute;width:.13636363636363635rem;height:100%;top:0rem;left:-.5909090909090909rem;background-color:#000}li.ui-li-thumbnail-right img.ui-li-bigicon.ui-li-thumb{left:auto;right:0;width:2.3181818181818183rem;height:2.3181818181818183rem;margin-top:-1.1363636363636365rem}.ui-li.ui-li-has-multiline .ui-btn-inner a.ui-link-inherit,.ui-li.ui-li-has-multiline.ui-li-static{padding-top:.3181818181818182rem;padding-bottom:1.2727272727272727rem}.ui-li.ui-li-has-multiline a{white-space:normal;overflow:visible!important;padding-right:.7272727272727273rem}.ui-li.ui-li-text-ellipsis .ui-btn-inner a.ui-link-inherit{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li.ui-li-text-ellipsis a{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li.ui-li-text-ellipsis.ui-li-static{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li>input{border-style:none;border-width:0;outline-color:#f8f6ef;font-size:1.0454545454545454rem;line-height:1;padding-top:0;padding-bottom:0}.ui-listview li.ui-li-divider{background:#f8f6ef;color:#3b73b6;border-bottom-width:0;border-top-width:0;cursor:default;counter-reset:listnumbering;font-weight:700;height:1.7272727272727273rem;font-size:.7272727272727273rem}.ui-listview li.ui-li-divider>.ui-btn-inner>.ui-btn-text{font-size:.7272727272727273rem}.ui-listview li.ui-li-divider.ui-btn{top:0;margin-top:0rem;border-radius:0;font-size:.7272727272727273rem}.ui-listview li.ui-li-divider.ui-btn .ui-btn-inner.ui-btn-hastxt{height:100%;padding-left:0}.ui-listview li.ui-li-divider.ui-btn .ui-btn-inner.ui-btn-hastxt .ui-btn-text{position:absolute;top:.2272727272727273rem;height:.8181818181818182rem;padding-right:.4545454545454546rem}.ui-listview li.ui-li-divider:not(.ui-btn){margin-left:.5454545454545454rem;margin-right:.5454545454545454rem}.ui-listview li.ui-li-divider>.ui-btn-text{position:absolute;top:.2272727272727273rem;height:.8181818181818182rem;padding-right:.4545454545454546rem}.ui-listview li.ui-li-divider[data-style="dialogue"]{height:.9090909090909092rem;padding:0;padding-top:.9090909090909092rem;padding-bottom:0rem;padding-left:.4545454545454546rem;margin-left:.18181818181818182rem;margin-right:.18181818181818182rem;font-size:.7272727272727273rem;font-weight:700;color:#3b73b6;background:#f8f6ef}.ui-listview li.ui-li-divider[data-style="check"]{height:1.7272727272727273rem;padding-top:0;padding-bottom:0;padding-left:0}.ui-listview li.ui-li-divider[data-style="check"] label{top:0;margin:0}.ui-listview li.ui-li-divider[data-style="check"] label .ui-btn-inner{z-index:5;position:absolute;width:1.4545454545454546rem;height:1.4545454545454546rem;background:#f8f6ef;padding:0}.ui-listview li.ui-li-divider[data-style="check"] .ui-btn-text{padding-left:1.6818181818181819rem}.ui-listview li.ui-li-divider .ui-divider-normal-line{display:inline-block;position:absolute;top:1.0454545454545454rem;width:100%;height:.09090909090909091rem;background:#3b73b6}.ui-listview li.ui-li-divider.ui-btn-down-s{background:#3b73b6;color:#f8f6ef}.ui-listview li.ui-li-divider.ui-btn-down-s .ui-divider-normal-line{background:#f8f6ef}.ui-listview li.ui-li-divider.ui-btn-down-s label>.ui-btn-inner{background:#3b73b6}.ui-listview li.ui-li-divider+li.ui-li-dialogue{border-top-left-radius:3px;border-top-right-radius:3px}.ui-divider-expand-div{position:absolute;width:4.454545454545455rem;height:1.9090909090909092rem;top:.4545454545454546rem;right:0;border-left-width:1px;border-left-style:solid;border-left-color:rgba(0,0,0,.5)}.ui-li-has-thumb:not(.ui-li-thumbnail-right) .ui-btn-inner a.ui-link-inherit,.ui-li-has-thumb:not(.ui-li-thumbnail-right).ui-li-static{padding-left:2.0454545454545454rem}.ui-li-has-thumb:not(.ui-li-thumbnail-right) .ui-li-text-sub{padding-left:2.0454545454545454rem;padding-right:0}.ui-li-has-checkbox .ui-btn-inner a.ui-link-inherit,.ui-li-has-radio .ui-btn-inner a.ui-link-inherit,.ui-li-has-checkbox.ui-li-static,.ui-li-has-radio.ui-li-static{padding-left:1.6363636363636365rem}.ui-li-has-checkbox .ui-li-text-sub,.ui-li-has-radio .ui-li-text-sub{padding-left:1.6363636363636365rem}.ui-li-has-thumb.ui-li-has-checkbox .ui-btn-inner a.ui-link-inherit,.ui-li-has-thumb.ui-li-has-radio .ui-btn-inner a.ui-link-inherit,.ui-li-has-thumb.ui-li-has-checkbox.ui-li-static,.ui-li-has-thumb.ui-li-has-radio.ui-li-static{padding-left:3.5454545454545454rem}.ui-li-has-thumb.ui-li-has-checkbox .ui-li-text-sub,.ui-li-has-thumb.ui-li-has-radio .ui-li-text-sub{padding-left:3.5454545454545454rem}.ui-li.ui-li-has-right-circle-btn .ui-btn-inner a{padding-right:2.1818181818181817rem}.ui-li.ui-li-has-right-btn:not(.ui-swipe) .ui-btn-inner a{padding-right:3.590909090909091rem}.ui-li.ui-li-thumbnail-right .ui-btn-inner a{padding-right:2.3636363636363638rem}.ui-li.ui-li-static.ui-li-has-right-circle-btn{padding-right:2.1818181818181817rem}.ui-li.ui-li-static.ui-li-has-right-btn:not(.ui-swipe){padding-right:3.590909090909091rem}.ui-li.ui-li-static.ui-li-thumbnail-right{padding-right:2.3636363636363638rem}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-has-icon.ui-li-static{min-height:20px;padding-left:40px}.ui-li-has-icon .ui-li-text-sub{padding-left:40px}.ui-li-heading{font-size:16px;font-weight:700;display:block;margin:.6em 0;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li-thumb,.ui-li-icon{position:absolute;left:1px;top:0;max-height:3.272727272727273rem;max-width:3.272727272727273rem}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-li-sub,.ui-li-sub-setting{float:right;text-align:right;font-size:.7272727272727273rem;margin:.3em 0}.ui-li-text-sub{float:right;text-align:right;font-size:.7272727272727273rem;color:#646464;position:absolute;right:0;top:.9090909090909092rem;width:95%;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li-text-sub>img{position:relative;width:.7727272727272727rem;height:.7727272727272727rem;margin:0 .36363636363636365rem 0 .36363636363636365rem}.ui-li-text-sub2{float:right;text-align:right;font-size:.7272727272727273rem;color:#646464;position:absolute;right:0;top:.7272727272727273rem;width:60%;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li-text-sub2>img{width:.7727272727272727rem;height:.7727272727272727rem;margin:0 0 0 .36363636363636365rem}.ui-li-has-multiline .ui-li-text-sub{position:absolute;text-align:left;right:auto;left:0;top:1.590909090909091rem;margin-top:0;width:90%;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li-has-multiline.ui-li-has-right-btn .ui-btn-inner a .ui-li-text-sub{width:74%}.ui-li-has-multiline.ui-li-has-right-btn.ui-li-has-thumb .ui-btn-inner a .ui-li-text-sub{width:64%}.ui-li-has-multiline.ui-li-static.ui-li-has-right-btn .ui-li-text-sub{width:74%}.ui-li-has-multiline.ui-li-static.ui-li-has-right-btn.ui-li-has-thumb .ui-li-text-sub{width:64%}.ui-li-icon-sub-right,.ui-li-icon-sub{position:absolute;left:auto;width:.7727272727272727rem;height:.7727272727272727rem;margin:0 0}.ui-li-icon-sub-right{right:.36363636363636365rem}.ui-listview li.ui-li-dialogue{margin-left:.18181818181818182rem;margin-right:.18181818181818182rem;padding-left:.4545454545454546rem;padding-right:.4545454545454546rem;border-style:solid;border-color:#8e9aa3;border-width:1px;border-top-width:0}.ui-listview li.ui-li-dialogue>.ui-btn-inner{margin-left:0;margin-right:0;border-bottom-width:0}.ui-listview li.ui-li-dialogue:first-child{border-top-width:1px;border-top-left-radius:3px;border-top-right-radius:3px}.ui-listview li.ui-li-dialogue:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.ui-listview li.ui-li-dialogue>img{margin-left:.2727272727272727rem}.ui-listview li.ui-li-dialogue [data-role="button"]:last-child{margin-right:.4545454545454546rem}.ui-listview li.ui-li-dialogue .ui-link-inherit>.ui-btn{margin-right:0}.ui-listview li.ui-li-dialogue.ui-li-static .ui-li-text-sub,.ui-listview li.ui-li-dialogue.ui-li-static .ui-toggle-switch{right:.4545454545454546rem}.ui-listview li.ui-li-dialogue.ui-li-static.ui-li-has-checkbox,.ui-listview li.ui-li-dialogue.ui-li-static.ui-li-has-radio{padding-left:1.6363636363636365rem}.ui-listview li.ui-li-dialogue.ui-li-static .ui-checkbox,.ui-listview li.ui-li-dialogue.ui-li-static .ui-radio{left:0}.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static .ui-li-text-sub{padding-left:.4545454545454546rem}.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static .ui-li-text-sub2{padding-right:.4545454545454546rem}.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static.ui-li-has-checkbox .ui-li-text-sub,.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static.ui-li-has-radio .ui-li-text-sub{padding-left:1.9090909090909092rem}.ui-listview li.ui-li-divider+.ui-li-dialogue{border-top-width:1px}.ui-listview>li.ui-li-dialogue.ui-body-s:not(.ui-li-expanded),.ui-listview>li.ui-li-dialogue.ui-btn-hover-up-s:not(.ui-btn-down-s):not(.ui-li-expanded),.ui-listview>li.ui-li-dialogue.ui-btn-up-s:not(.ui-li-expanded){background:#efede5}.ui-listview>li.ui-li-dialogue.ui-li-expanded{padding-left:1.1818181818181819rem;background:#dcdad3}.ui-listview>li.ui-li-dialogue.ui-li-divider{height:1.4545454545454546rem;padding:0}.ui-listview>li.ui-li-group-title{padding-top:1.4545454545454546rem}.ui-listview>li.ui-li-group-title span{padding-left:.7272727272727273rem}.ui-listview>li.ui-li-dialogue-divider{padding-top:.9090909090909092rem;padding-bottom:0rem;padding-left:.4545454545454546rem;margin-left:.18181818181818182rem;margin-right:.18181818181818182rem;background:#efede5;font-size:.7272727272727273rem;font-weight:700;color:#3b73b6}.ui-listview li.ui-li-dialogue-edit{padding-left:5.2727272727272725rem;padding-top:.5454545454545454rem;padding-bottom:.5454545454545454rem}.ui-listview li.ui-li-dialogue-edit .ui-edit-title{position:absolute;left:.4545454545454546rem;width:4.136363636363637rem;padding-right:.36363636363636365rem;display:inline-block;top:50%;margin-top:-.5909090909090909rem;border-right-color:#b9b8b2;border-right-width:1px;border-right-style:solid}.ui-listview li.ui-li-dialogue-edit input{font-size:1rem;background:transparent;outline-color:transparent;width:100%;padding-left:0;padding-right:0}.ui-listview>.ui-li.ui-li-dialogue-edit.ui-li-has-right-btn{padding-right:5rem}.ui-listview .ui-li-static.ui-li-bubble-receive,.ui-listview .ui-li-static.ui-li-bubble-left{color:#fff}.ui-listview .ui-li-static.ui-li-bubble-receive>.ui-li-bubble-time,.ui-listview .ui-li-static.ui-li-bubble-left>.ui-li-bubble-time{color:#d30000}.ui-listview .ui-li-static.ui-li-bubble-sent,.ui-listview .ui-li-static.ui-li-bubble-right{color:#000}.ui-listview .ui-li-static.ui-li-bubble-sent>.ui-li-bubble-time,.ui-listview .ui-li-static.ui-li-bubble-right>.ui-li-bubble-time{color:#39a6d7}.ui-listview .ui-li-static.ui-li-bubble-sos{color:#e94949}.ui-listview .ui-li-static.ui-li-bubble-sos>.ui-li-bubble-time{color:#d30000}.ui-listview .ui-li-static.ui-li-bubble-date{background-color:rgba(225,225,225,0);color:#686868;font-style:italic}.ui-listview span.ui-li-bubble-time{font-weight:700}.ui-listview .ui-li-bubble-receive,.ui-listview .ui-li-bubble-left,.ui-listview .ui-li-bubble-sent,.ui-listview .ui-li-bubble-right,.ui-listview .ui-li-bubble-sos{display:inline-block;background-clip:padding-box;max-width:100%;word-wrap:break-word;font-size:.8636363636363636rem}.ui-listview .ui-li-bubble-receive p,.ui-listview .ui-li-bubble-left p,.ui-listview .ui-li-bubble-sent p,.ui-listview .ui-li-bubble-right p,.ui-listview .ui-li-bubble-sos p,.ui-listview .ui-li-bubble-receive span,.ui-listview .ui-li-bubble-left span,.ui-listview .ui-li-bubble-sent span,.ui-listview .ui-li-bubble-right span,.ui-listview .ui-li-bubble-sos span{font-size:.8636363636363636rem}.ui-listview .ui-li-bubble-receive img,.ui-listview .ui-li-bubble-left img,.ui-listview .ui-li-bubble-sent img,.ui-listview .ui-li-bubble-right img,.ui-listview .ui-li-bubble-sos img{position:relative;min-width:7.272727272727273rem;min-height:7.272727272727273rem}.ui-listview .ui-li-bubble-receive,.ui-listview .ui-li-bubble-left{margin-left:0;margin-right:1.6rem;border-image-source:url(images/00_messagebubble_bg_receive.9.png);border-image-slice:57 14 21 48 fill;border-image-width:auto;padding:9px 14px 21px 48px}.ui-listview .ui-li-bubble-receive>.ui-li-bubble-time,.ui-listview .ui-li-bubble-left>.ui-li-bubble-time{position:absolute;display:inline-block;bottom:.36363636363636365rem;left:100%;font-size:.5rem}.ui-listview .ui-li-bubble-sent,.ui-listview .ui-li-bubble-right{margin-left:1.6rem;margin-right:0;border-image-source:url(images/00_messagebubble_bg_sent.9.png);border-image-slice:55 47 20 13 fill;border-image-width:auto;padding:9px 47px 20px 13px}.ui-listview .ui-li-bubble-sent>.ui-li-bubble-time,.ui-listview .ui-li-bubble-right>.ui-li-bubble-time{position:absolute;display:inline-block;bottom:.36363636363636365rem;right:100%;font-size:.5rem}.ui-listview .ui-li-bubble-date{float:left;width:100%;height:1.0909090909090908rem;background-image:url(images/00_messagebubble_date_bg.png);background-repeat:repeat-x;background-position:center center;font-size:.7272727272727273rem;margin:.9090909090909092rem .2727272727272727rem;border:0 none red;padding:0 0;padding-top:.5em;text-align:center}.ui-listview .ui-li-bubble-date *{display:inline-block;background-color:#f8f6ef;padding-left:.5em;padding-right:.5em}@-webkit-keyframes addliitem{from{ -webkit-transform:scale(0.5);-moz-transform:scale(0.5);opacity:0}to{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1}}.addli{-webkit-animation-name:addliitem;-moz-animation-name:addliitem;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-webkit-transition-timing-function:linear;-moz-transition-timing-function:linear}@-webkit-keyframes removeliitem{from{ -webkit-transform:scale(1);-moz-transform:scale(1);opacity:1}to{-webkit-transform:scale(0.5);-moz-transform:scale(0.5);opacity:0}}.removeli{-webkit-animation-name:removeliitem;-moz-animation-name:removeliitem;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-webkit-transition-timing-function:linear;-moz-transition-timing-function:linear}.ui-controlgroup .ui-radio>.ui-btn{background:#f8f6ef}.ui-controlgroup .ui-btn-text{font-size:.7727272727272727rem;font-weight:700;color:#3a3a3a}.ui-controlgroup .ui-btn-inner .ui-corner-left .ui-controlgroup-first{-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.ui-controlgroup .ui-btn-inner .ui-corner-right .ui-controlgroup-last{-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.ui-controlgroup .ui-radio-off.ui-btn-hover-s.ui-btn-down-s .ui-btn-inner,.ui-controlgroup .ui-radio-on .ui-btn-inner{color:#3b7796}.ui-controlgroup .ui-radio-off .ui-btn-inner{color:#3a3a3a}.ui-controlgroup.ui-controlgroup-horizontal .ui-radio .ui-btn-down-s .ui-btn-inner{background:-webkit-linear-gradient(top, #d2d2c8 0, #f6f8ef 100%)}ul.ui-virtual-list-container>li.position_absolute{position:absolute}ul.ui-virtual-list-container>ul.position_absolute{position:absolute}.ui-scrollview-clip{position:relative}.ui-scrollview-view{overflow:visible;overflow-x:hidden}.ui-scrolllistview .ui-li-divider{z-index:10}.ui-scrollbar{position:absolute;overflow:hidden;opacity:0}.ui-scrollbar-visible{opacity:1}.ui-scrollbar-y{top:.09090909090909091rem;right:.09090909090909091rem;bottom:.09090909090909091rem;width:.36363636363636365rem}.ui-scrollbar-x{right:.09090909090909091rem;bottom:.09090909090909091rem;left:.09090909090909091rem;height:.36363636363636365rem}.ui-scrollbar-track{position:relative;width:100%;height:100%}.ui-scrollbar-thumb{position:absolute;top:0;left:0;background-color:#c6c4be}.ui-scrollbar-y .ui-scrollbar-thumb{width:.2272727272727273rem;height:100%;-o-border-radius:.09090909090909091rem;-ms-border-radius:.09090909090909091rem;-moz-border-radius:.09090909090909091rem;-webkit-border-radius:.09090909090909091rem;border-radius:.09090909090909091rem;-o-box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c;-ms-box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c;-moz-box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c;-webkit-box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c;box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c}.ui-scrollbar-x .ui-scrollbar-thumb{width:100%;height:.2272727272727273rem;-o-border-radius:.09090909090909091rem;-ms-border-radius:.09090909090909091rem;-moz-border-radius:.09090909090909091rem;-webkit-border-radius:.09090909090909091rem;border-radius:.09090909090909091rem}.ui-scroll-jump-top-bg{position:absolute;top:.4090909090909091rem;right:.5909090909090909rem;width:1.6818181818181819rem;height:1.6818181818181819rem}.ui-scroll-jump-left-bg{position:absolute;bottom:.4090909090909091rem;left:.5909090909090909rem;width:1.6818181818181819rem;height:1.6818181818181819rem}.ui-overflow-indicator-top{position:absolute;display:block;top:0;width:100%;height:.4545454545454546rem;opacity:0;background:-webkit-gradient(linear,left bottom,left top,color-stop(0, #fff),color-stop(1, #808080))}.ui-overflow-indicator-bottom{position:absolute;display:block;bottom:0;width:100%;height:.4545454545454546rem;opacity:0;background:-webkit-gradient(linear,left bottom,left top,color-stop(0, #808080),color-stop(1, #fff))}.ui-content.ui-scrollview-clip{padding:0}.ui-content.ui-scrollview-clip>div.ui-scrollview-view{margin:0;padding-left:.36363636363636365rem;padding-right:.36363636363636365rem}.ui-content.ui-scrollview-clip>.ui-listview.ui-scrollview-view{margin:0}@-webkit-keyframes ui-datetime-in{from{ -webkit-transform:translateY(0.6363636363636364rem) scale(0.9)}to{-webkit-transform:translateY(0) scale(1)}}@-webkit-keyframes ui-datetime-out{from{ opacity:.8;-webkit-transform:translateY(0) scale(0.6)}to{opacity:0;-webkit-transform:translateY(-.6363636363636364rem) scale(0.6)}}.ui-datefield .ui-datefield-seperator{display:inline-block;min-width:.4545454545454546rem;text-align:center}.ui-datefield .date,.ui-datefield .time,.ui-datefield .ui-datefield-tab{display:inline-block}.ui-datefield .ui-datefield-tab{min-width:.9090909090909092rem}.ui-datefield .ui-btn-box-s .ui-btn-inner.ui-btn-hastxt{padding:.1em .5em}.ui-datefield .ui-datefield-selected{display:inline-block;color:#3b73b6}.ui-datefield .ui-datefield-selected.in{-ms-animation:ui-datetime-in .3s 1 ease;-o-animation:ui-datetime-in .3s 1 ease;-moz-animation:ui-datetime-in .3s 1 ease;-webkit-animation:ui-datetime-in .3s 1 ease}.ui-datefield .ui-datefield-selected.out{-ms-animation:ui-datetime-out .3s 1 ease;-o-animation:ui-datetime-out .3s 1 ease;-moz-animation:ui-datetime-out .3s 1 ease;-webkit-animation:ui-datetime-out .3s 1 ease}.ui-datetime{margin:0;height:1.6363636363636365rem}.ui-datetime-text-main{position:relative;font-size:1rem;top:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding-top:.3em}.ui-datetime-text-main .ui-datefield-period.ui-btn{margin-top:-.3em;height:1.2727272727272727rem;right:auto;position:relative ! important}.ui-datetime-text-sub{top:.6818181818181819rem ! important;color:#3b73b6 ! important;background:transparent ! important;font-size:.7272727272727273rem ! important}.ui-datetimepicker-selector ul{padding:0;display:inline;list-style:none;vertical-align:middle;margin:0}.ui-datetimepicker-selector ul li{font-size:1rem;float:left;padding:.6818181818181819rem .18181818181818182rem 0 .18181818181818182rem;max-width:5.454545454545455rem;min-width:2.7272727272727275rem}.ui-datetimepicker-selector ul li a.ui-link{text-decoration:none;color:rgba(255,255,255,.7)}.ui-datetimepicker-selector ul li a.ui-link:hover{color:rgba(255,255,255,.7)}.ui-datetimepicker-selector ul li.current a.ui-link{color:#fff}.ui-datetimepicker{left:0!important;padding:0}.ui-datetimepicker .ui-popupwindow-padding{background:#3b73b6!important;border-radius:0!important;-ms-border-radius:0!important;-o-border-radius:0!important;-moz-border-radius:0!important;-webkit-border-radius:0!important;box-shadow:0 0 12px rgba(0,0,0,.6)!important;border-width:0!important;text-align:center!important}.ui-datetimepicker .ui-popupwindow-padding div{height:2.409090909090909rem}.ui-popupwindow-screen{background:#000;opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;z-index:1200}.ui-popupwindow{position:absolute;z-index:1201!important;color:#f8f6ef;background:#f8f6ef}.ui-popupwindow .popup-title{width:100%;height:100%;font-size:1.0909090909090908rem;background:#5093b6}.ui-popupwindow .popup-title p{margin:0rem 0rem;padding:.5909090909090909rem 0rem}.ui-popupwindow .popup-text{width:100%;color:#000;font-size:1.0909090909090908rem;background:#f8f6ef}.ui-popupwindow .popup-text p{text-align:center;padding:1rem .7272727272727273rem}.ui-popupwindow .center_info{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center}.ui-popupwindow .center_title{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_basic_1btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_basic_1btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_basic_1btn .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .center_basic_2btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_basic_2btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_basic_2btn .popup-button-bg .ui-btn{width:12.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_basic_3btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_basic_3btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_basic_3btn .popup-button-bg .ui-btn{width:8.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_title_1btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_title_1btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_title_1btn .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .center_title_2btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_title_2btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_title_2btn .popup-button-bg .ui-btn{width:12.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_title_3btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_title_3btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_title_3btn .popup-button-bg .ui-btn{width:8.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_button_vertical{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_button_vertical .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:1px;padding-bottom:.7272727272727273rem;vertical-align:middle}.ui-popupwindow .center_button_vertical .popup-button-bg .ui-btn{width:16.181818181818183rem;height:3.3636363636363638rem;margin-top:.7272727272727273rem;margin-bottom:0rem;margin-left:auto;margin-right:auto}.ui-popupwindow .center_checkbox{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_checkbox .popup-check-bg{font-size:1.0909090909090908rem;background:#f8f6ef;width:100%;padding-top:0rem;padding-bottom:1rem;vertical-align:middle}.ui-popupwindow .center_checkbox .popup-check-bg .ui-checkbox .ui-btn{text-align:center;background:#f8f6ef;border:0rem}.ui-popupwindow .center_checkbox .popup-check-bg .ui-checkbox .ui-btn .ui-btn-inner{border:0rem}.ui-popupwindow .center_checkbox .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_checkbox .popup-button-bg .ui-btn{width:12.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_liststyle_1btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_liststyle_1btn .popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:23.272727272727273rem}.ui-popupwindow .center_liststyle_1btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_liststyle_1btn .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .center_liststyle_2btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_liststyle_2btn .popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:23.272727272727273rem}.ui-popupwindow .center_liststyle_2btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_liststyle_2btn .popup-button-bg .ui-btn{width:12.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_liststyle_3btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_liststyle_3btn .popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:23.272727272727273rem}.ui-popupwindow .center_liststyle_3btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_liststyle_3btn .popup-button-bg .ui-btn{width:8.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_progressbar{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_progressbar .popup-text{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;height:3.181818181818182rem}.ui-popupwindow .center_progressbar .popup-text p{height:100%;text-align:center;padding:1rem .7272727272727273rem 0rem .7272727272727273rem}.ui-popupwindow .center_progressbar .popup-text-bottom-bg{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;vertical-align:middle}.ui-popupwindow .center_progressbar .popup-text-bottom-bg .text-left{width:40%;height:2.1818181818181817rem;padding:0rem .7272727272727273rem 0rem .7272727272727273rem;text-align:left;display:inline-block}.ui-popupwindow .center_progressbar .popup-text-bottom-bg .text-right{width:40%;height:2.1818181818181817rem;padding:0rem .7272727272727273rem 0rem .7272727272727273rem;text-align:right;display:inline-block}.ui-popupwindow .center_progressbar .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_progressbar .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .center_progressbar .popup-progress-bg{background:#f8f6ef;width:100%;height:100%}.ui-popupwindow .centertext_progressbar{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .centertext_progressbar .popup-text{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;padding-top:1rem;padding-bottom:.7272727272727273rem}.ui-popupwindow .centertext_progressbar .popup-text p{text-align:center}.ui-popupwindow .centertext_progressbar .popup-text-bottom-bg{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;vertical-align:middle}.ui-popupwindow .centertext_progressbar .popup-text-bottom-bg .text-left{width:40%;height:1.8181818181818183rem;padding:.7272727272727273rem .7272727272727273rem 1rem .7272727272727273rem;text-align:left;display:inline-block}.ui-popupwindow .centertext_progressbar .popup-text-bottom-bg .text-right{width:40%;height:1.8181818181818183rem;padding:.7272727272727273rem .7272727272727273rem 1rem .7272727272727273rem;text-align:right;display:inline-block}.ui-popupwindow .centertext_progressbar .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .centertext_progressbar .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .centertext_progressbar .popup-progress-bg{background:#f8f6ef;width:100%;height:100%}.ui-popupwindow .ui-btn.ui-btn-hover-s{background:#5e88a3}.ui-popupwindow .ui-btn.ui-btn-down-s{background:#43a0d9;background:-webkit-gradient(linear,left top,left bottom,from( #43a0d9),to( #388bb9));background:-moz-linear-gradient(top, #43a0d9, #388bb9);background:-ms-linear-gradient(top, #43a0d9, #388bb9);background:-o-linear-gradient(top, #43a0d9, #388bb9)}.ui-popupwindow>.ui-volumecontrol{display:table;margin:auto;background:rgba(0,0,0,.666667);width:18.90909090909091rem;height:30.727272727272727rem;padding-top:1rem}.ui-popupwindow>.ui-volumecontrol h1{font-size:1.0909090909090908rem;display:table;margin:auto;color:#c0c0c0}.ui-popupwindow>.ui-volumecontrol .ui-volumecontrol-icon{display:table;width:100%;height:5.818181818181818rem;padding-top:.9545454545454546rem;padding-bottom:.9545454545454546rem;padding-left:7.5rem;padding-right:7.5rem}.ui-popupwindow>.ui-volumecontrol .ui-volumecontrol-indicator{display:table;width:100%;height:19.09090909090909rem;padding-left:3.090909090909091rem;padding-right:3.090909090909091rem}.ui-popupwindow>.ui-volumecontrol .ui-corner-all{-o-border-radius:.3em!important;-ms-border-radius:.3em!important;-moz-border-radius:.3em!important;-webkit-border-radius:.3em!important;border-radius:.3em!important}.ui-popupwindow-corner-all{-o-border-radius:0!important;-ms-border-radius:0!important;-moz-border-radius:0!important;-webkit-border-radius:0!important;border-radius:0!important}.ui-ctxpopup{display:table}.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-top{top:2px}.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-left{left:2px}.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-right{right:2px}.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-bottom{bottom:2px}.ui-ctxpopup .ui-ctxpopup-row{display:table-row}.ui-ctxpopup .ui-ctxpopup-row .ui-ctxpopup-cell{display:table-cell}.ui-ctxpopup .ui-ctxpopup-row .ui-popupwindow-padding{background:#444;border:0;-ms-box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);-o-box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);-moz-box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);-webkit-box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.ui-ctxpopup .ui-listview li.ui-btn-up-s,.ui-ctxpopup .ui-listview li.ui-btn-hover-s{background:transparent}.ui-ctxpopup .ui-listview li:last-child{border-bottom-left-radius:.3em;border-bottom-right-radius:.3em}.ui-ctxpopup .ui-listview li:first-child{border-top-left-radius:.3em;border-top-right-radius:.3em}.ui-ctxpopup .ui-listview{max-width:28.181818181818183rem;border:0}.ui-ctxpopup .ui-listview>.ui-li{color:#fff;border-bottom-color:#2d2d2d;border-top-width:1px;border-top-color:#5b5b5b;margin-left:0;margin-right:0}.ui-ctxpopup .ui-listview>.ui-li:first-child,.ui-ctxpopup .ui-listview>.ui-li:last-child{border-top-width:0}.ui-ctxpopup .ui-listview>.ui-li .ui-btn-inner{margin:0;padding-left:.4545454545454546rem;padding-right:.4545454545454546rem}.ui-ctxpopup .ui-listview li.ui-btn-up-s>.ui-li>.ui-btn-text>a.ui-link-inherit,.ui-ctxpopup .ui-listview li.ui-btn-hover-s>.ui-li>.ui-btn-text>a.ui-link-inherit,.ui-ctxpopup .ui-listview li.ui-btn-down-s>.ui-li>.ui-btn-text>a.ui-link-inherit{color:#fff}.ui-ctxpopup .ui-listview>.ui-li:last-child{border:0}.ui-ctxpopup .horizontal{color:#fff}.ui-ctxpopup .horizontal .icon .ui-btn{padding:0;background:transparent ! important}.ui-ctxpopup .horizontal .icon .ui-btn .ui-btn-icon-only{width:4.363636363636363rem;height:2.909090909090909rem;padding:0}.ui-ctxpopup .horizontal .icon .ui-btn .ui-icon{top:0;height:inherit;width:inherit;margin:0;background-position:center;-ms-background-size:2.1818181818181817rem 2.1818181818181817rem;-moz-background-size:2.1818181818181817rem 2.1818181818181817rem;-o-background-size:2.1818181818181817rem 2.1818181818181817rem;-webkit-background-size:2.1818181818181817rem 2.1818181818181817rem;background-size:2.1818181818181817rem 2.1818181818181817rem}.ui-ctxpopup .horizontal .text{padding:0 .4545454545454546rem;min-width:2.1818181818181817rem}.ui-ctxpopup .horizontal a.ui-link{color:#fff;text-decoration:none}.ui-ctxpopup .horizontal ul{padding:0;display:inline-block;list-style:none;vertical-align:middle;margin:0}.ui-ctxpopup .horizontal li{line-height:1.4545454545454546rem;min-height:1.4545454545454546rem;min-width:2.1818181818181817rem;float:left;display:inline-block;border-right:1px solid #5b5b5b;text-align:center}.ui-ctxpopup .horizontal li:first-of-type{border-top-left-radius:.3em;border-bottom-left-radius:.3em;border-top-right-radius:0 ! important;border-left:0}.ui-ctxpopup .horizontal li:last-of-type{border-top-right-radius:.3em;border-bottom-right-radius:.3em;border-right:0;margin-right:0}.ui-ctxpopup .horizontal .ui-li:first-child,.ui-ctxpopup .horizontal .ui-li:last-child{border-left-width:0}.ui-ctxpopup .horizontal li:active,.ui-ctxpopup .horizontal td:active{background:#3b73b6}.ui-ctxpopup .button table .ui-btn{margin:0rem;padding:0;height:2.5454545454545454rem;width:6rem}.ui-arrow{border-style:solid;border-width:10px;width:0;height:0;position:absolute}.ui-arrow.top{border-color:transparent transparent #444 transparent}.ui-arrow.left{border-color:transparent transparent transparent #444}.ui-arrow.right{border-color:transparent #444 transparent transparent}.ui-arrow.bottom{border-color:#444 transparent transparent transparent}.ui-ctxpopup-container{z-index:1200;display:inline-bloack;position:absolute;padding:0;outline:0}.ui-ctxpopup-container .ui-popup{border:0;background:#444;-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.ui-ctxpopup-container .ui-listview li:first-child{border-top-left-radius:.3em;border-top-right-radius:.3em}.poptop{-webkit-transform-origin:0 0;-moz-transform-origin:0 0}.poptop.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:scalepopin;-moz-animation-name:scalepopin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms}.poptop.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;opacity:0;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.poptop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein}.poptop.out.reverse{-webkit-transform:scale(0.8);-moz-transform:scale(0.8);-webkit-animation-name:scalepopout;-moz-animation-name:scalepopout}@-webkit-keyframes scalepopin{from{ -webkit-transform:scale(0.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}.popbottom{-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%}.popbottom.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:scalepopin;-moz-animation-name:scalepopin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms}.popbottom.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;opacity:0;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.popbottom.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein}.popbottom.out.reverse{-webkit-transform:scale(0.8);-moz-transform:scale(0.8);-webkit-animation-name:scalepopout;-moz-animation-name:scalepopout}@-moz-keyframes scalepopin{from{ -moz-transform:scale(0.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes scalepopout{from{ -webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(0.8);opacity:0}}@-moz-keyframes scalepopout{from{ -moz-transform:scale(1);opacity:1}to{-moz-transform:scale(0.8);opacity:0}}@-webkit-keyframes ui-scale-animation{from{ -webkit-transform:scaleX(0)}to{-webkit-transform:scaleX(1)}}.ui-progressbar-value{height:100%;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0, #3677c3),color-stop(1, #96b8e0));-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem;-o-box-shadow:-1px -1px 1px #b3c8e2;-ms-box-shadow:-1px -1px 1px #b3c8e2;-moz-box-shadow:-1px -1px 1px #b3c8e2;-webkit-box-shadow:-1px -1px 1px #b3c8e2;box-shadow:-1px -1px 1px #b3c8e2}.ui-progressbar-bg{position:relative;overflow:hidden;top:.2272727272727273rem;height:.3181818181818182rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem;border:1px;border-style:solid;border-color:#a3a09e;-o-box-shadow:1px -1px 1px #a3a09e;-ms-box-shadow:1px -1px 1px #a3a09e;-moz-box-shadow:1px -1px 1px #a3a09e;-webkit-box-shadow:1px -1px 1px #a3a09e;box-shadow:1px -1px 1px #a3a09e;background-color:#cac8c4}.ui-progressbar{position:relative;margin-top:.8181818181818182rem;margin-bottom:.8181818181818182rem;margin-left:.9545454545454546rem;margin-right:.9545454545454546rem;height:.8181818181818182rem;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0, #f6f3ef),color-stop(1, #cac8c4));-o-box-shadow:1px 1px 0 #fff;-ms-box-shadow:1px 1px 0 #fff;-moz-box-shadow:1px 1px 0 #fff;-webkit-box-shadow:1px 1px 0 #fff;box-shadow:1px 1px 0 #fff;-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem}@-webkit-keyframes ui-rotate-animation{from{ -webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}.ui-progress-container-circle{position:absolute}.ui-li .ui-progress-container-circle{top:22%}.ui-progress-circle{position:relative;top:0;height:1.4545454545454546rem;width:1.4545454545454546rem;background:url(images/00_list_process_01.png) no-repeat;-ms-background-size:1.4545454545454546rem 1.4545454545454546rem;-moz-background-size:1.4545454545454546rem 1.4545454545454546rem;-o-background-size:1.4545454545454546rem 1.4545454545454546rem;-webkit-background-size:1.4545454545454546rem 1.4545454545454546rem;background-size:1.4545454545454546rem 1.4545454545454546rem}.ui-progress-circle-running{-webkit-animation:ui-rotate-animation 1s infinite linear}@-webkit-keyframes ui-move-animation{from{ -webkit-transform:translateY(-.6363636363636364rem)}to{-webkit-transform:translateY(0)}}.ui-progress-pending{position:relative;top:0;width:100%;height:.9545454545454546rem;padding-top:0;padding-bottom:0;background:-webkit-gradient(linear,left top,right bottom,color-stop(0%,rgba(0,0,0,0)),color-stop(25%,rgba(0,0,0,0)),color-stop(25%, #3677c3),color-stop(50%, #3677c3),color-stop(50%,rgba(0,0,0,0)),color-stop(75%,rgba(0,0,0,0)),color-stop(75%, #3677c3));background-color:#cac8c4;-ms-background-size:.6363636363636364rem .6363636363636364rem;-moz-background-size:.6363636363636364rem .6363636363636364rem;-o-background-size:.6363636363636364rem .6363636363636364rem;-webkit-background-size:.6363636363636364rem .6363636363636364rem;background-size:.6363636363636364rem .6363636363636364rem}.ui-progress-pending-running{-webkit-animation:ui-move-animation .5s infinite linear}label.ui-slider{display:block}select.ui-slider-switch{display:none}.ui-slider-container{position:relative;vertical-align:middle;height:.8181818181818182rem;margin-left:.7272727272727273rem;margin-right:.7272727272727273rem;margin-top:.8181818181818182rem;margin-bottom:.8181818181818182rem;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0, #f6f3ef),color-stop(1, #cac8c4));-o-box-shadow:1px 1px 0 #fff;-ms-box-shadow:1px 1px 0 #fff;-moz-box-shadow:1px 1px 0 #fff;-webkit-box-shadow:1px 1px 0 #fff;box-shadow:1px 1px 0 #fff;-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem}.ui-li>.ui-slider-container{margin-top:0;margin-bottom:0}.ui-slider-left-volume,.ui-slider-left-bright{position:absolute;vertical-align:middle;top:-.5rem;left:-2.272727272727273rem;height:1.6818181818181819rem;width:1.6818181818181819rem;background:url(images/controls/00_slider_button_brightness_01.png) no-repeat;-ms-background-size:1.6818181818181819rem 1.6818181818181819rem;-moz-background-size:1.6818181818181819rem 1.6818181818181819rem;-o-background-size:1.6818181818181819rem 1.6818181818181819rem;-webkit-background-size:1.6818181818181819rem 1.6818181818181819rem;background-size:1.6818181818181819rem 1.6818181818181819rem}.ui-slider-left-volume{background:url(images/controls/00_slider_button_volume_01.png) no-repeat;-ms-background-size:1.6818181818181819rem 1.6818181818181819rem;-moz-background-size:1.6818181818181819rem 1.6818181818181819rem;-o-background-size:1.6818181818181819rem 1.6818181818181819rem;-webkit-background-size:1.6818181818181819rem 1.6818181818181819rem;background-size:1.6818181818181819rem 1.6818181818181819rem}.ui-slider-right-volume,.ui-slider-right-bright{position:absolute;top:-.5rem;right:-2.272727272727273rem;height:1.6818181818181819rem;width:1.6818181818181819rem;vertical-align:middle;background:url(images/controls/00_slider_button_brightness_02.png) no-repeat;-ms-background-size:1.6818181818181819rem 1.6818181818181819rem;-moz-background-size:1.6818181818181819rem 1.6818181818181819rem;-o-background-size:1.6818181818181819rem 1.6818181818181819rem;-webkit-background-size:1.6818181818181819rem 1.6818181818181819rem;background-size:1.6818181818181819rem 1.6818181818181819rem}.ui-slider-right-volume{background:url(images/controls/00_slider_button_volume_02.png) no-repeat;-ms-background-size:1.6818181818181819rem 1.6818181818181819rem;-moz-background-size:1.6818181818181819rem 1.6818181818181819rem;-o-background-size:1.6818181818181819rem 1.6818181818181819rem;-webkit-background-size:1.6818181818181819rem 1.6818181818181819rem;background-size:1.6818181818181819rem 1.6818181818181819rem}.ui-slider-left-text{position:absolute;top:-.5rem;height:1.6818181818181819rem;text-align:center;color:#646464}.ui-slider-right-text{position:absolute;top:-.5rem;height:1.6818181818181819rem;text-align:center;color:#646464}div.ui-slider:not(.ui-toggle-switch){position:relative;top:.2272727272727273rem;height:.3181818181818182rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem;border:1px;border-style:solid;border-color:#a3a09e;-o-box-shadow:1px -1px 1px #a3a09e;-ms-box-shadow:1px -1px 1px #a3a09e;-moz-box-shadow:1px -1px 1px #a3a09e;-webkit-box-shadow:1px -1px 1px #a3a09e;box-shadow:1px -1px 1px #a3a09e;background-color:#cac8c4}div.ui-slider:not(.ui-toggle-switch) .ui-btn{top:-.75rem;margin-top:0}div.ui-slider:not(.ui-toggle-switch) .ui-btn-inner{padding:.3rem 0 0 0}div.ui-slider:not(.ui-toggle-switch) .ui-btn-text{color:#3b73b6}a.ui-slider-handle{position:relative;z-index:10;width:1.6363636363636365rem;height:1.6363636363636365rem;margin-left:-.8636363636363636rem;color:#3b73b6;font-size:.95rem;background:url(images/controls/00_slider_handle.png) no-repeat;-ms-background-size:1.6363636363636365rem 1.6363636363636365rem;-moz-background-size:1.6363636363636365rem 1.6363636363636365rem;-o-background-size:1.6363636363636365rem 1.6363636363636365rem;-webkit-background-size:1.6363636363636365rem 1.6363636363636365rem;background-size:1.6363636363636365rem 1.6363636363636365rem}.ui-slider-popup{position:absolute!important;z-index:1200;width:2.0454545454545454rem;height:2.4545454545454546rem;padding-top:.1rem;color:#f9f9f9;text-align:center;font-size:1.5rem;background:url(images/controls/00_slider_popup_bg.png) no-repeat;-ms-background-size:2.0454545454545454rem 2.4545454545454546rem;-moz-background-size:2.0454545454545454rem 2.4545454545454546rem;-o-background-size:2.0454545454545454rem 2.4545454545454546rem;-webkit-background-size:2.0454545454545454rem 2.4545454545454546rem;background-size:2.0454545454545454rem 2.4545454545454546rem}.ui-slider-bg{position:absolute;height:.3181818181818182rem;width:0;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0, #3677c3),color-stop(1, #96b8e0));-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem;-o-box-shadow:-1px -1px 1px #b3c8e2;-ms-box-shadow:-1px -1px 1px #b3c8e2;-moz-box-shadow:-1px -1px 1px #b3c8e2;-webkit-box-shadow:-1px -1px 1px #b3c8e2;box-shadow:-1px -1px 1px #b3c8e2}.ui-slider-handle-press{position:absolute;z-index:15;width:1.6818181818181819rem;height:1.6818181818181819rem;background:url(images/controls/00_slider_handle_press.png) no-repeat;-ms-background-size:1.6363636363636365rem 1.6363636363636365rem;-moz-background-size:1.6363636363636365rem 1.6363636363636365rem;-o-background-size:1.6363636363636365rem 1.6363636363636365rem;-webkit-background-size:1.6363636363636365rem 1.6363636363636365rem;background-size:1.6363636363636365rem 1.6363636363636365rem}.ui-gallery{position:relative;width:100%}.ui-gallery-bg{display:none;position:absolute;text-align:center;width:100%}@-webkit-keyframes ui-ticker-show{from{ opacity:0;-webkit-transform:translateY(-2.272727272727273rem);top:-2.272727272727273rem}to{opacity:1;-webkit-transform:translateY(0);top:0}}@-webkit-keyframes ui-ticker-hide{from{ opacity:1;-webkit-transform:translateY(0);top:0}to{opacity:0;-webkit-transform:translateY(-2.272727272727273rem);top:-2.272727272727273rem}}.ui-ticker{position:fixed;display:none;left:0;width:100%;height:2.272727272727273rem;z-index:2147483547;background:#444}.ui-ticker.fix{display:block;top:0}.ui-ticker.show{display:block;-ms-animation:ui-ticker-show .8s 1 ease;-o-animation:ui-ticker-show .8s 1 ease;-moz-animation:ui-ticker-show .8s 1 ease;-webkit-animation:ui-ticker-show .8s 1 ease;top:0}.ui-ticker.hide{display:block;-o-animation:ui-ticker-hide .8s 1 ease;-ms-animation:ui-ticker-hide .8s 1 ease;-webkit-animation:ui-ticker-hide .8s 1 ease;top:-2.272727272727273rem}.ui-ticker-btn{position:relative;margin-top:.4545454545454546rem;margin-left:.36363636363636365rem;margin-right:.36363636363636365rem;vertical-align:middle;float:right}.ui-ticker-btn .ui-btn-inner{padding:.15rem 0 0 0;height:1.2727272727272727rem;width:3.5rem;font-size:.81rem;color:#fff;background:#404040;border:1px;border-color:#323232;box-shadow:0 0 1px 1px #323232}.ui-ticker-btn .ui-btn-box-s.ui-btn-up-s{background:#404040;box-shadow:0 0 1px 1px #323232;border-color:#323232}.ui-ticker-btn .ui-btn-box-s.ui-btn-hover-s{background:#404040;box-shadow:0 0 1px 1px #323232;border-color:#323232}.ui-ticker-icon{position:absolute;top:0;height:1.4545454545454546rem;width:1.4545454545454546rem;margin-top:.4090909090909091rem;margin-bottom:.4090909090909091rem;margin-left:.36363636363636365rem;margin-right:.36363636363636365rem;vertical-align:middle}.ui-ticker-text1-bg{position:absolute;top:0;height:.8181818181818182rem;left:2.1818181818181817rem;margin-top:.36363636363636365rem;font-size:.68rem;color:#fff}.ui-ticker-text2-bg{position:absolute;top:0;height:.7272727272727273rem;left:2.1818181818181817rem;margin-top:1.1818181818181819rem;font-size:.54rem;color:#fff}@-webkit-keyframes ui-smallpopup-show{from{ opacity:0;-webkit-transform:scaleY(0)}to{opacity:1;-webkit-transform:scaleY(1)}}@-webkit-keyframes ui-smallpopup-hide{from{ opacity:1;left:0;-webkit-transform:scaleY(1)}to{opacity:0;left:0;-webkit-transform:scaleY(0)}}.ui-smallpopup{position:fixed;display:none;left:0;width:100%;z-index:1100;background:#444;vertical-align:middle;font-size:.72rem;word-break:break-all}.ui-smallpopup.fix{display:block}.ui-smallpopup.show{display:block;-moz-animation:ui-smallpopup-show .5s 1 ease;-ms-animation:ui-smallpopup-show .5s 1 ease;-o-animation:ui-smallpopup-show .5s 1 ease;-webkit-animation:ui-smallpopup-show .5s 1 ease}.ui-smallpopup.hide{display:block;left:-100%;-moz-animation:ui-smallpopup-hide .5s 1 ease;-ms-animation:ui-smallpopup-hide .5s 1 ease;-o-animation:ui-smallpopup-hide .5s 1 ease;-webkit-animation:ui-smallpopup-hide .5s 1 ease}.ui-smallpopup-text-bg{position:relative;margin-top:.18181818181818182rem;margin-bottom:.18181818181818182rem;margin-left:.36363636363636365rem;margin-right:.36363636363636365rem;color:#fff}.ui-swipe{list-style-type:none}.ui-swipe-item{height:1.1818181818181819rem;-ms-user-select:none;-o-user-select:none;-moz-user-select:none;-webkit-user-select:none;-user-select:none;opacity:0;text-align:center}.ui-swipe-item .ui-btn{margin-top:-1.5em ! important;position:relative ! important}.ui-swipe-item p{margin:0}.ui-swipe-item-cover{position:absolute;border:0;top:0;left:0;width:100%;height:100%;z-index:100}.ui-swipe-item-cover .ui-swipe-item-cover-inner{position:absolute;padding-top:.6818181818181819rem;padding-bottom:.6818181818181819rem;padding-left:.36363636363636365rem;width:100%;text-align:left}.ui-swipe-item-cover .ui-swipe-item-cover-inner .ui-li-text-sub{position:absolute;padding-right:.7272727272727273rem}.ui-swipe-item-cover p{margin:0}.ui-fastscroll{position:absolute;right:0rem;background-color:#e6e3d8;width:1.1363636363636365rem;-ms-user-select:none;-o-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none;margin:0;padding-right:.08em;opacity:1}.ui-fastscroll ul{list-style-type:none;margin:0;padding:0}.ui-fastscroll li{cursor:pointer;color:#a09f9a;padding:.09090909090909091rem .09090909090909091rem .09090909090909091rem .09090909090909091rem;text-align:center;vertical-align:middle;font-size:.7272727272727273rem;font-weight:700;border-left-width:.13636363636363635rem;border-left-color:#3b73b6;border-left-style:solid;border-top-width:.13636363636363635rem;border-top-color:#e6e3d8}.ui-fastscroll2{position:absolute;right:0rem;-ms-user-select:none;-o-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none;margin:0;padding-right:.08em;opacity:1}.ui-fastscroll2 ul{list-style-type:none;margin:0;padding:0}.ui-fastscroll2 li{cursor:pointer;color:#a09f9a;padding:.09090909090909091rem .09090909090909091rem .09090909090909091rem .09090909090909091rem;text-align:right}.ui-fastscroll-bg{position:absolute;right:0rem;background-color:#e6e3d8;width:1.1363636363636365rem;z-index:10;top:0}.ui-fastscroll-popup{position:absolute;background:#3b73b6;color:#fff;padding:.4545454545454546rem 1.3636363636363638rem;-ms-box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);-o-box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);-moz-box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);-webkit-box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);text-align:center;font-size:3.409090909090909rem;font-weight:700;display:none;box-sizing:border-box;left:50%;top:50%}li.ui-fastscroll-hover{color:#3b73b6}li.ui-fastscroll-hover,li.ui-fastscroll-hover-up,li.ui-fastscroll-hover-down{background:#f8f6ef;border-style:solid;border-color:#3b73b6;border-width:0;border-right-width:.13636363636363635rem;border-left-width:1px;border-left-color:#f8f6ef}li.ui-fastscroll-hover{padding-top:.045454545454545456rem;padding-bottom:.045454545454545456rem}li.ui-fastscroll-hover-first-item{padding-top:.09090909090909091rem}li.ui-fastscroll-hover-up{border-top-width:.13636363636363635rem;padding-top:0}li.ui-fastscroll-hover-down{border-bottom-width:.13636363636363635rem;padding-bottom:0}div.ui-slider.ui-toggle-switch{width:3rem;height:1.590909090909091rem;background-color:transparent;margin-top:.2272727272727273rem;margin-bottom:.2272727272727273rem}div.ui-slider.ui-toggle-switch .ui-slider-label{position:absolute;width:3rem;height:1.590909090909091rem;background-size:100% 100%;background-repeat:no-repeat;background-color:transparent}div.ui-slider.ui-toggle-switch .ui-slider-label.ui-slider-label-a{background-image:url(images/00_button_on.png)}div.ui-slider.ui-toggle-switch .ui-slider-label.ui-slider-label-b{background-image:url(images/00_button_off.png)}div.ui-slider.ui-toggle-switch .ui-slider-inneroffset a{background:0}.ui-slider-switch:not(.ui-toggle-switch){width:4.181818181818182rem}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch){position:relative;margin-top:.2272727272727273rem;margin-bottom:.2272727272727273rem;height:1.4545454545454546rem;top:0;margin:.2272727272727273rem;border-radius:.6818181818181819rem}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) .ui-slider-inneroffset{position:relative;margin:-1px .7272727272727273rem;z-index:1}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) a.ui-slider-handle{position:absolute;background:#fff;top:50%;margin:1px 0 0 -.6818181818181819rem;border-radius:.6818181818181819rem;border:2px solid gray;width:1.2727272727272727rem;height:1.2727272727272727rem}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) a.ui-slider-handle-snapping{-webkit-transition:left 70ms linear}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span{position:absolute;overflow:hidden;text-align:center;height:1.4545454545454546rem;font-weight:700;font-size:.7272727272727273rem;border-radius:.6818181818181819rem;white-space:nowrap;line-height:2}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span.ui-slider-label-a{left:0;color:#fff;z-index:1;text-indent:-1.5em}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span.ui-slider-label-b{right:0;color:#000;z-index:0;text-indent:1.5em}.ui-slider-switch .ui-slider-handle .ui-btn-inner{padding:0}.ui-triangle-container{position:relative}.ui-triangle-container .ui-triangle{position:absolute;border-style:solid;border-color:transparent;border-width:10px}.ui-triangle-container .ui-triangle-top{top:0;border-top-width:0;border-left-color:transparent;border-right-color:transparent;margin-left:-10px}.ui-triangle-container .ui-triangle-bottom{bottom:0;border-bottom-width:0;border-left-color:transparent;border-right-color:transparent;margin-left:-10px}.ui-triangle-container .ui-triangle-left{left:0;margin-top:-10px;border-left-width:0;border-left-color:transparent;border-right-color:transparent}.ui-triangle-container .ui-triangle-right{right:0;margin-top:-10px;border-right-width:0;border-left-color:transparent;border-right-color:transparent}.ui-triangle-container-top{height:10px;top:0;margin-top:-10px}.ui-triangle-container-bottom{height:10px;bottom:0;margin-bottom:-10px}.ui-triangle-container-left{width:10px}.ui-triangle-container-right{width:10px}.ui-tokentextarea{display:table;outline:0;position:relative}.ui-tokentextarea .ui-tokentextarea-label{display:inline-block;position:relative;margin-left:5px;margin-right:5px;padding:10px 0;color:#666;font-weight:700;text-align:center;font-size:1em}.ui-tokentextarea-input{outline:0;position:relative;border:0!important;padding:0!important;margin:8px;color:#222;text-align:left;font-size:1em}.ui-tokentextarea-input-visible{display:inline-block!important}.ui-tokentextarea-input-invisible{display:none!important}.ui-tokentextarea div{display:inline-block;text-align:center;cursor:pointer;position:relative;margin-left:5px;margin-right:5px;margin-bottom:5px;margin-top:5px;padding:3px 8px;font-size:1em;text-shadow:0 .1em .1em rgba(0,0,0,.3);-ms-border-radius:.2em;-o-border-radius:.2em;-webkit-border-radius:.2em;-moz-border-radius:.2em;border-radius:.2em;-o-box-shadow:0 .1em .1em rgba(0,0,0,.2);-ms-box-shadow:0 .1em .1em rgba(0,0,0,.2);-moz-box-shadow:0 .1em .1em rgba(0,0,0,.2);-webkit-box-shadow:0 .1em .1em rgba(0,0,0,.2);box-shadow:0 .1em .1em rgba(0,0,0,.2);color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}div.ui-tokentextarea-block{background-color:#5f8abd;background-image:url(./images/00_contacts_button_header.png);background-size:contain;background-repeat:no-repeat;padding-left:11px}div.ui-tokentextarea-sblock{background-color:#365984;background-image:url(./images/00_contacts_button_header_press.png);background-size:contain;background-repeat:no-repeat;padding-left:11px}.ui-tokentextarea .ui-tokentextarea-desclabel{display:inline-block;outline:0;position:relative;border:0;color:#666;text-align:left;font-size:1em}.ui-tokentextarea-link-base{position:absolute;right:0;bottom:.2em}.ui-handler{position:absolute;overflow:hidden;opacity:0}.ui-handler-visible{opacity:1}.ui-handler-direction-y{top:.2272727272727273rem;right:.2272727272727273rem;bottom:.2272727272727273rem;width:1.0909090909090908rem}.ui-handler-direction-x{right:.2272727272727273rem;bottom:.2272727272727273rem;left:.2272727272727273rem;height:1.0909090909090908rem}.ui-handler-track{position:relative;width:100%;height:100%}.ui-handler-thumb{position:absolute;top:0;left:0;background-position:center;background-repeat:no-repeat;-o-border-radius:.11363636363636365rem;-ms-border-radius:.11363636363636365rem;-moz-border-radius:.11363636363636365rem;-webkit-border-radius:.11363636363636365rem;border-radius:.11363636363636365rem}.ui-handler-direction-y .ui-handler-thumb{width:1.0909090909090908rem;height:4.863636363636364rem;background-size:1.0909090909090908rem .9090909090909092rem}.ui-handler-direction-x .ui-handler-thumb{width:4.863636363636364rem;height:1.0909090909090908rem;background-size:.9090909090909092rem 1.0909090909090908rem}.ui-handler-s .ui-handler-thumb{background-color:rgba(150,150,150,.5)}.ui-handler-s .ui-handler-direction-y .ui-handler-thumb{background-image:url("images/00_scroll_bar_handler.png")}.ui-handler-s .ui-handler-direction-x .ui-handler-thumb{background-image:url("images/00_scroll_bar_handler_hor.png")}.ui-virtualgrid{overflow:hidden;position:absolute}.ui-virtualgrid-wrapblock{position:absolute;left:0}.ui-virtualgrid-wrapblock-x{float:left;overflow:hidden}.ui-scrollbar-thumb-x{width:1.5rem!important}.ui-scrollbar-thumb-y{height:1.5rem!important}.ui-virtualgrid-overflow-indicator-x-top{position:absolute;display:block;left:0;top:0;width:.4545454545454546rem;height:100%;opacity:0;background:-webkit-gradient(linear,right top,left top,color-stop(0,rgba(128,128,128,0)),color-stop(1, #808080));pointer-events:none}.ui-virtualgrid-overflow-indicator-x-bottom{position:absolute;display:block;right:0;bottom:0;width:.4545454545454546rem;height:100%;opacity:0;background:-webkit-gradient(linear,right top,left top,color-stop(0, #808080),color-stop(1,rgba(128,128,128,0)));pointer-events:none}.ui-virtualgrid-overflow-indicator-y-top{position:absolute;display:block;top:0;width:100%;height:.4545454545454546rem;opacity:0;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,rgba(128,128,128,0)),color-stop(1, #808080));pointer-events:none}.ui-virtualgrid-overflow-indicator-y-bottom{position:absolute;display:block;bottom:0;width:100%;height:.4545454545454546rem;opacity:0;background:-webkit-gradient(linear,left bottom,left top,color-stop(0, #808080),color-stop(1,rgba(128,128,128,0)));pointer-events:none}.ui-content.ui-virtualgrid-content{padding:0}.ui-multimediaview{background-color:#f9f9f9;overflow:hidden}.ui-multimediaview-wrap{width:100%;padding:0;position:relative}.ui-multimediaview-fullscreen{position:absolute!important;z-index:1001}.ui-multimediaview-siblings-off{display:none!important}.ui-multimediaview-control span{display:inline-block}.ui-multimediaview-video{position:absolute}.ui-multimediaview-control{display:block;z-index:1002;padding:0;margin:0;outline:0;border:0;height:1.9090909090909092rem;text-align:left;overflow:hidden}.ui-multimediaview-control span.ui-button{background-position:center center;background-size:80%;background-repeat:no-repeat;width:1.6818181818181819rem;height:1.6818181818181819rem;margin:.09090909090909091rem}.ui-multimediaview-control .ui-playpausebutton{float:left}.ui-multimediaview-control .ui-timestamplabel{text-align:center;float:left}.ui-multimediaview-control .ui-timestamplabel p{margin-top:-.22272727272727275rem;margin-left:.09090909090909091rem;padding:0;text-align:center;font-size:.5rem;line-height:.6363636363636364rem;text-align:left}.ui-multimediaview-control .ui-durationlabel{text-align:center;float:right}.ui-multimediaview-control .ui-durationlabel p{margin-top:-.22272727272727275rem;margin-right:.09090909090909091rem;padding:0;text-align:center;font-size:.5rem;line-height:.6363636363636364rem;text-align:right}.ui-multimediaview-bar{margin-top:.22272727272727275rem;float:left}.ui-multimediaview-bar-bg{height:.36363636363636365rem;border-radius:1.5em}.ui-multimediaview-bar-highlight{height:.36363636363636365rem;position:absolute;border-radius:1.5em}.ui-multimediaview-control .ui-seekbar{margin-left:.09090909090909091rem}.ui-multimediaview-control .ui-seekbar .ui-duration{width:100%}.ui-multimediaview-control .ui-volumecontrol{width:5rem;height:100%;float:left}.ui-multimediaview-control .ui-volumecontrol .ui-volumebar{margin-left:.6818181818181819rem}.ui-multimediaview-control .ui-volumecontrol .ui-volumebar .ui-guide{width:3.8636363636363638rem}.ui-multimediaview-control .ui-volumecontrol .ui-volumebar .ui-handle{margin:0;padding:0;width:.6818181818181819rem;height:.6818181818181819rem;border-style:solid;border-width:1px;border-radius:1.5em}.ui-fullscreen-parents{padding:0!important;margin:0!important;width:100%!important;height:100%!important}.ui-multimediaview-s .ui-multimediaview-video{background-color:rgba(248,246,239,.5)}.ui-multimediaview-s .ui-timestamplabel{color:#4a84c9}.ui-multimediaview-s .ui-durationlabel{color:#808080}.ui-multimediaview-s span.ui-button{background-color:#f8f6ef}.ui-multimediaview-s span.ui-play-icon{background-image:url(./images/00_button_play.png)}.ui-multimediaview-s span.ui-pause-icon{background-image:url(./images/00_button_pause.png)}.ui-multimediaview-s span.ui-volume-icon{background-image:url(./images/controls/00_slider_button_volume_02.png)}.ui-multimediaview-s span.ui-mute-icon{background-image:url(./images/controls/00_slider_button_volume_01.png)}.ui-multimediaview-s span.ui-fullscreen-on{background-image:url(./images/00_button_fullscreen_on.png)}.ui-multimediaview-s span.ui-fullscreen-off{background-image:url(./images/00_button_fullscreen_off.png)}.ui-multimediaview-s .ui-seekbar .ui-duration{background-color:#cbc8c5}.ui-multimediaview-s .ui-seekbar .ui-currenttime{background-color:#4a84c9;background-image:-webkit-gradient(linear,left top,left bottom,from( #6289d9),to( #295b98));background-image:-moz-linear-gradient(top, #6289d9, #295b98);background-image:-o-linear-gradient(top, #6289d9, #295b98);background-image:-ms-linear-gradient(top, #6289d9, #295b98)}.ui-multimediaview-s .ui-volumebar .ui-guide{background-color:#cbc8c5}.ui-multimediaview-s .ui-volumebar .ui-value{background-color:#4a84c9;background-image:-webkit-gradient(linear,left top,left bottom,from( #6289d9),to( #295b98));background-image:-moz-linear-gradient(top, #6289d9, #295b98);background-image:-o-linear-gradient(top, #6289d9, #295b98);background-image:-ms-linear-gradient(top, #6289d9, #295b98)}.ui-multimediaview-s .ui-volumebar .ui-handle{background-color:#f9f9f9;background-image:-webkit-gradient(linear,left top,left bottom,from( #fff),to( #e6e6e6));background-image:-moz-linear-gradient(top, #fff, #e6e6e6);background-image:-o-linear-gradient(top, #fff, #e6e6e6);background-image:-ms-linear-gradient(top, #fff, #e6e6e6);border-color:#bab9b4}.ui-popup-screen{top:0;left:0;width:100%;height:100%;border:0;position:absolute;filter:Alpha(Opacity=50);opacity:0}.ui-popup-screen-background-hack{background-color:#000;filter:Alpha(Opacity=0)}@-webkit-keyframes popup-fadein{from{ opacity:0}to{opacity:.5}}@-moz-keyframes popup-fadein{from{ opacity:0}to{opacity:.5}}@-webkit-keyframes popup-fadeout{from{ opacity:.5}to{opacity:0}}@-moz-keyframes popup-fadeout{from{ opacity:.5}to{opacity:0}}.ui-popup-screen.fade.in{opacity:.5;-webkit-animation-name:popup-fadein;-moz-animation-name:popup-fadein}.ui-popup-screen.fade.out{opacity:0;-webkit-animation-name:popup-fadeout;-moz-animation-name:popup-fadeout}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup>img{width:auto;height:auto;max-width:100%;max-height:100%;vertical-align:middle}.ui-popup iframe{vertical-align:middle}@media all and (min-width: 450px){.ui-popup .ui-field-contain label.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-label,.ui-popup .ui-field-contain label.ui-select,.ui-popup .ui-field-contain label.ui-input-text{ font-size:16px;line-height:1.4;display:block;font-weight:400;margin:0 0 .3em}.ui-popup .ui-field-contain .ui-btn.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-controls,.ui-popup .ui-field-contain .ui-select,.ui-popup .ui-field-contain input.ui-input-text,.ui-popup .ui-field-contain textarea.ui-input-text,.ui-popup .ui-field-contain .ui-input-search{width:100%;display:block}}.ui-popup>.ui-btn-left,.ui-popup>.ui-btn-right{position:absolute;top:-9px;margin:0;z-index:1101}.ui-popup>.ui-btn-left{left:-9px}.ui-popup>.ui-btn-right{right:-9px}.ui-popup-screen{background:#000;opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;z-index:1200}.ui-overlay-dim{opacity:.7}.ui-popup-scroller-bg{width:100%}.ui-popup-container{position:absolute;width:86.12%;z-index:1201!important;background:#f8f6ef;text-align:center;outline-color:#f8f6ef;display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center}.ui-popup-container .ui-popup{padding:3px 2px 2px 2px;background:#f8f6ef;width:100%;word-wrap:break-word}.ui-popup-container .ui-popup>.ui-popup-title,.ui-popup-container .ui-popup>.ui-popup-text,.ui-popup-container .ui-popup>.ui-popup-button-bg{width:100%}.ui-popup-container .ui-popup-title{width:100%;height:1.8181818181818183rem;text-align:left;color:#3b73b6;font-size:1.0909090909090908rem;font-weight:700}.ui-popup-container .ui-popup-title h1{font-size:1.0909090909090908rem;font-weight:700;color:#3b73b6;margin:0;padding-top:.4545454545454546rem;padding-left:.7272727272727273rem}.ui-popup-container .ui-popup-text{margin-top:1rem;margin-bottom:1rem;color:#000;font-size:.9090909090909092rem;background:#f8f6ef;text-align:center}.ui-popup-container .ui-popup-text .ui-li .ui-radio label,.ui-popup-container .ui-popup-text .ui-li .ui-checkbox label{background:transparent}.ui-popup-container .ui-popup-text input{display:inline-block}.ui-popup-container .ui-popup-button-bg{font-size:1.4545454545454546rem;height:1.6818181818181819rem;padding-top:.4545454545454546rem;padding-bottom:.4545454545454546rem;width:100%;vertical-align:middle}.ui-popup-container .ui-popup-button-bg>.ui-btn{display:inline-block;margin:auto;height:1.6818181818181819rem}.ui-popup-container .ui-popup-button-bg .ui-btn-inner{padding-top:.2272727272727273rem;padding-bottom:.2272727272727273rem;padding-left:.9090909090909092rem;padding-right:.9090909090909092rem}.ui-popup-container .center_basic_3btn .ui-btn,.ui-popup-container .center_title_3btn .ui-btn{max-width:3.6363636363636367rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_button_vertical .ui-popup-button-bg{display:block;height:auto}.ui-popup-container .center_button_vertical .ui-popup-button-bg>.ui-btn{display:block;width:9.090909090909092rem}.ui-popup-container .center_checkbox .ui-popup-check-bg{font-size:.9090909090909092rem;background:#f8f6ef;width:100%;padding-top:0rem;padding-bottom:1rem;vertical-align:middle}.ui-popup-container .center_checkbox .ui-popup-check-bg .ui-checkbox .ui-btn{text-align:center;background:#f8f6ef;border:0rem}.ui-popup-container .center_checkbox .ui-popup-check-bg .ui-checkbox .ui-btn .ui-btn-inner{border:0rem}.ui-popup-container .center_checkbox .ui-popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_checkbox .ui-popup-button-bg .ui-btn{width:5rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_liststyle_1btn .ui-popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:11.636363636363637rem}.ui-popup-container .center_liststyle_1btn .ui-popup-button-bg{padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_liststyle_2btn .ui-popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:11.636363636363637rem}.ui-popup-container .center_liststyle_2btn .ui-popup-button-bg{padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_liststyle_2btn .ui-popup-button-bg .ui-btn{width:5rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_liststyle_2btn .ui-popup-button-bg .ui-btn .ui-btn-inner{padding-top:.2272727272727273rem;padding-bottom:.2272727272727273rem;padding-left:.9090909090909092rem;padding-right:.9090909090909092rem}.ui-popup-container .center_title_2btn .ui-popup-button-bg{padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_title_2btn .ui-popup-button-bg .ui-btn{width:5.454545454545455rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_title_2btn .ui-popup-button-bg .ui-btn .ui-btn-inner{padding-top:.2272727272727273rem;padding-bottom:.2272727272727273rem;padding-left:.9090909090909092rem;padding-right:.9090909090909092rem}.ui-popup-container .center_liststyle_3btn .ui-popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:11.636363636363637rem}.ui-popup-container .center_liststyle_3btn .ui-popup-button-bg{padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_liststyle_3btn .ui-popup-button-bg .ui-btn{max-width:3.6363636363636367rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_progressbar{text-align:center}.ui-popup-container .center_progressbar .ui-popup-text{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;height:3.181818181818182rem}.ui-popup-container .center_progressbar .ui-popup-text p{height:100%;text-align:center;padding:1rem .7272727272727273rem 0rem .7272727272727273rem}.ui-popup-container .center_progressbar .ui-popup-text-bottom-bg{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;vertical-align:middle}.ui-popup-container .center_progressbar .ui-popup-text-bottom-bg .text-left{width:40%;height:2.1818181818181817rem;padding:0rem .7272727272727273rem 0rem .7272727272727273rem;text-align:left;display:inline-block}.ui-popup-container .center_progressbar .ui-popup-text-bottom-bg .text-right{width:40%;height:2.1818181818181817rem;padding:0rem .7272727272727273rem 0rem .7272727272727273rem;text-align:right;display:inline-block}.ui-popup-container .center_progressbar .ui-popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_progressbar .ui-popup-button-bg .ui-btn{width:9.136363636363637rem;height:1.6818181818181819rem;margin:auto}.ui-popup-container .center_progressbar .ui-popup-progress-bg{background:#f8f6ef;width:100%;height:100%}.ui-popup-container .centertext_progressbar{text-align:center}.ui-popup-container .centertext_progressbar .ui-popup-text{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;padding-top:1rem;padding-bottom:.7272727272727273rem}.ui-popup-container .centertext_progressbar .ui-popup-text p{text-align:center}.ui-popup-container .centertext_progressbar .ui-popup-text-bottom-bg{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;vertical-align:middle}.ui-popup-container .centertext_progressbar .ui-popup-text-bottom-bg .text-left{width:40%;height:1.8181818181818183rem;padding:.7272727272727273rem .7272727272727273rem 1rem .7272727272727273rem;text-align:left;display:inline-block}.ui-popup-container .centertext_progressbar .ui-popup-text-bottom-bg .text-right{width:40%;height:1.8181818181818183rem;padding:.7272727272727273rem .7272727272727273rem 1rem .7272727272727273rem;text-align:right;display:inline-block}.ui-popup-container .centertext_progressbar .ui-popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .centertext_progressbar .ui-popup-button-bg .ui-btn{width:18.272727272727273rem;height:1.6818181818181819rem;margin:auto}.ui-popup-container .centertext_progressbar .ui-popup-progress-bg{background:#f8f6ef;width:100%;height:100%}.ui-text-ellipsis{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-tabbar{background:#f8f6ef;z-index:1000}.ui-tabbar a.ui-btn{background:#f8f6ef;color:#999;padding-top:.8636363636363636rem;padding-bottom:.8636363636363636rem}.ui-tabbar a.ui-btn .ui-btn-inner{padding-top:0;padding-bottom:0;border-left:1px solid;border-color:#c0c0c0;border-radius:0;-0-border-radius:0;-ms-border-radius:0;-webkit-border-radius:0}.ui-tabbar a.ui-btn .ui-icon{width:1.4545454545454546rem;height:1.4545454545454546rem;background-repeat:no-repeat;background-size:100% 100%}.ui-tabbar.ui-tabbar-persist a.ui-btn{background:#f8f6ef}.ui-tabbar.ui-tabbar-persist a.ui-state-persist,.ui-tabbar.ui-tabbar-persist a.ui-state-persist.ui-btn-active,.ui-tabbar.ui-tabbar-persist a.ui-btn-show-style{color:#3b73b6}.ui-tabbar.ui-tabbar-persist a.ui-btn-hover-s.ui-btn-down-s:not(.ui-state-persist){color:#3b73b6;background:-webkit-linear-gradient(top, #d2d2c8 0, #f6f8ef 100%)}.ui-tabbar:not(.ui-tabbar-persist) a.ui-btn{background:#f8f6ef}.ui-tabbar:not(.ui-tabbar-persist) a.ui-btn-active,.ui-tabbar:not(.ui-tabbar-persist) .ui-btn-show-style{color:#3b73b6}.ui-tabbar:not(.ui-tabbar-persist) a.ui-btn.ui-btn-hover-s.ui-btn-down-s{color:#3b73b6;background:-webkit-linear-gradient(top, #d2d2c8 0, #f6f8ef 100%)}.ui-tabbar .ui-btn-inner{font-size:.6818181818181819rem;font-weight:700}.ui-tabbar .ui-btn-inner .ui-icon{top:.4545454545454546rem;left:50%;margin-left:-.7272727272727273rem}.ui-tabbar.ui-tabbar-notext a.ui-btn{padding-top:.5rem;padding-bottom:.4545454545454546rem}.ui-tabbar.ui-tabbar-notext .ui-btn-inner{height:1.5454545454545454rem}.ui-tabbar.ui-tabbar-notext .ui-btn-inner .ui-icon{top:0}.ui-header.ui-bar-s.ui-title-tabbar .ui-title{font-size:1rem;margin-top:.36363636363636365rem;margin-bottom:0rem}.ui-header.ui-bar-s.ui-title-tabbar .ui-tabbar.ui-tabbar-noicons a.ui-btn{padding-top:.6818181818181819rem;padding-bottom:.5909090909090909rem}.ui-header.ui-bar-s.ui-title-tabbar .ui-tabbar.ui-tabbar-notext a.ui-btn{padding-top:.3181818181818182rem;padding-bottom:.2272727272727273rem}.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn{padding-top:.5rem;padding-bottom:.4545454545454546rem}.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn .ui-btn-inner{height:2.4545454545454546rem}.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn .ui-btn-inner .ui-btn-text{padding-top:0;line-height:3.8636363636363638rem}.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn .ui-btn-inner .ui-icon{top:0}.ui-header.ui-bar-s li:first-child .ui-btn-inner{border-left-width:0}.ui-footer.ui-bar-s .ui-tabbar{height:2.2272727272727275rem;margin-left:auto;margin-right:auto}.ui-footer.ui-bar-s .ui-tabbar a.ui-btn{padding-top:.7272727272727273rem;padding-bottom:.7272727272727273rem}.ui-footer.ui-bar-s .ui-tabbar .ui-btn-inner .ui-icon{top:0}.ui-footer.ui-bar-s .ui-tabbar.ui-tabbar-notext a.ui-btn{padding-top:.36363636363636365rem;padding-bottom:.3181818181818182rem}.ui-footer.ui-bar-s .ui-tabbar li:first-child .ui-btn-inner{border-left-width:0}.ui-footer.ui-bar-s .ui-tabbar.ui-tabbar-margin-back{margin-right:2.5454545454545454rem}.ui-footer.ui-bar-s .ui-tabbar.ui-tabbar-margin-more{margin-left:2.5454545454545454rem}.ui-footer.ui-bar-s .ui-btn-back~.ui-tabbar li:last-child .ui-btn-inner{border-right:1px solid;border-right-color:#c0c0c0}.ui-footer.ui-bar-s [data-icon="naviframe-more"]~.ui-tabbar li:first-child .ui-btn-inner{border-left:1px solid;border-left-color:#c0c0c0}.ui-tabbar-s.ui-navbar-noicons{font-size:1rem}.ui-tabbar .tabbar-scroll-ul{margin-top:0;margin-bottom:0;padding-left:0}.ui-tabbar .tabbar-scroll-ul .tabbar-scroll-li{position:relative;display:inline-block;margin-left:-.36363636363636365rem}.ui-tabbar .tabbar-scroll-ul .tabbar-scroll-li a{width:100%}.ui-tabbar .tabbar-scroll-ul li.tabbar-scroll-li:first-child{margin-left:0}.ui-tabbar-divider{position:absolute;top:0;width:.4545454545454546rem;height:2.5rem;background:-webkit-linear-gradient(left, #00009b 0, #f6f8ef 100%)}.ui-tabbar-divider-left{left:0;border-top-right-radius:.4545454545454546rem;border-bottom-right-radius:.4545454545454546rem;background:-webkit-linear-gradient(left, #999 0, #f6f8ef 100%)}.ui-tabbar-divider-right{right:0;border-top-left-radius:.4545454545454546rem;border-bottom-left-radius:.4545454545454546rem;background:-webkit-linear-gradient(right, #999 0, #f6f8ef 100%)}.ui-splitview{margin:0;padding:0;position:relative}.ui-splitview .ui-pane{position:absolute;overflow:hidden;border:0;margin:0;padding:0}.ui-splitview .ui-pane .ui-listview{margin:0;padding:0}.ui-splitview .ui-spliter{position:absolute;z-index:100;display:block;margin:0;padding:0}.ui-splitview .ui-spliter-bar{background-color:#b3b3b3;border-color:#000;border-style:solid}.ui-splitview .ui-spliter-handle{margin:0;padding:0;cursor:move;display:block;text-align:center;cursor:pointer;position:relative;background-position:center center;background-repeat:no-repeat;background-size:100% 100%}.ui-direction-horizontal>.ui-spliter{width:60px}.ui-direction-vertical>.ui-spliter{height:60px}.ui-direction-horizontal>.ui-spliter>.ui-spliter-bar{width:13px;margin:0 0 0 25px;border-width:1px 1px 1px 0}.ui-direction-vertical>.ui-spliter>.ui-spliter-bar{height:13px;margin:25px 0 0 0;border-width:0 1px 1px 1px}.ui-spliter-active>.ui-spliter-bar{background-color:#5787c2}.ui-direction-horizontal>.ui-spliter>.ui-spliter-bar>.ui-spliter-handle{width:13px;height:26px;background-image:url(./images/00_splite_handler_v.png)}.ui-direction-vertical>.ui-spliter>.ui-spliter-bar>.ui-spliter-handle{width:26px;height:13px;background-image:url(./images/00_splite_handler_h.png)}.ui-direction-horizontal>.ui-fixed{width:0}.ui-direction-horizontal>.ui-fixed>.ui-spliter-bar{width:5px}.ui-direction-vertical>.ui-fixed{height:0}.ui-direction-vertical>.ui-fixed>.ui-spliter-bar{height:5px}.ui-fixed .ui-spliter-handle{display:none}
\ No newline at end of file
+.ui-bar-s{border:0;background:#f8f6ef;color:#3b73b6;font-family:Helvetica,Arial,sans-serif;font-weight:700;font-size:1.2727272727272727rem}.ui-bar-s .ui-link-inherit{color:#3b73b6}.ui-bar-s>.ui-btn.ui-btn-back,.ui-bar-s>.ui-btn.ui-btn-footer-down{background:transparent;position:absolute;right:0}.ui-bar-s>.ui-btn.ui-btn-back .ui-icon-header-back-btn,.ui-bar-s>.ui-btn.ui-btn-footer-down .ui-icon-header-back-btn{top:.36363636363636365rem;left:auto;right:.5909090909090909rem;margin-top:0}.ui-bar-s>.ui-btn.ui-btn-footer-down{border:0;box-shadow:none}.ui-bar-s>.ui-btn.ui-btn-footer-down .ui-icon{top:.36363636363636365rem;margin-top:0}.ui-header.ui-bar-s{position:fixed;top:0;min-height:2.5rem}.ui-header.ui-bar-s .ui-title{display:inline-block;color:#3b73b6;min-height:1.2727272727272727rem;max-height:1.5454545454545454rem;font-size:1.2727272727272727rem;font-weight:500;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important;text-align:left;margin:.7272727272727273rem .36363636363636365rem .2272727272727273rem .36363636363636365rem}.ui-header.ui-bar-s>.ui-btn .ui-btn-inner.ui-btn-icon-only{-o-box-sizing:border-box;-ms-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%}.ui-header.ui-bar-s>.ui-btn .ui-btn-inner.ui-btn-icon-only .ui-icon{top:0}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon-notext) .ui-btn-inner.ui-btn-icon-only{padding-left:0}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon_only){width:2.409090909090909rem;height:.8181818181818182rem;top:auto;bottom:.4545454545454546rem}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon_only) .ui-btn-inner{padding:0}.ui-header.ui-bar-s>.ui-btn.ui-btn-back,.ui-header.ui-bar-s>.ui-btn.ui-btn-footer-down{right:.5909090909090909rem}.ui-header.ui-bar-s>.ui-btn.ui-btn-back .ui-icon-header-back-btn,.ui-header.ui-bar-s>.ui-btn.ui-btn-footer-down .ui-icon-header-back-btn{left:0}.ui-header.ui-bar-s img{display:inline-block;height:.7272727272727273rem;width:.7272727272727273rem;margin-left:.36363636363636365rem}.ui-header.ui-bar-s .ui-title-text-sub{position:absolute;top:1.6363636363636365rem;left:.36363636363636365rem;font-size:.5454545454545454rem}.ui-header.ui-bar-s .ui-title-text-sub img{height:.7272727272727273rem;width:.7272727272727273rem;margin-left:.36363636363636365rem}.ui-header.ui-bar-s>.ui-btn{position:absolute;top:.7272727272727273rem;margin-top:0;height:1.5454545454545454rem;width:1.5454545454545454rem;background:transparent;color:#3a3a3a}.ui-header.ui-bar-s.ui-title-tabbar>.ui-btn{top:.36363636363636365rem}.ui-header.ui-bar-s>.ui-btn.ui-btn-icon_only{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-header.ui-bar-s .ui-btn-right-0{right:.5rem}.ui-header.ui-bar-s .ui-btn-right-1{right:2.5454545454545454rem}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon_only):nth-child(2){right:.3181818181818182rem}.ui-header.ui-bar-s>.ui-btn:not(.ui-btn-icon_only):nth-child(3){right:2.8181818181818183rem}.ui-header.ui-bar-s>img+h1+.ui-btn:not(.ui-btn-icon_only):nth-child(3){right:.3181818181818182rem}.ui-header.ui-bar-s>img+h1+.ui-btn:not(.ui-btn-icon_only):nth-child(3)+.ui-btn:not(.ui-btn-icon_only){right:2.8181818181818183rem}.ui-header.ui-bar-s>img+h1+span.ui-title-text-sub+.ui-btn:not(.ui-btn-icon_only):nth-child(4){right:.3181818181818182rem}.ui-header.ui-bar-s>img+h1+span.ui-title-text-sub+.ui-btn:not(.ui-btn-icon_only):nth-child(4)+.ui-btn:not(.ui-btn-icon_only){right:2.8181818181818183rem}.ui-header.ui-bar-s>.ui-btn.ui-btn-down-s{background:rgba(64,147,247,.1);color:#3b73b6}.ui-header.ui-bar-s.ui-title-multiline .ui-title{min-height:1.0909090909090908rem;max-height:1.0909090909090908rem;font-size:1rem;margin:.4090909090909091rem .36363636363636365rem 1rem .36363636363636365rem}.ui-footer.ui-bar-s{height:2.2272727272727275rem;text-align:center;bottom:0}.ui-footer.ui-bar-s>.ui-btn.ui-btn-back,.ui-footer.ui-bar-s>.ui-btn.ui-btn-footer-down,.ui-footer.ui-bar-s>[data-icon="naviframe-more"]{background:transparent}.ui-footer.ui-bar-s>.ui-btn.ui-btn-back>.ui-btn-icon-only,.ui-footer.ui-bar-s>.ui-btn.ui-btn-footer-down>.ui-btn-icon-only,.ui-footer.ui-bar-s>[data-icon="naviframe-more"]>.ui-btn-icon-only{width:2.5454545454545454rem;height:2.2272727272727275rem;padding:0;-webkit-box-shadow:none}.ui-footer.ui-bar-s>.ui-btn.ui-btn-back,.ui-footer.ui-bar-s>.ui-btn.ui-btn-footer-down{top:0}.ui-footer.ui-bar-s>.ui-btn.ui-btn-footer-down .ui-icon{left:auto;right:.5909090909090909rem}.ui-footer.ui-bar-s [data-icon="naviframe-more"]{position:absolute;left:0rem;top:0rem;box-shadow:none;border-width:0}.ui-footer.ui-bar-s [data-icon="naviframe-more"] .ui-icon-naviframe-more{left:.5909090909090909rem;top:.36363636363636365rem;margin-top:0}.ui-footer.ui-bar-s [data-icon="naviframe-more"] .ui-btn-inner{border:0;background:transparent;box-shadow:none}.ui-footer.ui-bar-s>[data-role="button"]{font-size:.6818181818181819rem;font-weight:700;color:#999}.ui-footer.ui-bar-s [data-role="controlgroup"]{margin-left:auto;margin-right:auto;margin-top:.2727272727272727rem;margin-bottom:.2727272727272727rem;padding-left:2.6363636363636362rem;padding-right:2.6363636363636362rem}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"]{background:transparent;border-style:solid;border-color:#b2b1ae;border-top-width:0;border-bottom-width:0;border-left-width:1px;border-right-width:1px;-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;box-shadow:none;padding:0;margin-left:-.18181818181818182rem;margin-right:-.2272727272727273rem}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-hover-s{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-down-s,.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-active-s{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-down-s .ui-btn-inner,.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-active-s .ui-btn-inner{background:#f8f6ef}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-btn-down-s .ui-btn-inner .ui-btn-text,.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-active-s .ui-btn-inner .ui-btn-text{color:#3b73b6}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"]>.ui-btn-inner{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border:0 solid;box-shadow:none}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"] .ui-btn-text{font-size:.7727272727272727rem;color:#3a3a3a}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-corner-right{border-right-width:0}.ui-footer.ui-bar-s [data-role="controlgroup"] [data-role="button"].ui-corner-left{border-left-width:0}.ui-footer.ui-bar-s>[data-role="button"]:not([data-icon="naviframe-more"]){top:.2727272727272727rem}.ui-footer.ui-bar-s>p{margin-top:.36363636363636365rem;margin-bottom:.36363636363636365rem}.ui-footer.ui-bar-s>h1,.ui-footer.ui-bar-s h2,.ui-footer.ui-bar-s h3,.ui-footer.ui-bar-s h4,.ui-footer.ui-bar-s h5,.ui-footer.ui-bar-s h6{display:inline-block}.ui-content{position:relative;top:0}.ui-body-s{border:1px solid #2a2a2a;background:#f8f6ef;color:#000;font-weight:400;font-family:Helvetica,Arial,sans-serif}.ui-body-s .ui-link-inherit{color:#fff}.ui-body-s .ui-link{color:#2489CE;font-weight:700}.ui-body-s .ui-link:hover{color:#2489CE}.ui-body-s .ui-link:active{color:#2489CE}.ui-body-s .ui-link:visited{color:#2489CE}.ui-btn-box-s{padding:.045454545454545456rem}.ui-btn-box-s.ui-btn-up-s{color:#3a3a3a;background:#ebe8e3;background:-webkit-linear-gradient(top, #ebe8e3, #eae7e2);background:-moz-linear-gradient(top, #ebe8e3, #eae7e2);background:-o-linear-gradient(top, #ebe8e3, #eae7e2);background:-ms-linear-gradient(top, #ebe8e3, #eae7e2);border:1px solid;border-color:#dcdad3;-o-box-shadow:0 0 1px 1px #fff;-ms-box-shadow:0 0 1px 1px #fff;-moz-box-shadow:0 0 1px 1px #fff;-webkit-box-shadow:0 0 1px 1px #fff;box-shadow:0 0 1px 1px #fff;-o-border-radius:.3rem;-ms-border-radius:.3rem;-moz-border-radius:.3rem;-webkit-border-radius:.3rem;border-radius:.3rem;font-family:Helvetica,Arial,sans-serif;font-weight:400;font-size:1.0rem;font-style:normal;color:#000}.ui-btn.ui-btn-corner-all .ui-btn-box-s.ui-btn-up-s{-o-border-radius:1.2rem;-ms-border-radius:1.2rem;-moz-border-radius:1.2rem;-webkit-border-radius:1.2rem;border-radius:1.2rem}.ui-btn-box-s .ui-btn-inner{border:1px solid;border-color:#c7c5be;-o-border-radius:.3rem;-ms-border-radius:.3rem;-moz-border-radius:.3rem;-webkit-border-radius:.3rem;border-radius:.3rem;-o-box-sizing:border-box;-ms-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;background:#f7f5ee;background:-webkit-linear-gradient(top, #faf7f2, #f8f5f0);background:-ms-linear-gradient(top, #faf7f2, #f8f5f0);background:-o-linear-gradient(top, #faf7f2, #f8f5f0);background:-moz-linear-gradient(top, #faf7f2, #f8f5f0);-o-box-shadow:none;-ms-box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;height:100%}.ui-btn.ui-btn-corner-all.ui-btn-box-s .ui-btn-inner{-o-border-radius:1.2rem;-ms-border-radius:1.2rem;-moz-border-radius:1.2rem;-webkit-border-radius:1.2rem;border-radius:1.2rem}.ui-ctxpopup .ui-btn-box-s.ui-btn-up-s,.ui-ctxpopup .ui-btn-box-s.ui-btn-hover-s{background:transparent!important;border:0;box-shadow:none;padding:0;color:#fff!important}.ui-ctxpopup .ui-btn-box-s.ui-btn-down-s{background:#3b73b6!important;border:0;box-shadow:none;padding:0;color:#fff!important;-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-ctxpopup .ui-btn-box-s .ui-btn-inner{background:transparent ! important;box-shadow:none;border:0}.ui-ctxpopup .ui-btn-down-s{background:#3b73b6!important}.ui-header .ui-btn-box-s,.ui-footer .ui-btn-box-s,.ui-btn-back.ui-btn-up-s,.ui-btn-back.ui-btn-hover-s,.ui-btn-back.ui-btn-down-s,.ui-btn-footer-down.ui-btn-up-s,.ui-btn-footer-down.ui-btn-hover-s,.ui-btn-footer-down.ui-btn-down-s,.ui-popup-container .ui-btn-box-s{font-weight:400;-o-border-radius:.9 rem;-ms-border-radius:.9 rem;-moz-border-radius:.9 rem;-webkit-border-radius:.9 rem;border-radius:.9 rem}.ui-btn-box-s.ui-btn-hover-s{color:#3a3a3a;font-family:Helvetica,Arial,sans-serif;font-weight:400;font-size:1.0rem;font-style:normal;color:#000;-o-border-radius:.3em ! important;-ms-border-radius:.3em ! important;-moz-border-radius:.3em ! important;-webkit-border-radius:.3em ! important;border-radius:.3em ! important}.ui-btn-box-s.ui-btn-hover-s.ui-btn-corner-circle{-o-border-radius:1em ! important;-ms-border-radius:1em ! important;-moz-border-radius:1em ! important;-webkit-border-radius:1em ! important;border-radius:1em ! important}.ui-btn-box-s.ui-btn-hover-s.ui-btn-corner-all{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn-box-s.ui-btn-hover-s.ui-btn-round{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn-box-s.ui-btn-down-s .ui-btn-inner{background:#3b73b6;color:#f8f6ef}.ui-btn-up-s,.ui-btn-hover-s,.ui-btn-down-s{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{color:#3a3a3a;cursor:pointer;text-decoration:none;background:#3b73b6;outline:0}.ui-btn-active a.ui-link-inherit{color:#3a3a3a}.ui-corner-tl{-moz-border-radius-topleft:.3em;-webkit-border-top-left-radius:.3em;border-top-left-radius:.3em}.ui-corner-tr{-moz-border-radius-topright:.3em;-webkit-border-top-right-radius:.3em;border-top-right-radius:.3em}.ui-corner-bl{-moz-border-radius-bottomleft:.3em;-webkit-border-bottom-left-radius:.3em;border-bottom-left-radius:.3em}.ui-corner-br{-moz-border-radius-bottomright:.3em;-webkit-border-bottom-right-radius:.3em;border-bottom-right-radius:.3em}.ui-corner-top{-moz-border-radius-topleft:.3em;-webkit-border-top-left-radius:.3em;border-top-left-radius:.3em;-moz-border-radius-topright:.3em;-webkit-border-top-right-radius:.3em;border-top-right-radius:.3em}.ui-corner-bottom{-moz-border-radius-bottomleft:.3em;-webkit-border-bottom-left-radius:.3em;border-bottom-left-radius:.3em;-moz-border-radius-bottomright:.3em;-webkit-border-bottom-right-radius:.3em;border-bottom-right-radius:.3em}.ui-corner-right{-moz-border-radius-topright:.3em;-webkit-border-top-right-radius:.3em;border-top-right-radius:.3em;-moz-border-radius-bottomright:.3em;-webkit-border-bottom-right-radius:.3em;border-bottom-right-radius:.3em}.ui-corner-left{-moz-border-radius-topleft:.3em;-webkit-border-top-left-radius:.3em;border-top-left-radius:.3em;-moz-border-radius-bottomleft:.3em;-webkit-border-bottom-left-radius:.3em;border-bottom-left-radius:.3em}.ui-corner-none{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-header .ui-btn .ui-btn-icon-only .ui-icon,.ui-footer .ui-btn .ui-btn-icon-only .ui-icon{width:1.4545454545454546rem;height:1.4545454545454546rem}.ui-btn-back .ui-btn-inner .ui-icon-header-back-btn,.ui-btn-footer-down .ui-btn-inner .ui-icon{width:1.4545454545454546rem;height:1.4545454545454546rem;background-repeat:no-repeat;background-size:100% 100%}.ui-btn-up-s{}.ui-btn-up-s .ui-icon-header-back-btn{background-image:url(images/page/00_icon_Back.png)}.ui-btn-up-s .ui-icon-naviframe-more{background-image:url(images/page/00_icon_more.png)}.ui-btn-up-s .ui-icon-naviframe-cancel{background-image:url(images/00_icon_cancel.png)}.ui-btn-up-s .ui-icon-naviframe-edit{background-image:url(images/page/00_icon_edit.png)}.ui-btn-up-s .ui-icon-naviframe-plus{background-image:url(images/page/00_icon_plus.png)}.ui-btn-up-s .ui-icon-down{background-image:url(images/controls/button/00_icon_SIP_close_web_web.png)}.ui-btn-hover-s .ui-icon-header-back-btn{background-image:url(images/page/00_icon_Back.png)}.ui-btn-hover-s .ui-icon-naviframe-more{background-image:url(images/page/00_icon_more.png)}.ui-btn-hover-s .ui-icon-naviframe-cancel{background-image:url(images/00_icon_cancel.png)}.ui-btn-hover-s .ui-icon-naviframe-edit{background-image:url(images/page/00_icon_edit.png)}.ui-btn-hover-s .ui-icon-naviframe-plus{background-image:url(images/page/00_icon_plus.png)}.ui-btn-hover-s .ui-icon-down{background-image:url(images/controls/button/00_icon_SIP_close_web_web.png)}.ui-btn-down-s .ui-icon-header-back-btn{background-image:url(images/page/00_icon_Back_press.png)}.ui-btn-down-s .ui-icon-naviframe-more{background-image:url(images/page/00_icon_more_press.png)}.ui-btn-down-s .ui-icon-naviframe-cancel{background-image:url(images/00_icon_cancel_press.png)}.ui-btn-down-s .ui-icon-naviframe-edit{background-image:url(images/page/00_icon_edit_press.png)}.ui-btn-down-s .ui-icon-naviframe-plus{background-image:url(images/page/00_icon_plus_press.png)}.ui-btn-down-s .ui-icon-down{background-image:url(images/controls/button/00_icon_SIP_close_press_web.png)}.ui-disabled{filter:alpha(opacity=30);opacity:.3;zoom:1}.ui-disabled,.ui-disabled a{cursor:default!important;pointer-events:none}.ui-mobile,.ui-mobile body{height:100%;font-size:22px}@media all and (max-width: 359px){.ui-mobile,.ui-mobile body{ font-size:19px}}.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:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}.ui-mobile,.ui-mobile .ui-page{background:#f8f6ef;color:#000}.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 *{transform:rotateY(0);-ms-transform:rotateY(0);-moz-transform:rotateY(0);-webkit-transform:rotateY(0);-o-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:1.4545454545454546rem;text-align:center}.ui-loader .ui-icon{position:static;display:block;opacity:.9;margin:0 auto;width:35px;height:35px;background-color:transparent}.ui-blocker{width:100%;height:100%;z-index:2147483647}.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:fixed;z-index:1000}.ui-header .ui-btn-left{top:.4em;float:left}.ui-header .ui-btn-right{float:right;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-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-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden}.in{-ms-animation-timing-function:ease-out;-ms-animation-duration:350ms;-o-animation-timing-function:ease-out;-o-animation-duration:350ms;-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms}.out{-ms-animation-timing-function:ease-in;-ms-animation-duration:225ms;-o-animation-timing-function:ease-in;-o-animation-duration:225;-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225}@-webkit-keyframes fadein{from{ opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{ opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{ opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{ opacity:1}to{opacity:0}}.fade.out{opacity:0;-ms-animation-duration:125ms;-ms-animation-name:fadeout;-o-animation-duration:125ms;-o-animation-name:fadeout;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout}.fade.in{opacity:1;-ms-animation-duration:225ms;-ms-animation-name:fadein;-o-animation-duration:225ms;-o-animation-name:fadein;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein}.viewport-flip{-ms-perspective:1000;-o-perspective:1000;-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-backface-visibility:hidden;-moz-transform:translate3d(0,0,0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{ -webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{ -moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{ -webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{ -moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{ -webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{ -moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{ -webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{ -moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-moz-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-moz-transform-origin:none;-webkit-box-shadow:none;-moz-box-shadow:none}.flow.out{-webkit-transform:translate3d(-100%,0,0) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translate3d(-100%,0,0) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms}.flow.in{-webkit-transform:translate3d(0,0,0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translate3d(0,0,0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms}.flow.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:flowouttoright;-moz-transform:translate3d(100%,0,0);-moz-animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{ -webkit-transform:translate3d(0,0,0) scale(1)}60%,70%{-webkit-transform:translate3d(0,0,0) scale(.7)}100%{-webkit-transform:translate3d(-100%,0,0) scale(.7)}}@-moz-keyframes flowouttoleft{0%{ -moz-transform:translate3d(0,0,0) scale(1)}60%,70%{-moz-transform:translate3d(0,0,0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{ -webkit-transform:translate3d(0,0,0) scale(1)}60%,70%{-webkit-transform:translate3d(0,0,0) scale(.7)}100%{-webkit-transform:translate3d(100%,0,0) scale(.7)}}@-moz-keyframes flowouttoright{0%{ -moz-transform:translate3d(0,0,0) scale(1)}60%,70%{-moz-transform:translate3d(0,0,0) scale(.7)}100%{-moz-transform:translate3d(100%,0,0) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{ -webkit-transform:translate3d(-100%,0,0) scale(.7)}30%,40%{-webkit-transform:translate3d(0,0,0) scale(.7)}100%{-webkit-transform:translate3d(0,0,0) scale(1)}}@-moz-keyframes flowinfromleft{0%{ -moz-transform:translate3d(-100%,0,0) scale(.7)}30%,40%{-moz-transform:translate3d(0,0,0) scale(.7)}100%{-moz-transform:translate3d(0,0,0) scale(1)}}@-webkit-keyframes flowinfromright{0%{ -webkit-transform:translate3d(100%,0,0) scale(.7)}30%,40%{-webkit-transform:translate3d(0,0,0) scale(.7)}100%{-webkit-transform:translate3d(0,0,0) scale(1)}}@-moz-keyframes flowinfromright{0%{ -moz-transform:translate3d(100%,0,0) scale(.7)}30%,40%{-moz-transform:translate3d(0,0,0) scale(.7)}100%{-moz-transform:translate3d(0,0,0) scale(1)}}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:popin;-moz-animation-name:popin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms}.pop.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;opacity:0;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-moz-transform:scale(.8);-webkit-animation-name:popout;-moz-animation-name:popout}@-webkit-keyframes popin{from{ -webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{ -moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{ -webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{ -moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{ -webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromright{from{ -moz-transform:translate3d(100%,0,0)}to{-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideinfromleft{from{ -webkit-transform:translate3d(-100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromleft{from{ -moz-transform:translate3d(-100%,0,0)}to{-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideouttoleft{from{ -webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes slideouttoleft{from{ -moz-transform:translate3d(0,0,0)}to{-moz-transform:translate3d(-100%,0,0)}}@-webkit-keyframes slideouttoright{from{ -webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes slideouttoright{from{ -moz-transform:translate3d(0,0,0)}to{-moz-transform:translate3d(100%,0,0)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms}.slide.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translate3d(-100%,0,0);-moz-animation-name:slideouttoleft}.slide.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromright;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translate3d(100%,0,0);-moz-animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromleft;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideinfromleft}.slidedown.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slidedown.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromtop;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translate3d(0,-100%,0);-moz-transform:translate3d(0,-100%,0);-webkit-animation-name:slideouttotop;-moz-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{ -webkit-transform:translate3d(0,-100%,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromtop{from{ -moz-transform:translate3d(0,-100%,0)}to{-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideouttotop{from{ -webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(0,-100%,0)}}@-moz-keyframes slideouttotop{from{ -moz-transform:translate3d(0,0,0)}to{-moz-transform:translate3d(0,-100%,0)}}.slideup.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slideup.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfrombottom;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translate3d(0,100%,0);-moz-transform:translate3d(0,100%,0);-webkit-animation-name:slideouttobottom;-moz-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{ -webkit-transform:translate3d(0,100%,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfrombottom{from{ -moz-transform:translate3d(0,100%,0)}to{-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideouttobottom{from{ -webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(0,100%,0)}}@-moz-keyframes slideouttobottom{from{ -moz-transform:translate3d(0,0,0)}to{-moz-transform:translate3d(0,100%,0)}}.slideupfade.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slideupfade.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideupfadeinfrombottom;-moz-transform:translate3d(0,0,0);-moz-animation-name:slideupfadeinfrombottom;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slideupfade.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slideupfade.out.reverse{-webkit-transform:translate3d(0,5%,0);-moz-transform:translate3d(0,5%,0);-webkit-animation-name:slideupfadeouttobottom;-moz-animation-name:slideupfadeouttobottom;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slideupfadeinfrombottom{from{ opacity:0;-webkit-transform:translate3d(0,5%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideupfadeinfrombottom{from{ opacity:0;-moz-transform:translate3d(0,5%,0)}to{opacity:1;-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slideupfadeouttobottom{from{ opacity:1;-webkit-transform:translate3d(0,0,0)}to{opacity:0;-webkit-transform:translate3d(0,5%,0)}}@-moz-keyframes slideupfadeouttobottom{from{ opacity:1;-moz-transform:translate3d(0,0,0)}to{opacity:0;-moz-transform:translate3d(0,5%,0)}}.slidedownfade.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slidedownfade.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slidedownfadeinfromtop;-moz-transform:translate3d(0,0,0);-moz-animation-name:slidedownfadeinfromtop;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slidedownfade.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slidedownfade.out.reverse{-webkit-transform:translate3d(0,-5%,0);-moz-transform:translate3d(0,-5%,0);-webkit-animation-name:slidedownfadeouttotop;-moz-animation-name:slidedownfadeouttotop;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slidedownfadeinfromtop{from{ opacity:0;-webkit-transform:translate3d(0,-5%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slidedownfadeinfromtop{from{ opacity:0;-moz-transform:translate3d(0,-5%,0)}to{opacity:1;-moz-transform:translate3d(0,0,0)}}@-webkit-keyframes slidedownfadeouttotop{from{ opacity:1;-webkit-transform:translate3d(0,0,0)}to{opacity:0;-webkit-transform:translate3d(0,-5%,0)}}@-moz-keyframes slidedownfadeouttotop{from{ opacity:1;-moz-transform:translate3d(0,0,0)}to{opacity:0;-moz-transform:translate3d(0,-5%,0)}}.slidefade.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translate3d(-100%,0,0);-moz-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-animation-duration:225ms}.slidefade.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:fadein;-moz-transform:translate3d(0,0,0);-moz-animation-name:fadein;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translate3d(100%,0,0);-moz-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:fadein;-moz-transform:translate3d(0,0,0);-moz-animation-name:fadein;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.viewport-turn{-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translate3d(0,0,0);-moz-transform-origin:0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-moz-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{ -webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{ -moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{ -webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{ -moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{ -webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{ -moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{ -webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{ -moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}.depth{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%}.depth.out{-webkit-animation-name:depthout;-moz-animation-name:depthout;opacity:0;-webkit-animation-duration:250ms;-moz-animation-duration:250ms;-webkit-animation-timing-function:ease;-moz-animation-timing-function:ease}.depth.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:depthin;-moz-animation-name:depthin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms;-webkit-animation-timing-function:ease;-moz-animation-timing-function:ease}.depth.in.reverse{-webkit-animation-name:depthinreverse;-moz-animation-name:depthinreverse}.depth.out.reverse{-webkit-transform:scale(.9);-moz-transform:scale(.9);-webkit-animation-name:depthoutreverse;-moz-animation-name:depthoutreverse}@-webkit-keyframes depthout{from{ -webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(1.1);opacity:0}}@-moz-keyframes depthout{from{ -moz-transform:scale(1);opacity:1}to{-moz-transform:scale(1.1);opacity:0}}@-webkit-keyframes depthin{0%{ -webkit-transform:scale(.9);opacity:0}30%{-webkit-transform:scale(.9);opacity:0}100%{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes depthin{0%{ -moz-transform:scale(.9);opacity:0}30%{-moz-transform:scale(.9);opacity:0}100%{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes depthinreverse{0%{ -webkit-transform:scale(1.1);opacity:0}30%{-webkit-transform:scale(1.1);opacity:0}100%{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes depthinreverse{0%{ -moz-transform:scale(1.1);opacity:0}30%{-moz-transform:scale(1.1);opacity:0}100%{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes depthoutreverse{from{ -webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.9);opacity:0}}@-moz-keyframes depthoutreverse{from{ -moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.9);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;vertical-align:middle}.ui-btn:focus,.ui-btn:active{outline:0}.ui-header .ui-btn,.ui-footer .ui-btn,.ui-bar .ui-btn{display:inline-block;font-size:.5909090909090909rem;margin:0}.ui-btn-inline{display:inline-block}.ui-btn-inner{padding:.5em .4090909090909091rem;display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative;zoom:1}.ui-btn-icon-notext{width:1.6363636363636365rem;height:1.6363636363636365rem}.ui-btn-icon-notext .ui-btn-inner{padding:.09090909090909091rem .045454545454545456rem .09090909090909091rem .13636363636363635rem}.ui-btn-icon-notext .ui-btn-inner .ui-icon{margin-left:-.7272727272727273rem;margin-top:-.7272727272727273rem}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-45.409090909090914rem}.ui-btn-icon-left .ui-btn-inner{padding-left:1.5rem}.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:1.2272727272727273rem}.ui-btn-icon-right .ui-btn-inner{padding-right:1.5rem}.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:1.2272727272727273rem}.ui-btn-icon-top .ui-btn-inner{padding-top:1.2272727272727273rem}.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:1.2272727272727273rem}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:1.5rem}.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:1.2272727272727273rem}.ui-btn-icon-notext .ui-icon{display:block}.ui-btn-icon-left .ui-icon,.ui-btn-icon-right .ui-icon,.ui-btn-icon-circle .ui-icon{position:absolute}.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:0rem}.ui-btn-icon-circle .ui-icon{left:0rem}.ui-btn-icon-right .ui-icon{right:.4545454545454546rem}.ui-btn-icon-top .ui-icon{top:0rem;margin-top:0}.ui-btn-icon-bottom .ui-icon{bottom:0rem}.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:.18181818181818182rem}.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:.18181818181818182rem}.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:.18181818181818182rem}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:.1;cursor:pointer;background:transparent;font-size:.045454545454545456rem;border:0;line-height:45.409090909090914rem}.ui-btn-text{margin-left:auto;margin-right:auto;padding:0 1px}.ui-li .ui-btn.ui-btn-icon_only{top:50%;margin-top:-.7272727272727273rem}.ui-li .ui-btn .ui-btn-inner.ui-btn-hastxt{padding:.2em .5em}.ui-btn-icon-nobg.ui-btn-down-s .ui-btn-inner{background:transparent ! important}.ui-btn.ui-btn-box-s.ui-btn-down-s .ui-btn-inner{color:#f8f6ef}.ui-header .ui-btn-box-s:not(.ui-input-cancel):not(.ui-btn-search-front-icon),.ui-header .ui-btn-box-s:not(.ui-input-cancel):not(.ui-btn-search-front-icon) .ui-btn-inner,.ui-header .ui-btn.ui-btn-box-s.ui-btn-down-s:not(.ui-input-cancel):not(.ui-btn-search-front-icon) .ui-btn-inner,.ui-btn.ui-btn-back.ui-btn-up-s .ui-btn-inner,.ui-btn.ui-btn-back.ui-btn-hover-s .ui-btn-inner,.ui-btn.ui-btn-back.ui-btn-down-s .ui-btn-inner,.ui-btn.ui-btn-footer-down.ui-btn-up-s>.ui-btn-inner,.ui-btn.ui-btn-footer-down.ui-btn-hover-s>.ui-btn-inner,.ui-btn.ui-btn-footer-down.ui-btn-down-s>.ui-btn-inner{background:transparent;border:0;box-shadow:none}.ui-btn-icon-top .ui-btn-inner.ui-btn-hastxt,.ui-li .ui-btn-icon-top .ui-btn-inner.ui-btn-hastxt{padding-top:2.3636363636363638rem}.ui-btn-icon-bottom .ui-btn-inner.ui-btn-hastxt,.ui-li .ui-btn-icon-bottom .ui-btn-inner.ui-btn-hastxt{padding-bottom:2.3636363636363638rem}.ui-btn .ui-icon{width:1.4545454545454546rem;height:1.4545454545454546rem}.ui-btn.ui-btn-edit .ui-icon{width:3.3636363636363638rem;height:3.3636363636363638rem}.ui-btn .ui-btn-text.ui-btn-text-padding-left{padding-left:2rem}.ui-btn .ui-btn-text.ui-btn-text-padding-right{padding-right:2.1818181818181817rem}.ui-btn .ui-btn-text.ui-btn-text-padding-top{padding-top:1.4545454545454546rem}.ui-icon{background-repeat:no-repeat;vertical-align:middle;background-position:0 0;background-size:100%}.ui-btn-box.s .ui-icon{position:absolute}.ui-btn-box-s.ui-btn-icon-left .ui-icon,.ui-btn-box-s.ui-btn-icon-right .ui-icon{margin-top:-.7272727272727273rem;top:50%}.ui-btn-box-s.ui-btn-icon-top .ui-icon,.ui-btn-box-s.ui-btn-icon-bottom .ui-icon{margin-left:-.7272727272727273rem;left:50%}.tizen-icon-common{width:1.4545454545454546rem;height:1.4545454545454546rem}.tizen-smallicon-common{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important}.ui-icon-bg{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_btn_circle_bg_normal.png);z-index:0}.ui-icon-arrow-l{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_left.png)}.ui-icon-arrow-r{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_right.png)}.ui-icon-arrow-u{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_opened.png)}.ui-icon-arrow-d{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_closed.png)}.ui-icon-delete{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_cancel.png)}.ui-icon-plus{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_plus.png)}.ui-icon-minus{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_minus.png)}.ui-icon-check{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_check.png)}.ui-icon-gear{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_gear.png)}.ui-icon-refresh{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_refresh.png)}.ui-icon-forward{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_send.png)}.ui-icon-back{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_back.png)}.ui-icon-grid{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_grid.png)}.ui-icon-star{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_star.png)}.ui-icon-alert{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_warning.png)}.ui-icon-info{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_info.png)}.ui-icon-home{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_home.png)}.ui-icon-search{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_search.png)}.ui-icon-call{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_call.png)}.ui-icon-rename{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_rename.png)}.ui-icon-scrolltop{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important;background-image:url(images/controls/button/00_icon_jump.png)}.ui-icon-scrollleft{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important;background-image:url(images/controls/button/00_icon_jump_left.png)}.ui-icon-expandable-divider-opened{width:1.9090909090909092rem;height:1.9090909090909092rem;position:absolute;right:1.2727272727272727rem;top:0rem;background-repeat:no-repeat;background-size:100% 100%;background-image:url(images/00_indexlist_icon_opened.png)}.ui-icon-expandable-divider-closed{width:1.9090909090909092rem;height:1.9090909090909092rem;position:absolute;right:1.2727272727272727rem;top:0rem;background-repeat:no-repeat;background-size:100% 100%;background-image:url(images/00_indexlist_icon_closed.png)}.ui-btn-down-s .ui-icon-bg,.ui-btn-down-s.ui-tizen-icon-bg{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_btn_circle_bg_press.png);z-index:0}.ui-btn-down-s .ui-icon-arrow-l{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_left_press.png)}.ui-btn-down-s .ui-icon-arrow-r{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_right_press.png)}.ui-btn-down-s .ui-icon-arrow-u{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_opened_press.png)}.ui-btn-down-s .ui-icon-arrow-d{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_closed_press.png)}.ui-btn-down-s .ui-icon-delete{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_cancel_press.png)}.ui-btn-down-s .ui-icon-plus{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_plus_press.png)}.ui-btn-down-s .ui-icon-minus{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_minus_press.png)}.ui-btn-down-s .ui-icon-check{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_check_press.png)}.ui-btn-down-s .ui-icon-gear{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_gear_press.png)}.ui-btn-down-s .ui-icon-refresh{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_refresh_press.png)}.ui-btn-down-s .ui-icon-forward{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_expand_send_press.png)}.ui-btn-down-s .ui-icon-back{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_back_press.png)}.ui-btn-down-s .ui-icon-grid{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_grid_press.png)}.ui-btn-down-s .ui-icon-star{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_star_press.png)}.ui-btn-down-s .ui-icon-alert{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_warning_press.png)}.ui-btn-down-s .ui-icon-info{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_info_press.png)}.ui-btn-down-s .ui-icon-home{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_home_press.png)}.ui-btn-down-s .ui-icon-search{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_search_press.png)}.ui-btn-down-s .ui-icon-call{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_call_press.png)}.ui-btn-down-s .ui-icon-rename{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/button/00_button_rename_press.png)}.ui-btn-down-s .ui-icon-scrolltop{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important;background-image:url(images/controls/button/00_icon_jump_press.png)}.ui-btn-down-s .ui-icon-scrollleft{width:.9090909090909092rem ! important;height:.9090909090909092rem ! important;top:50% ! important;left:50% ! important;margin-top:-.4545454545454546rem ! important;margin-left:-.4545454545454546rem ! important;background-image:url(images/controls/button/00_icon_jump_left_press.png)}.ui-btn-inner.ui-btn-icon-only{padding:.7272727272727273rem .7272727272727273rem}.ui-btn-icon-only .ui-btn-text{display:none;width:0;height:0;overflow:hidden}.ui-btn.ui-btn-corner-all{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn.ui-btn-icon-nobg{box-shadow:none}.ui-btn-corner-circle{-o-border-radius:1em ! important;-ms-border-radius:1em ! important;-moz-border-radius:1em ! important;-webkit-border-radius:1em ! important;border-radius:1em ! important}.ui-btn-round{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn-round .ui-btn-inner{-o-border-radius:1.2em ! important;-ms-border-radius:1.2em ! important;-moz-border-radius:1.2em ! important;-webkit-border-radius:1.2em ! important;border-radius:1.2em ! important}.ui-btn.ui-btn-icon-nobg,.ui-btn .ui-btn-icon-nobg{background:transparent;background-color:transparent;border:0}.ui-btn.ui-btn-edit .ui-btn-text{color:#f9f9f9}.ui-btn.ui-btn-edit .ui-btn-inner{background:#c95858;background:-webkit-gradient(linear,left top,left bottom,from( #c95858),to( #a12828));background:-moz_linear-gradient(top, #c95858, #a12828)}.ui-btn-box-s{color:#3a3a3a;background:#ebe8e3;background:-webkit-linear-gradient(top, #ebe8e3, #eae7e2);background:-moz-linear-gradient(top, #ebe8e3, #eae7e2);background:-o-linear-gradient(top, #ebe8e3, #eae7e2);background:-ms-linear-gradient(top, #ebe8e3, #eae7e2);border:1px solid;border-color:#dcdad3;-o-box-shadow:0 0 1px 1px #fff;-ms-box-shadow:0 0 1px 1px #fff;-moz-box-shadow:0 0 1px 1px #fff;-webkit-box-shadow:0 0 1px 1px #fff;box-shadow:0 0 1px 1px #fff}.ui-collapsible-inset{margin:.5em 0}.ui-collapsible-inset .ui-collapsible-heading{margin:0}.ui-collapsible-inset .ui-collapsible-heading .ui-btn{border-right-width:1px;border-left-width:1px}.ui-collapsible-collapsed+.ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:0}.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:1px}.ui-collapsible-heading,.ui-collapsible-content>li{position:relative}.ui-collapsible-heading{font-size:1rem;display:block;margin:0 -15px;padding:0;position:relative}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width:0}.ui-collapsible-heading .ui-btn-text{color:#000}.ui-collapsible-heading .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner{padding-left:12px;padding-right:40px}.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner{padding-right:40px;text-align:center}.ui-collapsible-heading .ui-btn-inner>.ui-icon-arrow-d{-webkit-transition:all .33s ease;-moz-transition:all .33s ease;-ms-transition:all .33s ease;-o-transition:all .33s ease;transition:all .33s ease;-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.ui-collapsible-heading .ui-btn-inner>.ui-icon-arrow-u{background-image:url(images/controls/button/00_button_expand_closed.png);-webkit-transition:all .33s ease;-moz-transition:all .33s ease;-ms-transition:all .33s ease;-o-transition:all .33s ease;transition:all .33s ease;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}.ui-collapsible-heading .ui-btn 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 .ui-btn span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading .ui-btn 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 -15px;padding:0 15px;border-left-width:0;border-right-width:0;border-top:0;background-image:none;visibility:visible;overflow:auto;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-ms-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease}.ui-collapsible-inset .ui-collapsible-content{margin:0;border-right-width:1px;border-left-width:1px}.ui-collapsible-content-collapsed{overflow:hidden;max-height:0!important;visibility:hidden}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible:first-child{margin-top:0}.ui-dialog{min-height:480px}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{margin:15px;position:relative}.ui-dialog .ui-header,.ui-dialog .ui-footer{z-index:10;width:auto}.ui-dialog .ui-header .ui-btn-left{width:0;border-width:0}.ui-dialog .center_info{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center}.ui-dialog .center_info .popup-text{font-size:42px;background:#213c49;width:100%}.ui-dialog .center_info .popup-text p{text-align:center;padding:22px 16px}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox,.ui-radio{position:relative;margin:0}.ui-checkbox .ui-btn-corner-all,.ui-radio .ui-btn-corner-all{-o-border-radius:0;-ms-border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{border-top:0}.ui-checkbox .ui-btn-up-s,.ui-radio .ui-btn-up-s{border:0;background:transparent;font-weight:400}.ui-checkbox .ui-btn-hover-s,.ui-radio .ui-btn-hover-s{border:0;background:transparent;font-weight:400}.ui-checkbox .ui-btn-down-s,.ui-radio .ui-btn-down-s{border:0;background:transparent;font-weight:400}.ui-checkbox input,.ui-radio input{z-index:1;margin:0;left:.4545454545454546rem;position:absolute;outline:0!important}.ui-checkbox>input,.ui-radio>input{display:none}.ui-checkbox .ui-btn,.ui-radio .ui-btn{z-index:2;height:100%;margin:0;text-align:left}.ui-checkbox .ui-btn.ui-btn-icon-left,.ui-radio .ui-btn.ui-btn-icon-left{display:inline-block}.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner{min-width:1.8181818181818183rem;display:inline-block;line-height:1.4545454545454546rem;padding:0 .7272727272727273rem 0 .7272727272727273rem}.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text,.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text{display:inline-block;vertical-align:middle;min-height:1.4545454545454546rem}.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text.ui-btn-text-padding-left,.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text.ui-btn-text-padding-left{padding-left:1.0909090909090908rem}.ui-checkbox .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-icon,.ui-radio .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-icon{position:absolute;top:50%;width:1.4545454545454546rem;height:1.4545454545454546rem;margin-top:-.7272727272727273rem}.ui-checkbox.favorite input{position:absolute;left:-10000px;height:100%;outline:0!important}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left{display:block}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner{display:inline-block;line-height:1.4545454545454546rem;padding:0 0 0 .7272727272727273rem}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text{display:inline-block;vertical-align:middle}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-btn-text.ui-btn-text-padding-left{padding-left:1.0909090909090908rem}.ui-checkbox.favorite .ui-btn.ui-btn-icon-left .ui-btn-inner .ui-icon{position:absolute;top:50%;width:1.4545454545454546rem;height:1.4545454545454546rem;margin-top:-.7272727272727273rem}.ui-icon-checkbox-off,.ui-icon-checkbox-on,.favorite .ui-icon-checkbox-off,.favorite .ui-icon-checkbox-on,.ui-icon-checkbox-on-press,.ui-icon-checkbox-off-press,.ui-icon-radio-off,.ui-icon-radio-on,.ui-icon-radio-on-press,.ui-icon-radio-off-press{background-size:100% 100%;background-color:transparent}.ui-icon-checkbox-off{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_check_bg.png)}.ui-icon-checkbox-on{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_check_checking.png),url(images/00_check_bg.png);background-repeat:no-repeat}.ui-icon-checkbox-off-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_check_bg_press.png)}.ui-icon-checkbox-on-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_check_checking.png),url(images/00_check_bg_press.png);background-repeat:no-repeat}.favorite .ui-icon-checkbox-off,.favorite .ui-icon-checkbox-off-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/00_icon_favorite_off.png)}.favorite .ui-icon-checkbox-on,.favorite .ui-icon-checkbox-on-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/controls/00_icon_favorite_on.png)}.ui-icon-radio-off{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_button_radio.png)}.ui-icon-radio-on{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_button_radio_select.png),url(images/00_button_radio.png)}.ui-icon-radio-on-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_button_radio.png)}.ui-icon-radio-off-press{width:1.4545454545454546rem;height:1.4545454545454546rem;background-image:url(images/00_button_radio.png)}.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{.ui-field-contain{ border-width:0;padding:0;margin:.8em 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 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}@-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:400;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em}.ui-select .ui-btn-text{text-overflow:ellipsis;overflow:hidden}.ui-selectmenu{position:absolute;padding:0;z-index:100!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){label.ui-select{ vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-select{width:60%;display:inline-block}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:1rem;line-height:1.2;display:block;font-weight:400;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:.7272727272727273rem;display:block}input.ui-input-text{appearance:none;-webkit-appearance:none}textarea.ui-input-text{height:2.272727272727273rem;width:95%;resize:none;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;-ms-transition:height 200ms linear;transition:height 200ms linear}.ui-input-search{position:relative;padding-right:1.6363636363636365rem;padding-left:1.6363636363636365rem;border:1px solid #999;-webkit-box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999;-moz-box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999;-o-box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999;-ms-box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999;box-shadow:inset .09090909090909091rem .09090909090909091rem .09090909090909091rem #999}.ui-input-search input.ui-input-text{width:100%;border:0;background:transparent none;outline:0!important}.ui-input-search .ui-btn-down-s,.ui-input-search .ui-btn-up-s,.ui-input-search .ui-btn-hover-s{border:0;background:transparent none}.ui-input-search .ui-btn-icon-notext.ui-input-clear{width:1.6363636363636365rem;height:1.5rem}.ui-input-search .ui-btn-icon-notext.ui-input-clear .ui-btn-inner{padding:.2727272727272727rem}.ui-input-search .ui-btn-inner .ui-icon-deleteSearch{width:1rem;height:1rem;margin-top:0;margin-left:0}.ui-input-search .ui-input-clear{position:absolute;right:0;top:0;vertical-align:middle}.ui-input-search .ui-input-clear-hidden{display:none}@media all and (min-width: 721px){label.ui-input-text:not([data-type='search']){ vertical-align:top;display:inline-block;margin:0 2% 0 0}input.ui-input-text:not([data-type='search']),textarea.ui-input-text:not([data-type='search']){width:60%;display:inline-block}.ui-input-search input.ui-input-text:not([data-type='search']){width:85%}}.ui-body-s>div>.ui-field-contain>.input-search-bar,.ui-body-s>.ui-field-contain>.input-search-bar{margin:-2.1818181818181817rem -.6818181818181819rem -1.4545454545454546rem -.6818181818181819rem}.input-search-bar{position:relative;background-color:#f8f6ef;padding:.5909090909090909rem;vertical-align:middle}.input-search-bar .ui-corner-all{-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.input-search-bar .ui-input-search{font-size:.7272727272727273rem;display:block;position:relative;background-color:#fff}.input-search-bar .ui-input-search .ui-input-text{height:1.5rem;padding:0;margin-right:1.7272727272727273rem}.input-search-bar .ui-input-search .ui-image-search{position:absolute;top:0;left:0;width:1rem;height:1rem;margin:.2727272727272727rem}.input-search-bar .ui-input-search-default{margin-right:3.409090909090909rem;-webkit-transition:all 400ms linear;-moz-transition:all 400ms linear;-o-transition:all 400ms linear;-ms-transition:all 400ms linear;transition:all 400ms linear}.input-search-bar .ui-input-search-wide{margin-right:0rem;-webkit-transition:all 400ms linear;-moz-transition:all 400ms linear;-o-transition:all 400ms linear;-ms-transition:all 400ms linear;transition:all 400ms linear}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel{display:inline-block;position:absolute;top:.13636363636363635rem;right:0rem;height:1.5rem;margin-right:.4545454545454546rem;vertical-align:middle;padding:0;border-color:none;width:3.090909090909091rem;-webkit-transition:all 400ms linear;-moz-transition:all 400ms linear;-o-transition:all 400ms linear;-ms-transition:all 400ms linear;transition:all 400ms linear}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel .ui-btn-inner{padding-top:.2727272727272727rem;padding-bottom:.2727272727272727rem}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel .ui-btn-inner .ui-btn-text{font-size:.6818181818181819rem}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel.ui-btn-cancel-hide{right:-3.409090909090909rem;visibility:hidden}.input-search-bar .ui-btn-icon-cancel.ui-input-cancel.ui-btn-cancel-show{right:0;visibility:visible}.input-search-bar .ui-search-bar-icon{margin-left:1.9090909090909092rem}.input-search-bar .ui-btn.ui-btn-search-front-icon{position:absolute;width:1.590909090909091rem;height:1.590909090909091rem;top:.09090909090909091rem;border-radius:3rem}.input-search-bar .ui-btn.ui-btn-search-front-icon>.ui-btn-inner.ui-btn-icon-only{border-radius:3rem}.ui-header .input-search-bar{padding-top:.18181818181818182rem;padding-bottom:.18181818181818182rem}.ui-image-search{background-image:url(images/controls/00_search_icon.png);background-repeat:no-repeat;background-size:100% 100%}.ui-icon-deleteSearch{background-image:url(images/controls/00_field_btn_clear.png);background-repeat:no-repeat;background-size:100% 100%}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0 1em}.ui-bar .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:1em;line-height:1.4;font-weight:400;margin:0 0 .3em}.ui-controlgroup-controls{display:block}.ui-controlgroup li{list-style:none}.ui-controlgroup .ui-btn-inner{white-space:nowrap}.ui-controlgroup .ui-checkbox label label,.ui-controlgroup .ui-radio label{font-size:1em}.ui-controlgroup .ui-radio{width:25%;overflow:hidden}.ui-controlgroup .ui-radio label{text-align:center;white-space:nowrap}.ui-controlgroup .ui-radio-on .ui-btn-inner{background:#f8f6ef}.ui-controlgroup .ui-radio-on .ui-btn-inner .ui-btn-text{color:#3b73b6}.ui-controlgroup .ui-corner-left{border-left-width:0}.ui-controlgroup .ui-corner-right{border-right-width:0}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-vertical .ui-radio{width:100%}.ui-controlgroup-vertical .ui-radio label{text-align:left}.ui-controlgroup-vertical .ui-radio label .ui-btn-inner{margin-left:.7272727272727273rem;margin-right:.7272727272727273rem}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal .ui-btn{display:inline-block;margin-left:-.18181818181818182rem;margin-right:-.13636363636363635rem}.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{float:left;margin:0 -1px 0 0}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0}.ui-controlgroup-horizontal [data-role="button"]{border-top:0;border-bottom:0;border-radius:0;box-shadow:none;background:0}.ui-controlgroup-horizontal [data-role="button"].ui-btn-down-s .ui-btn-inner,.ui-controlgroup-horizontal [data-role="button"] .ui-btn-active-s .ui-btn-inner{background:#f8f6ef}.ui-controlgroup-horizontal [data-role="button"].ui-btn-down-s .ui-btn-inner .ui-btn-text,.ui-controlgroup-horizontal [data-role="button"] .ui-btn-active-s .ui-btn-inner .ui-btn-text{color:#3b73b6}.ui-controlgroup-horizontal [data-role="button"].ui-btn-down-s .ui-btn-inner{background:-webkit-linear-gradient(top, #d2d2c8 0, #f6f8ef 100%)}.ui-controlgroup-horizontal [data-role="button"]>.ui-btn-inner{border:0 solid;box-shadow:none;padding-top:.2272727272727273rem;padding-bottom:.2272727272727273rem;padding-left:.4545454545454546rem;padding-right:.4545454545454546rem}.ui-controlgroup-horizontal label>span.ui-btn-inner{padding-top:.13636363636363635rem;padding-bottom:.13636363636363635rem}.ui-listview{margin:0;counter-reset:listnumbering;border-top-color:rgba(211,209,203,.5)}.ui-listview li.ui-btn>.ui-btn-hastxt>.ui-btn-text.ui-btn-text-padding-right{padding-right:0rem}.ui-listview .ui-li{border-left-width:0;border-right-width:0;border-top-width:0}.ui-listview .ui-li>.ui-btn-inner{border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgba(211,209,203,.5);margin-left:.5909090909090909rem;margin-right:.5909090909090909rem}.ui-listview .ui-li-static{background-color:#f8f6ef;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgba(211,209,203,.5);margin-left:.5909090909090909rem;margin-right:.5909090909090909rem}.ui-listview .ui-li:not(.ui-li-divider):not(.ui-li-static){min-height:2.5rem}.ui-listview .ui-li.ui-li-has-multiline:not(.ui-li-divider):not(.ui-li-static){min-height:2.909090909090909rem}.ui-listview li.ui-btn-up-s,.ui-listview li.ui-btn-hover-s{background:0;background-color:#f8f6ef;color:#000}.ui-listview li.ui-btn-down-s{background:0;background-color:#5787c2;color:#000}.ui-listview li.ui-btn-up-s>.ui-li>.ui-btn-text>a.ui-link-inherit,.ui-listview li.ui-btn-hover-s>.ui-li>.ui-btn-text>a.ui-link-inherit{color:#000}.ui-listview li.ui-btn-down-s>.ui-li>.ui-btn-text>a.ui-link-inherit{color:#f9f9f9}.ui-content .ui-listview{margin-left:-.36363636363636365rem;margin-right:-.36363636363636365rem;padding-bottom:1px}.ui-content .ui-listview .ui-listview{margin:0}.ui-content .ui-listview-inset{margin:1em 0}.ui-listview,.ui-li,.ui-collapsible-heading{list-style:none;padding:0;font-size:1rem}.ui-li,.ui-collapsible-heading,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left}.ui-li .ui-btn{top:50%;margin-top:-.8em}.ui-li h3,.ui-collapsible-heading h3,.ui-collapsible>.ui-collapsible-content h3,.ui-listview li h3{margin-top:0;margin-bottom:0;font-size:1rem;font-weight:400}.ui-li form,.ui-collapsible-heading form,.ui-collapsible>.ui-collapsible-content form,.ui-listview li form{display:inline-block}.ui-li .ui-btn-text,.ui-collapsible-heading .ui-btn-text,.ui-collapsible>.ui-collapsible-content .ui-btn-text,.ui-listview li .ui-btn-text{position:relative}.ui-li .ui-btn-text a.ui-link-inherit,.ui-collapsible-heading .ui-btn-text a.ui-link-inherit,.ui-collapsible>.ui-collapsible-content .ui-btn-text a.ui-link-inherit,.ui-listview li .ui-btn-text a.ui-link-inherit{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li:last-child,.ui-collapsible-heading:last-child,.ui-collapsible>.ui-collapsible-content:last-child,.ui-listview li:last-child,.ui-li.ui-field-contain:last-child,.ui-collapsible-heading.ui-field-contain:last-child,.ui-collapsible>.ui-collapsible-content.ui-field-contain:last-child,.ui-listview li.ui-field-contain:last-child{border-bottom-width:1px}.ui-li>.ui-btn-inner,.ui-collapsible-heading>.ui-btn-inner,.ui-collapsible>.ui-collapsible-content>.ui-btn-inner,.ui-listview li>.ui-btn-inner,.ui-li.ui-collapsible-heading>.ui-collapsible-heading-toggle,.ui-collapsible-heading.ui-collapsible-heading>.ui-collapsible-heading-toggle,.ui-collapsible>.ui-collapsible-content.ui-collapsible-heading>.ui-collapsible-heading-toggle,.ui-listview li.ui-collapsible-heading>.ui-collapsible-heading-toggle{display:block;position:relative;padding:0;border-width:0}.ui-li>.ui-btn-inner.ui-btn-hastxt,.ui-collapsible-heading>.ui-btn-inner.ui-btn-hastxt,.ui-collapsible>.ui-collapsible-content>.ui-btn-inner.ui-btn-hastxt,.ui-listview li>.ui-btn-inner.ui-btn-hastxt{padding:0 0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-collapsible-heading .ui-btn-inner a.ui-link-inherit,.ui-collapsible>.ui-collapsible-content .ui-btn-inner a.ui-link-inherit,.ui-listview li .ui-btn-inner a.ui-link-inherit,.ui-li .ui-collapsible-heading-toggle>.ui-btn-inner,.ui-collapsible-heading .ui-collapsible-heading-toggle>.ui-btn-inner,.ui-collapsible>.ui-collapsible-content .ui-collapsible-heading-toggle>.ui-btn-inner,.ui-listview li .ui-collapsible-heading-toggle>.ui-btn-inner,.ui-li>li,.ui-collapsible-heading>li,.ui-collapsible>.ui-collapsible-content>li,.ui-listview li>li,.ui-li.ui-li-static,.ui-collapsible-heading.ui-li-static,.ui-collapsible>.ui-collapsible-content.ui-li-static,.ui-listview li.ui-li-static{padding-top:.6818181818181819rem;padding-bottom:.6818181818181819rem;display:block;white-space:normal;border-left-width:0;border-right-width:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-collapsible-heading .ui-btn-inner a.ui-link-inherit,.ui-collapsible>.ui-collapsible-content .ui-btn-inner a.ui-link-inherit,.ui-listview li .ui-btn-inner a.ui-link-inherit,.ui-li .ui-collapsible-heading-toggle,.ui-collapsible-heading .ui-collapsible-heading-toggle,.ui-collapsible>.ui-collapsible-content .ui-collapsible-heading-toggle,.ui-listview li .ui-collapsible-heading-toggle{white-space:normal;overflow:visible!important}.ui-li .ui-toggle-switch:last-child,.ui-collapsible-heading .ui-toggle-switch:last-child,.ui-collapsible>.ui-collapsible-content .ui-toggle-switch:last-child,.ui-listview li .ui-toggle-switch:last-child{top:50%;margin-top:-.7727272727272727rem;display:inline-block;position:absolute;right:0}.ui-li [data-role="button"]:last-child,.ui-collapsible-heading [data-role="button"]:last-child,.ui-collapsible>.ui-collapsible-content [data-role="button"]:last-child,.ui-listview li [data-role="button"]:last-child{position:absolute;right:0}.ui-li .ui-radio:first-child,.ui-collapsible-heading .ui-radio:first-child,.ui-collapsible>.ui-collapsible-content .ui-radio:first-child,.ui-listview li .ui-radio:first-child,.ui-li .ui-checkbox:first-child,.ui-collapsible-heading .ui-checkbox:first-child,.ui-collapsible>.ui-collapsible-content .ui-checkbox:first-child,.ui-listview li .ui-checkbox:first-child{position:absolute;top:50%;margin-top:-.6818181818181819rem;left:-.18181818181818182rem;width:1.3636363636363638rem;height:1.3636363636363638rem}.ui-li .ui-radio:first-child .ui-btn-inner,.ui-collapsible-heading .ui-radio:first-child .ui-btn-inner,.ui-collapsible>.ui-collapsible-content .ui-radio:first-child .ui-btn-inner,.ui-listview li .ui-radio:first-child .ui-btn-inner,.ui-li .ui-checkbox:first-child .ui-btn-inner,.ui-collapsible-heading .ui-checkbox:first-child .ui-btn-inner,.ui-collapsible>.ui-collapsible-content .ui-checkbox:first-child .ui-btn-inner,.ui-listview li .ui-checkbox:first-child .ui-btn-inner{line-height:.9090909090909092rem;color:transparent}.ui-li .ui-radio:first-child .ui-btn-inner .ui-icon,.ui-collapsible-heading .ui-radio:first-child .ui-btn-inner .ui-icon,.ui-collapsible>.ui-collapsible-content .ui-radio:first-child .ui-btn-inner .ui-icon,.ui-listview li .ui-radio:first-child .ui-btn-inner .ui-icon,.ui-li .ui-checkbox:first-child .ui-btn-inner .ui-icon,.ui-collapsible-heading .ui-checkbox:first-child .ui-btn-inner .ui-icon,.ui-collapsible>.ui-collapsible-content .ui-checkbox:first-child .ui-btn-inner .ui-icon,.ui-listview li .ui-checkbox:first-child .ui-btn-inner .ui-icon{left:.2272727272727273rem}.ui-li .ui-radio:first-child label.ui-btn-icon_only,.ui-collapsible-heading .ui-radio:first-child label.ui-btn-icon_only,.ui-collapsible>.ui-collapsible-content .ui-radio:first-child label.ui-btn-icon_only,.ui-listview li .ui-radio:first-child label.ui-btn-icon_only,.ui-li .ui-checkbox:first-child label.ui-btn-icon_only,.ui-collapsible-heading .ui-checkbox:first-child label.ui-btn-icon_only,.ui-collapsible>.ui-collapsible-content .ui-checkbox:first-child label.ui-btn-icon_only,.ui-listview li .ui-checkbox:first-child label.ui-btn-icon_only{top:0;margin-top:0}.ui-li img.ui-li-bigicon,.ui-collapsible-heading img.ui-li-bigicon,.ui-collapsible>.ui-collapsible-content img.ui-li-bigicon,.ui-listview li img.ui-li-bigicon{position:absolute;width:1.590909090909091rem;height:1.590909090909091rem;top:50%;margin-top:-.8181818181818182rem}.ui-li img.ui-li-bigicon:first-child,.ui-collapsible-heading img.ui-li-bigicon:first-child,.ui-collapsible>.ui-collapsible-content img.ui-li-bigicon:first-child,.ui-listview li img.ui-li-bigicon:first-child{left:0}.ui-li img.ui-li-bigicon:nth-child(2),.ui-collapsible-heading img.ui-li-bigicon:nth-child(2),.ui-collapsible>.ui-collapsible-content img.ui-li-bigicon:nth-child(2),.ui-listview li img.ui-li-bigicon:nth-child(2){left:1.6363636363636365rem}.ui-li img.ui-li-bigicon:last-child,.ui-collapsible-heading img.ui-li-bigicon:last-child,.ui-collapsible>.ui-collapsible-content img.ui-li-bigicon:last-child,.ui-listview li img.ui-li-bigicon:last-child{right:.7272727272727273rem}.ui-li .ui-li-color-bar+img.ui-li-bigicon:nth-child(2),.ui-collapsible-heading .ui-li-color-bar+img.ui-li-bigicon:nth-child(2),.ui-collapsible>.ui-collapsible-content .ui-li-color-bar+img.ui-li-bigicon:nth-child(2),.ui-listview li .ui-li-color-bar+img.ui-li-bigicon:nth-child(2){left:0}.ui-li .ui-li-color-bar,.ui-collapsible-heading .ui-li-color-bar,.ui-collapsible>.ui-collapsible-content .ui-li-color-bar,.ui-listview li .ui-li-color-bar{position:absolute;width:.13636363636363635rem;height:100%;top:0rem;left:-.5909090909090909rem;background-color:#000}li.ui-li-thumbnail-right img.ui-li-bigicon.ui-li-thumb{left:auto;right:0;width:2.3181818181818183rem;height:2.3181818181818183rem;margin-top:-1.1363636363636365rem}.ui-li.ui-li-has-multiline .ui-btn-inner a.ui-link-inherit,.ui-li.ui-li-has-multiline.ui-li-static{padding-top:.3181818181818182rem;padding-bottom:1.2727272727272727rem}.ui-li.ui-li-has-multiline a{white-space:normal;overflow:visible!important;padding-right:.7272727272727273rem}.ui-li.ui-li-text-ellipsis .ui-btn-inner a.ui-link-inherit{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li.ui-li-text-ellipsis a{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li.ui-li-text-ellipsis.ui-li-static{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li>input{border-style:none;border-width:0;outline-color:#f8f6ef;font-size:1.0454545454545454rem;line-height:1;padding-top:0;padding-bottom:0}.ui-listview li.ui-li-divider{background:#f8f6ef;color:#3b73b6;border-bottom-width:0;border-top-width:0;cursor:default;counter-reset:listnumbering;font-weight:700;height:1.7272727272727273rem;font-size:.7272727272727273rem}.ui-listview li.ui-li-divider>.ui-btn-inner>.ui-btn-text{font-size:.7272727272727273rem}.ui-listview li.ui-li-divider.ui-btn{top:0;margin-top:0rem;border-radius:0;font-size:.7272727272727273rem}.ui-listview li.ui-li-divider.ui-btn .ui-btn-inner.ui-btn-hastxt{height:100%;padding-left:0}.ui-listview li.ui-li-divider.ui-btn .ui-btn-inner.ui-btn-hastxt .ui-btn-text{position:absolute;top:.2272727272727273rem;height:.8181818181818182rem;padding-right:.4545454545454546rem}.ui-listview li.ui-li-divider:not(.ui-btn){margin-left:.5454545454545454rem;margin-right:.5454545454545454rem}.ui-listview li.ui-li-divider>.ui-btn-text{position:absolute;top:.2272727272727273rem;height:.8181818181818182rem;padding-right:.4545454545454546rem}.ui-listview li.ui-li-divider[data-style="dialogue"]{height:.9090909090909092rem;padding:0;padding-top:.9090909090909092rem;padding-bottom:0rem;padding-left:.4545454545454546rem;margin-left:.18181818181818182rem;margin-right:.18181818181818182rem;font-size:.7272727272727273rem;font-weight:700;color:#3b73b6;background:#f8f6ef}.ui-listview li.ui-li-divider[data-style="check"]{height:1.7272727272727273rem;padding-top:0;padding-bottom:0;padding-left:0}.ui-listview li.ui-li-divider[data-style="check"] label{top:0;margin:0}.ui-listview li.ui-li-divider[data-style="check"] label .ui-btn-inner{z-index:5;position:absolute;width:1.4545454545454546rem;height:1.4545454545454546rem;background:#f8f6ef;padding:0}.ui-listview li.ui-li-divider[data-style="check"] .ui-btn-text{padding-left:1.6818181818181819rem}.ui-listview li.ui-li-divider .ui-divider-normal-line{display:inline-block;position:absolute;top:1.0454545454545454rem;width:100%;height:.09090909090909091rem;background:#3b73b6}.ui-listview li.ui-li-divider.ui-btn-down-s{background:#3b73b6;color:#f8f6ef}.ui-listview li.ui-li-divider.ui-btn-down-s .ui-divider-normal-line{background:#f8f6ef}.ui-listview li.ui-li-divider.ui-btn-down-s label>.ui-btn-inner{background:#3b73b6}.ui-listview li.ui-li-divider+li.ui-li-dialogue{border-top-left-radius:3px;border-top-right-radius:3px}.ui-divider-expand-div{position:absolute;width:4.454545454545455rem;height:1.9090909090909092rem;top:.4545454545454546rem;right:0;border-left-width:1px;border-left-style:solid;border-left-color:rgba(0,0,0,.5)}.ui-li-has-thumb:not(.ui-li-thumbnail-right) .ui-btn-inner a.ui-link-inherit,.ui-li-has-thumb:not(.ui-li-thumbnail-right).ui-li-static{padding-left:2.0454545454545454rem}.ui-li-has-thumb:not(.ui-li-thumbnail-right) .ui-li-text-sub{padding-left:2.0454545454545454rem;padding-right:0}.ui-li-has-checkbox .ui-btn-inner a.ui-link-inherit,.ui-li-has-radio .ui-btn-inner a.ui-link-inherit,.ui-li-has-checkbox.ui-li-static,.ui-li-has-radio.ui-li-static{padding-left:1.6363636363636365rem}.ui-li-has-checkbox .ui-li-text-sub,.ui-li-has-radio .ui-li-text-sub{padding-left:1.6363636363636365rem}.ui-li-has-thumb.ui-li-has-checkbox .ui-btn-inner a.ui-link-inherit,.ui-li-has-thumb.ui-li-has-radio .ui-btn-inner a.ui-link-inherit,.ui-li-has-thumb.ui-li-has-checkbox.ui-li-static,.ui-li-has-thumb.ui-li-has-radio.ui-li-static{padding-left:3.5454545454545454rem}.ui-li-has-thumb.ui-li-has-checkbox .ui-li-text-sub,.ui-li-has-thumb.ui-li-has-radio .ui-li-text-sub{padding-left:3.5454545454545454rem}.ui-li.ui-li-has-right-circle-btn .ui-btn-inner a{padding-right:2.1818181818181817rem}.ui-li.ui-li-has-right-btn:not(.ui-swipe) .ui-btn-inner a{padding-right:3.590909090909091rem}.ui-li.ui-li-thumbnail-right .ui-btn-inner a{padding-right:2.3636363636363638rem}.ui-li.ui-li-static.ui-li-has-right-circle-btn{padding-right:2.1818181818181817rem}.ui-li.ui-li-static.ui-li-has-right-btn:not(.ui-swipe){padding-right:3.590909090909091rem}.ui-li.ui-li-static.ui-li-thumbnail-right{padding-right:2.3636363636363638rem}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-has-icon.ui-li-static{min-height:20px;padding-left:40px}.ui-li-has-icon .ui-li-text-sub{padding-left:40px}.ui-li-heading{font-size:16px;font-weight:700;display:block;margin:.6em 0;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li-thumb,.ui-li-icon{position:absolute;left:1px;top:0;max-height:3.272727272727273rem;max-width:3.272727272727273rem}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-li-sub,.ui-li-sub-setting{float:right;text-align:right;font-size:.7272727272727273rem;margin:.3em 0}.ui-li-text-sub{float:right;text-align:right;font-size:.7272727272727273rem;color:#646464;position:absolute;right:0;top:.9090909090909092rem;width:95%;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li-text-sub>img{position:relative;width:.7727272727272727rem;height:.7727272727272727rem;margin:0 .36363636363636365rem 0 .36363636363636365rem}.ui-li-text-sub2{float:right;text-align:right;font-size:.7272727272727273rem;color:#646464;position:absolute;right:0;top:.7272727272727273rem;width:60%;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li-text-sub2>img{width:.7727272727272727rem;height:.7727272727272727rem;margin:0 0 0 .36363636363636365rem}.ui-li-has-multiline .ui-li-text-sub{position:absolute;text-align:left;right:auto;left:0;top:1.590909090909091rem;margin-top:0;width:90%;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-li-has-multiline.ui-li-has-right-btn .ui-btn-inner a .ui-li-text-sub{width:74%}.ui-li-has-multiline.ui-li-has-right-btn.ui-li-has-thumb .ui-btn-inner a .ui-li-text-sub{width:64%}.ui-li-has-multiline.ui-li-static.ui-li-has-right-btn .ui-li-text-sub{width:74%}.ui-li-has-multiline.ui-li-static.ui-li-has-right-btn.ui-li-has-thumb .ui-li-text-sub{width:64%}.ui-li-icon-sub-right,.ui-li-icon-sub{position:absolute;left:auto;width:.7727272727272727rem;height:.7727272727272727rem;margin:0 0}.ui-li-icon-sub-right{right:.36363636363636365rem}.ui-listview li.ui-li-dialogue{margin-left:.18181818181818182rem;margin-right:.18181818181818182rem;padding-left:.4545454545454546rem;padding-right:.4545454545454546rem;border-style:solid;border-color:#8e9aa3;border-width:1px;border-top-width:0}.ui-listview li.ui-li-dialogue>.ui-btn-inner{margin-left:0;margin-right:0;border-bottom-width:0}.ui-listview li.ui-li-dialogue:first-child{border-top-width:1px;border-top-left-radius:3px;border-top-right-radius:3px}.ui-listview li.ui-li-dialogue:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.ui-listview li.ui-li-dialogue>img{margin-left:.2727272727272727rem}.ui-listview li.ui-li-dialogue [data-role="button"]:last-child{margin-right:.4545454545454546rem}.ui-listview li.ui-li-dialogue .ui-link-inherit>.ui-btn{margin-right:0}.ui-listview li.ui-li-dialogue.ui-li-static .ui-li-text-sub,.ui-listview li.ui-li-dialogue.ui-li-static .ui-toggle-switch{right:.4545454545454546rem}.ui-listview li.ui-li-dialogue.ui-li-static.ui-li-has-checkbox,.ui-listview li.ui-li-dialogue.ui-li-static.ui-li-has-radio{padding-left:1.6363636363636365rem}.ui-listview li.ui-li-dialogue.ui-li-static .ui-checkbox,.ui-listview li.ui-li-dialogue.ui-li-static .ui-radio{left:0}.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static .ui-li-text-sub{padding-left:.4545454545454546rem}.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static .ui-li-text-sub2{padding-right:.4545454545454546rem}.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static.ui-li-has-checkbox .ui-li-text-sub,.ui-listview li.ui-li-dialogue.ui-li-has-multiline.ui-li-static.ui-li-has-radio .ui-li-text-sub{padding-left:1.9090909090909092rem}.ui-listview li.ui-li-divider+.ui-li-dialogue{border-top-width:1px}.ui-listview>li.ui-li-dialogue.ui-body-s:not(.ui-li-expanded),.ui-listview>li.ui-li-dialogue.ui-btn-hover-up-s:not(.ui-btn-down-s):not(.ui-li-expanded),.ui-listview>li.ui-li-dialogue.ui-btn-up-s:not(.ui-li-expanded){background:#efede5}.ui-listview>li.ui-li-dialogue.ui-li-expanded{padding-left:1.1818181818181819rem;background:#dcdad3}.ui-listview>li.ui-li-dialogue.ui-li-divider{height:1.4545454545454546rem;padding:0}.ui-listview>li.ui-li-group-title{padding-top:1.4545454545454546rem}.ui-listview>li.ui-li-group-title span{padding-left:.7272727272727273rem}.ui-listview>li.ui-li-dialogue-divider{padding-top:.9090909090909092rem;padding-bottom:0rem;padding-left:.4545454545454546rem;margin-left:.18181818181818182rem;margin-right:.18181818181818182rem;background:#efede5;font-size:.7272727272727273rem;font-weight:700;color:#3b73b6}.ui-listview li.ui-li-dialogue-edit{padding-left:5.2727272727272725rem;padding-top:.5454545454545454rem;padding-bottom:.5454545454545454rem}.ui-listview li.ui-li-dialogue-edit .ui-edit-title{position:absolute;left:.4545454545454546rem;width:4.136363636363637rem;padding-right:.36363636363636365rem;display:inline-block;top:50%;margin-top:-.5909090909090909rem;border-right-color:#b9b8b2;border-right-width:1px;border-right-style:solid}.ui-listview li.ui-li-dialogue-edit input{font-size:1rem;background:transparent;outline-color:transparent;width:100%;padding-left:0;padding-right:0}.ui-listview>.ui-li.ui-li-dialogue-edit.ui-li-has-right-btn{padding-right:5rem}.ui-listview .ui-li-static.ui-li-bubble-receive,.ui-listview .ui-li-static.ui-li-bubble-left{color:#fff}.ui-listview .ui-li-static.ui-li-bubble-receive>.ui-li-bubble-time,.ui-listview .ui-li-static.ui-li-bubble-left>.ui-li-bubble-time{color:#d30000}.ui-listview .ui-li-static.ui-li-bubble-sent,.ui-listview .ui-li-static.ui-li-bubble-right{color:#000}.ui-listview .ui-li-static.ui-li-bubble-sent>.ui-li-bubble-time,.ui-listview .ui-li-static.ui-li-bubble-right>.ui-li-bubble-time{color:#39a6d7}.ui-listview .ui-li-static.ui-li-bubble-sos{color:#e94949}.ui-listview .ui-li-static.ui-li-bubble-sos>.ui-li-bubble-time{color:#d30000}.ui-listview .ui-li-static.ui-li-bubble-date{background-color:rgba(225,225,225,0);color:#686868;font-style:italic}.ui-listview span.ui-li-bubble-time{font-weight:700}.ui-listview .ui-li-bubble-receive,.ui-listview .ui-li-bubble-left,.ui-listview .ui-li-bubble-sent,.ui-listview .ui-li-bubble-right,.ui-listview .ui-li-bubble-sos{display:inline-block;background-clip:padding-box;max-width:100%;word-wrap:break-word;font-size:.8636363636363636rem}.ui-listview .ui-li-bubble-receive p,.ui-listview .ui-li-bubble-left p,.ui-listview .ui-li-bubble-sent p,.ui-listview .ui-li-bubble-right p,.ui-listview .ui-li-bubble-sos p,.ui-listview .ui-li-bubble-receive span,.ui-listview .ui-li-bubble-left span,.ui-listview .ui-li-bubble-sent span,.ui-listview .ui-li-bubble-right span,.ui-listview .ui-li-bubble-sos span{font-size:.8636363636363636rem}.ui-listview .ui-li-bubble-receive img,.ui-listview .ui-li-bubble-left img,.ui-listview .ui-li-bubble-sent img,.ui-listview .ui-li-bubble-right img,.ui-listview .ui-li-bubble-sos img{position:relative;min-width:7.272727272727273rem;min-height:7.272727272727273rem}.ui-listview .ui-li-bubble-receive,.ui-listview .ui-li-bubble-left{margin-left:0;margin-right:1.6rem;border-image-source:url(images/00_messagebubble_bg_receive.9.png);border-image-slice:57 14 21 48 fill;border-image-width:auto;padding:9px 14px 21px 48px}.ui-listview .ui-li-bubble-receive>.ui-li-bubble-time,.ui-listview .ui-li-bubble-left>.ui-li-bubble-time{position:absolute;display:inline-block;bottom:.36363636363636365rem;left:100%;font-size:.5rem}.ui-listview .ui-li-bubble-sent,.ui-listview .ui-li-bubble-right{margin-left:1.6rem;margin-right:0;border-image-source:url(images/00_messagebubble_bg_sent.9.png);border-image-slice:55 47 20 13 fill;border-image-width:auto;padding:9px 47px 20px 13px}.ui-listview .ui-li-bubble-sent>.ui-li-bubble-time,.ui-listview .ui-li-bubble-right>.ui-li-bubble-time{position:absolute;display:inline-block;bottom:.36363636363636365rem;right:100%;font-size:.5rem}.ui-listview .ui-li-bubble-date{float:left;width:100%;height:1.0909090909090908rem;background-image:url(images/00_messagebubble_date_bg.png);background-repeat:repeat-x;background-position:center center;font-size:.7272727272727273rem;margin:.9090909090909092rem .2727272727272727rem;border:0 none red;padding:0 0;padding-top:.5em;text-align:center}.ui-listview .ui-li-bubble-date *{display:inline-block;background-color:#f8f6ef;padding-left:.5em;padding-right:.5em}@-webkit-keyframes addliitem{from{ -webkit-transform:scale(0.5);-moz-transform:scale(0.5);opacity:0}to{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1}}.addli{-webkit-animation-name:addliitem;-moz-animation-name:addliitem;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-webkit-transition-timing-function:linear;-moz-transition-timing-function:linear}@-webkit-keyframes removeliitem{from{ -webkit-transform:scale(1);-moz-transform:scale(1);opacity:1}to{-webkit-transform:scale(0.5);-moz-transform:scale(0.5);opacity:0}}.removeli{-webkit-animation-name:removeliitem;-moz-animation-name:removeliitem;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-webkit-transition-timing-function:linear;-moz-transition-timing-function:linear}.ui-controlgroup .ui-radio>.ui-btn{background:#f8f6ef}.ui-controlgroup .ui-btn-text{font-size:.7727272727272727rem;font-weight:700;color:#3a3a3a}.ui-controlgroup .ui-btn-inner .ui-corner-left .ui-controlgroup-first{-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.ui-controlgroup .ui-btn-inner .ui-corner-right .ui-controlgroup-last{-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.ui-controlgroup .ui-radio-off.ui-btn-hover-s.ui-btn-down-s .ui-btn-inner,.ui-controlgroup .ui-radio-on .ui-btn-inner{color:#3b7796}.ui-controlgroup .ui-radio-off .ui-btn-inner{color:#3a3a3a}.ui-controlgroup.ui-controlgroup-horizontal .ui-radio .ui-btn-down-s .ui-btn-inner{background:-webkit-linear-gradient(top, #d2d2c8 0, #f6f8ef 100%)}ul.ui-virtual-list-container>li.position_absolute{position:absolute}ul.ui-virtual-list-container>ul.position_absolute{position:absolute}.ui-scrollview-clip{position:relative}.ui-scrollview-view{overflow-x:hidden;overflow-y:visible}.ui-scrolllistview .ui-li-divider{z-index:10}.ui-scrollbar{position:absolute;overflow:hidden;opacity:0}.ui-scrollbar-visible{opacity:1}.ui-scrollbar-y{top:.09090909090909091rem;right:.09090909090909091rem;bottom:.09090909090909091rem;width:.36363636363636365rem}.ui-scrollbar-x{right:.09090909090909091rem;bottom:.09090909090909091rem;left:.09090909090909091rem;height:.36363636363636365rem}.ui-scrollbar-track{position:relative;width:100%;height:100%}.ui-scrollbar-thumb{position:absolute;top:0;left:0;background-color:#c6c4be}.ui-scrollbar-y .ui-scrollbar-thumb{width:.2272727272727273rem;height:100%;-o-border-radius:.09090909090909091rem;-ms-border-radius:.09090909090909091rem;-moz-border-radius:.09090909090909091rem;-webkit-border-radius:.09090909090909091rem;border-radius:.09090909090909091rem;-o-box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c;-ms-box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c;-moz-box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c;-webkit-box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c;box-shadow:.045454545454545456rem .045454545454545456rem .09090909090909091rem #94928c}.ui-scrollbar-x .ui-scrollbar-thumb{width:100%;height:.2272727272727273rem;-o-border-radius:.09090909090909091rem;-ms-border-radius:.09090909090909091rem;-moz-border-radius:.09090909090909091rem;-webkit-border-radius:.09090909090909091rem;border-radius:.09090909090909091rem}.ui-scroll-jump-top-bg{position:absolute;top:.4090909090909091rem;right:.5909090909090909rem;width:1.6818181818181819rem;height:1.6818181818181819rem}.ui-scroll-jump-left-bg{position:absolute;bottom:.4090909090909091rem;left:.5909090909090909rem;width:1.6818181818181819rem;height:1.6818181818181819rem}.ui-overflow-indicator-top{position:absolute;display:block;top:0;width:100%;height:.4545454545454546rem;opacity:0;background:-webkit-gradient(linear,left bottom,left top,color-stop(0, #fff),color-stop(1, #808080))}.ui-overflow-indicator-bottom{position:absolute;display:block;bottom:0;width:100%;height:.4545454545454546rem;opacity:0;background:-webkit-gradient(linear,left bottom,left top,color-stop(0, #808080),color-stop(1, #fff))}.ui-content.ui-scrollview-clip{padding:0}.ui-content.ui-scrollview-clip>div.ui-scrollview-view{margin:0;padding-left:.36363636363636365rem;padding-right:.36363636363636365rem}.ui-content.ui-scrollview-clip>.ui-listview.ui-scrollview-view{margin:0}@-webkit-keyframes ui-datetime-in{from{ -webkit-transform:translateY(0.6363636363636364rem) scale(0.9)}to{-webkit-transform:translateY(0) scale(1)}}@-webkit-keyframes ui-datetime-out{from{ opacity:.8;-webkit-transform:translateY(0) scale(0.6)}to{opacity:0;-webkit-transform:translateY(-.6363636363636364rem) scale(0.6)}}.ui-datefield .ui-datefield-seperator{display:inline-block;min-width:.4545454545454546rem;text-align:center}.ui-datefield .date,.ui-datefield .time,.ui-datefield .ui-datefield-tab{display:inline-block}.ui-datefield .ui-datefield-tab{min-width:.9090909090909092rem}.ui-datefield .ui-btn-box-s .ui-btn-inner.ui-btn-hastxt{padding:.1em .5em}.ui-datefield .ui-datefield-selected{display:inline-block;color:#3b73b6}.ui-datefield .ui-datefield-selected.in{-ms-animation:ui-datetime-in .3s 1 ease;-o-animation:ui-datetime-in .3s 1 ease;-moz-animation:ui-datetime-in .3s 1 ease;-webkit-animation:ui-datetime-in .3s 1 ease}.ui-datefield .ui-datefield-selected.out{-ms-animation:ui-datetime-out .3s 1 ease;-o-animation:ui-datetime-out .3s 1 ease;-moz-animation:ui-datetime-out .3s 1 ease;-webkit-animation:ui-datetime-out .3s 1 ease}.ui-datetime{margin:0;height:1.6363636363636365rem}.ui-datetime-text-main{position:relative;font-size:1rem;top:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding-top:.3em}.ui-datetime-text-main .ui-datefield-period.ui-btn{margin-top:-.3em;height:1.2727272727272727rem;right:auto;position:relative ! important}.ui-datetime-text-sub{top:.6818181818181819rem ! important;color:#3b73b6 ! important;background:transparent ! important;font-size:.7272727272727273rem ! important}.ui-datetimepicker-selector ul{padding:0;display:inline;list-style:none;vertical-align:middle;margin:0}.ui-datetimepicker-selector ul li{font-size:1rem;float:left;padding:.6818181818181819rem .18181818181818182rem 0 .18181818181818182rem;max-width:5.454545454545455rem;min-width:2.7272727272727275rem}.ui-datetimepicker-selector ul li a.ui-link{text-decoration:none;color:rgba(255,255,255,.7)}.ui-datetimepicker-selector ul li a.ui-link:hover{color:rgba(255,255,255,.7)}.ui-datetimepicker-selector ul li.current a.ui-link{color:#fff}.ui-datetimepicker{left:0!important;padding:0}.ui-datetimepicker .ui-popupwindow-padding{background:#3b73b6!important;border-radius:0!important;-ms-border-radius:0!important;-o-border-radius:0!important;-moz-border-radius:0!important;-webkit-border-radius:0!important;box-shadow:0 0 12px rgba(0,0,0,.6)!important;border-width:0!important;text-align:center!important}.ui-datetimepicker .ui-popupwindow-padding div{height:2.409090909090909rem}.ui-popupwindow-screen{background:#000;opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;z-index:1200}.ui-popupwindow{position:absolute;z-index:1201!important;color:#f8f6ef;background:#f8f6ef}.ui-popupwindow .popup-title{width:100%;height:100%;font-size:1.0909090909090908rem;background:#5093b6}.ui-popupwindow .popup-title p{margin:0rem 0rem;padding:.5909090909090909rem 0rem}.ui-popupwindow .popup-text{width:100%;color:#000;font-size:1.0909090909090908rem;background:#f8f6ef}.ui-popupwindow .popup-text p{text-align:center;padding:1rem .7272727272727273rem}.ui-popupwindow .center_info{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center}.ui-popupwindow .center_title{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_basic_1btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_basic_1btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_basic_1btn .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .center_basic_2btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_basic_2btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_basic_2btn .popup-button-bg .ui-btn{width:12.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_basic_3btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_basic_3btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_basic_3btn .popup-button-bg .ui-btn{width:8.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_title_1btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_title_1btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_title_1btn .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .center_title_2btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_title_2btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_title_2btn .popup-button-bg .ui-btn{width:12.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_title_3btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_title_3btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_title_3btn .popup-button-bg .ui-btn{width:8.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_button_vertical{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_button_vertical .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:1px;padding-bottom:.7272727272727273rem;vertical-align:middle}.ui-popupwindow .center_button_vertical .popup-button-bg .ui-btn{width:16.181818181818183rem;height:3.3636363636363638rem;margin-top:.7272727272727273rem;margin-bottom:0rem;margin-left:auto;margin-right:auto}.ui-popupwindow .center_checkbox{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_checkbox .popup-check-bg{font-size:1.0909090909090908rem;background:#f8f6ef;width:100%;padding-top:0rem;padding-bottom:1rem;vertical-align:middle}.ui-popupwindow .center_checkbox .popup-check-bg .ui-checkbox .ui-btn{text-align:center;background:#f8f6ef;border:0rem}.ui-popupwindow .center_checkbox .popup-check-bg .ui-checkbox .ui-btn .ui-btn-inner{border:0rem}.ui-popupwindow .center_checkbox .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_checkbox .popup-button-bg .ui-btn{width:12.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_liststyle_1btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_liststyle_1btn .popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:23.272727272727273rem}.ui-popupwindow .center_liststyle_1btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_liststyle_1btn .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .center_liststyle_2btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_liststyle_2btn .popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:23.272727272727273rem}.ui-popupwindow .center_liststyle_2btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_liststyle_2btn .popup-button-bg .ui-btn{width:12.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_liststyle_3btn{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_liststyle_3btn .popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:23.272727272727273rem}.ui-popupwindow .center_liststyle_3btn .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_liststyle_3btn .popup-button-bg .ui-btn{width:8.454545454545455rem;height:3.3636363636363638rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popupwindow .center_progressbar{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .center_progressbar .popup-text{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;height:3.181818181818182rem}.ui-popupwindow .center_progressbar .popup-text p{height:100%;text-align:center;padding:1rem .7272727272727273rem 0rem .7272727272727273rem}.ui-popupwindow .center_progressbar .popup-text-bottom-bg{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;vertical-align:middle}.ui-popupwindow .center_progressbar .popup-text-bottom-bg .text-left{width:40%;height:2.1818181818181817rem;padding:0rem .7272727272727273rem 0rem .7272727272727273rem;text-align:left;display:inline-block}.ui-popupwindow .center_progressbar .popup-text-bottom-bg .text-right{width:40%;height:2.1818181818181817rem;padding:0rem .7272727272727273rem 0rem .7272727272727273rem;text-align:right;display:inline-block}.ui-popupwindow .center_progressbar .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .center_progressbar .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .center_progressbar .popup-progress-bg{background:#f8f6ef;width:100%;height:100%}.ui-popupwindow .centertext_progressbar{display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center;text-align:center}.ui-popupwindow .centertext_progressbar .popup-text{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;padding-top:1rem;padding-bottom:.7272727272727273rem}.ui-popupwindow .centertext_progressbar .popup-text p{text-align:center}.ui-popupwindow .centertext_progressbar .popup-text-bottom-bg{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;vertical-align:middle}.ui-popupwindow .centertext_progressbar .popup-text-bottom-bg .text-left{width:40%;height:1.8181818181818183rem;padding:.7272727272727273rem .7272727272727273rem 1rem .7272727272727273rem;text-align:left;display:inline-block}.ui-popupwindow .centertext_progressbar .popup-text-bottom-bg .text-right{width:40%;height:1.8181818181818183rem;padding:.7272727272727273rem .7272727272727273rem 1rem .7272727272727273rem;text-align:right;display:inline-block}.ui-popupwindow .centertext_progressbar .popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popupwindow .centertext_progressbar .popup-button-bg .ui-btn{width:18.272727272727273rem;height:3.3636363636363638rem;margin:auto}.ui-popupwindow .centertext_progressbar .popup-progress-bg{background:#f8f6ef;width:100%;height:100%}.ui-popupwindow .ui-btn.ui-btn-hover-s{background:#5e88a3}.ui-popupwindow .ui-btn.ui-btn-down-s{background:#43a0d9;background:-webkit-gradient(linear,left top,left bottom,from( #43a0d9),to( #388bb9));background:-moz-linear-gradient(top, #43a0d9, #388bb9);background:-ms-linear-gradient(top, #43a0d9, #388bb9);background:-o-linear-gradient(top, #43a0d9, #388bb9)}.ui-popupwindow>.ui-volumecontrol{display:table;margin:auto;background:rgba(0,0,0,.666667);width:18.90909090909091rem;height:30.727272727272727rem;padding-top:1rem}.ui-popupwindow>.ui-volumecontrol h1{font-size:1.0909090909090908rem;display:table;margin:auto;color:#c0c0c0}.ui-popupwindow>.ui-volumecontrol .ui-volumecontrol-icon{display:table;width:100%;height:5.818181818181818rem;padding-top:.9545454545454546rem;padding-bottom:.9545454545454546rem;padding-left:7.5rem;padding-right:7.5rem}.ui-popupwindow>.ui-volumecontrol .ui-volumecontrol-indicator{display:table;width:100%;height:19.09090909090909rem;padding-left:3.090909090909091rem;padding-right:3.090909090909091rem}.ui-popupwindow>.ui-volumecontrol .ui-corner-all{-o-border-radius:.3em!important;-ms-border-radius:.3em!important;-moz-border-radius:.3em!important;-webkit-border-radius:.3em!important;border-radius:.3em!important}.ui-popupwindow-corner-all{-o-border-radius:0!important;-ms-border-radius:0!important;-moz-border-radius:0!important;-webkit-border-radius:0!important;border-radius:0!important}.ui-ctxpopup{display:table}.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-top{top:2px}.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-left{left:2px}.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-right{right:2px}.ui-ctxpopup .ui-ctxpopup-row .ui-triangle-bottom{bottom:2px}.ui-ctxpopup .ui-ctxpopup-row{display:table-row}.ui-ctxpopup .ui-ctxpopup-row .ui-ctxpopup-cell{display:table-cell}.ui-ctxpopup .ui-ctxpopup-row .ui-popupwindow-padding{background:#444;border:0;-ms-box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);-o-box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);-moz-box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);-webkit-box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);box-shadow:0rem 0rem .5454545454545454rem rgba(0,0,0,.6);-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.ui-ctxpopup .ui-listview li.ui-btn-up-s,.ui-ctxpopup .ui-listview li.ui-btn-hover-s{background:transparent}.ui-ctxpopup .ui-listview li:last-child{border-bottom-left-radius:.3em;border-bottom-right-radius:.3em}.ui-ctxpopup .ui-listview li:first-child{border-top-left-radius:.3em;border-top-right-radius:.3em}.ui-ctxpopup .ui-listview{max-width:28.181818181818183rem;border:0}.ui-ctxpopup .ui-listview>.ui-li{color:#fff;border-bottom-color:#2d2d2d;border-top-width:1px;border-top-color:#5b5b5b;margin-left:0;margin-right:0}.ui-ctxpopup .ui-listview>.ui-li:first-child,.ui-ctxpopup .ui-listview>.ui-li:last-child{border-top-width:0}.ui-ctxpopup .ui-listview>.ui-li .ui-btn-inner{margin:0;padding-left:.4545454545454546rem;padding-right:.4545454545454546rem}.ui-ctxpopup .ui-listview li.ui-btn-up-s>.ui-li>.ui-btn-text>a.ui-link-inherit,.ui-ctxpopup .ui-listview li.ui-btn-hover-s>.ui-li>.ui-btn-text>a.ui-link-inherit,.ui-ctxpopup .ui-listview li.ui-btn-down-s>.ui-li>.ui-btn-text>a.ui-link-inherit{color:#fff}.ui-ctxpopup .ui-listview>.ui-li:last-child{border:0}.ui-ctxpopup .horizontal{color:#fff}.ui-ctxpopup .horizontal .icon .ui-btn{padding:0;background:transparent ! important}.ui-ctxpopup .horizontal .icon .ui-btn .ui-btn-icon-only{width:4.363636363636363rem;height:2.909090909090909rem;padding:0}.ui-ctxpopup .horizontal .icon .ui-btn .ui-icon{top:0;height:inherit;width:inherit;margin:0;background-position:center;-ms-background-size:2.1818181818181817rem 2.1818181818181817rem;-moz-background-size:2.1818181818181817rem 2.1818181818181817rem;-o-background-size:2.1818181818181817rem 2.1818181818181817rem;-webkit-background-size:2.1818181818181817rem 2.1818181818181817rem;background-size:2.1818181818181817rem 2.1818181818181817rem}.ui-ctxpopup .horizontal .text{padding:0 .4545454545454546rem;min-width:2.1818181818181817rem}.ui-ctxpopup .horizontal a.ui-link{color:#fff;text-decoration:none}.ui-ctxpopup .horizontal ul{padding:0;display:inline-block;list-style:none;vertical-align:middle;margin:0}.ui-ctxpopup .horizontal li{line-height:1.4545454545454546rem;min-height:1.4545454545454546rem;min-width:2.1818181818181817rem;float:left;display:inline-block;border-right:1px solid #5b5b5b;text-align:center}.ui-ctxpopup .horizontal li:first-of-type{border-top-left-radius:.3em;border-bottom-left-radius:.3em;border-top-right-radius:0 ! important;border-left:0}.ui-ctxpopup .horizontal li:last-of-type{border-top-right-radius:.3em;border-bottom-right-radius:.3em;border-right:0;margin-right:0}.ui-ctxpopup .horizontal .ui-li:first-child,.ui-ctxpopup .horizontal .ui-li:last-child{border-left-width:0}.ui-ctxpopup .horizontal li:active,.ui-ctxpopup .horizontal td:active{background:#3b73b6}.ui-ctxpopup .button table .ui-btn{margin:0rem;padding:0;height:2.5454545454545454rem;width:6rem}.ui-arrow{border-style:solid;border-width:10px;width:0;height:0;position:absolute}.ui-arrow.top{border-color:transparent transparent #444 transparent}.ui-arrow.left{border-color:transparent transparent transparent #444}.ui-arrow.right{border-color:transparent #444 transparent transparent}.ui-arrow.bottom{border-color:#444 transparent transparent transparent}.ui-ctxpopup-container{z-index:1200;display:inline-bloack;position:absolute;padding:0;outline:0}.ui-ctxpopup-container .ui-popup{border:0;background:#444;-o-border-radius:.3em;-ms-border-radius:.3em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.ui-ctxpopup-container .ui-listview li:first-child{border-top-left-radius:.3em;border-top-right-radius:.3em}.poptop{-webkit-transform-origin:0 0;-moz-transform-origin:0 0}.poptop.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:scalepopin;-moz-animation-name:scalepopin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms}.poptop.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;opacity:0;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.poptop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein}.poptop.out.reverse{-webkit-transform:scale(0.8);-moz-transform:scale(0.8);-webkit-animation-name:scalepopout;-moz-animation-name:scalepopout}@-webkit-keyframes scalepopin{from{ -webkit-transform:scale(0.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}.popbottom{-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%}.popbottom.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:scalepopin;-moz-animation-name:scalepopin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms}.popbottom.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;opacity:0;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.popbottom.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein}.popbottom.out.reverse{-webkit-transform:scale(0.8);-moz-transform:scale(0.8);-webkit-animation-name:scalepopout;-moz-animation-name:scalepopout}@-moz-keyframes scalepopin{from{ -moz-transform:scale(0.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes scalepopout{from{ -webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(0.8);opacity:0}}@-moz-keyframes scalepopout{from{ -moz-transform:scale(1);opacity:1}to{-moz-transform:scale(0.8);opacity:0}}@-webkit-keyframes ui-scale-animation{from{ -webkit-transform:scaleX(0)}to{-webkit-transform:scaleX(1)}}.ui-progressbar-value{height:100%;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0, #3677c3),color-stop(1, #96b8e0));-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem;-o-box-shadow:-1px -1px 1px #b3c8e2;-ms-box-shadow:-1px -1px 1px #b3c8e2;-moz-box-shadow:-1px -1px 1px #b3c8e2;-webkit-box-shadow:-1px -1px 1px #b3c8e2;box-shadow:-1px -1px 1px #b3c8e2}.ui-progressbar-bg{position:relative;overflow:hidden;top:.2272727272727273rem;height:.3181818181818182rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem;border:1px;border-style:solid;border-color:#a3a09e;-o-box-shadow:1px -1px 1px #a3a09e;-ms-box-shadow:1px -1px 1px #a3a09e;-moz-box-shadow:1px -1px 1px #a3a09e;-webkit-box-shadow:1px -1px 1px #a3a09e;box-shadow:1px -1px 1px #a3a09e;background-color:#cac8c4}.ui-progressbar{position:relative;margin-top:.8181818181818182rem;margin-bottom:.8181818181818182rem;margin-left:.9545454545454546rem;margin-right:.9545454545454546rem;height:.8181818181818182rem;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0, #f6f3ef),color-stop(1, #cac8c4));-o-box-shadow:1px 1px 0 #fff;-ms-box-shadow:1px 1px 0 #fff;-moz-box-shadow:1px 1px 0 #fff;-webkit-box-shadow:1px 1px 0 #fff;box-shadow:1px 1px 0 #fff;-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem}@-webkit-keyframes ui-rotate-animation{from{ -webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}.ui-progress-container-circle{position:absolute}.ui-li .ui-progress-container-circle{top:22%}.ui-progress-circle{position:relative;top:0;height:1.4545454545454546rem;width:1.4545454545454546rem;background:url(images/00_list_process_01.png) no-repeat;-ms-background-size:1.4545454545454546rem 1.4545454545454546rem;-moz-background-size:1.4545454545454546rem 1.4545454545454546rem;-o-background-size:1.4545454545454546rem 1.4545454545454546rem;-webkit-background-size:1.4545454545454546rem 1.4545454545454546rem;background-size:1.4545454545454546rem 1.4545454545454546rem}.ui-progress-circle-running{-webkit-animation:ui-rotate-animation 1s infinite linear}@-webkit-keyframes ui-move-animation{from{ -webkit-transform:translateY(-.6363636363636364rem)}to{-webkit-transform:translateY(0)}}.ui-progress-pending{position:relative;top:0;width:100%;height:.9545454545454546rem;padding-top:0;padding-bottom:0;background:-webkit-gradient(linear,left top,right bottom,color-stop(0%,rgba(0,0,0,0)),color-stop(25%,rgba(0,0,0,0)),color-stop(25%, #3677c3),color-stop(50%, #3677c3),color-stop(50%,rgba(0,0,0,0)),color-stop(75%,rgba(0,0,0,0)),color-stop(75%, #3677c3));background-color:#cac8c4;-ms-background-size:.6363636363636364rem .6363636363636364rem;-moz-background-size:.6363636363636364rem .6363636363636364rem;-o-background-size:.6363636363636364rem .6363636363636364rem;-webkit-background-size:.6363636363636364rem .6363636363636364rem;background-size:.6363636363636364rem .6363636363636364rem}.ui-progress-pending-running{-webkit-animation:ui-move-animation .5s infinite linear}label.ui-slider{display:block}select.ui-slider-switch{display:none}.ui-slider-container{position:relative;vertical-align:middle;height:.8181818181818182rem;margin-left:.7272727272727273rem;margin-right:.7272727272727273rem;margin-top:.8181818181818182rem;margin-bottom:.8181818181818182rem;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0, #f6f3ef),color-stop(1, #cac8c4));-o-box-shadow:1px 1px 0 #fff;-ms-box-shadow:1px 1px 0 #fff;-moz-box-shadow:1px 1px 0 #fff;-webkit-box-shadow:1px 1px 0 #fff;box-shadow:1px 1px 0 #fff;-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem}.ui-li>.ui-slider-container{margin-top:0;margin-bottom:0}.ui-slider-left-volume,.ui-slider-left-bright{position:absolute;vertical-align:middle;top:-.5rem;left:-2.272727272727273rem;height:1.6818181818181819rem;width:1.6818181818181819rem;background:url(images/controls/00_slider_button_brightness_01.png) no-repeat;-ms-background-size:1.6818181818181819rem 1.6818181818181819rem;-moz-background-size:1.6818181818181819rem 1.6818181818181819rem;-o-background-size:1.6818181818181819rem 1.6818181818181819rem;-webkit-background-size:1.6818181818181819rem 1.6818181818181819rem;background-size:1.6818181818181819rem 1.6818181818181819rem}.ui-slider-left-volume{background:url(images/controls/00_slider_button_volume_01.png) no-repeat;-ms-background-size:1.6818181818181819rem 1.6818181818181819rem;-moz-background-size:1.6818181818181819rem 1.6818181818181819rem;-o-background-size:1.6818181818181819rem 1.6818181818181819rem;-webkit-background-size:1.6818181818181819rem 1.6818181818181819rem;background-size:1.6818181818181819rem 1.6818181818181819rem}.ui-slider-right-volume,.ui-slider-right-bright{position:absolute;top:-.5rem;right:-2.272727272727273rem;height:1.6818181818181819rem;width:1.6818181818181819rem;vertical-align:middle;background:url(images/controls/00_slider_button_brightness_02.png) no-repeat;-ms-background-size:1.6818181818181819rem 1.6818181818181819rem;-moz-background-size:1.6818181818181819rem 1.6818181818181819rem;-o-background-size:1.6818181818181819rem 1.6818181818181819rem;-webkit-background-size:1.6818181818181819rem 1.6818181818181819rem;background-size:1.6818181818181819rem 1.6818181818181819rem}.ui-slider-right-volume{background:url(images/controls/00_slider_button_volume_02.png) no-repeat;-ms-background-size:1.6818181818181819rem 1.6818181818181819rem;-moz-background-size:1.6818181818181819rem 1.6818181818181819rem;-o-background-size:1.6818181818181819rem 1.6818181818181819rem;-webkit-background-size:1.6818181818181819rem 1.6818181818181819rem;background-size:1.6818181818181819rem 1.6818181818181819rem}.ui-slider-left-text{position:absolute;top:-.5rem;height:1.6818181818181819rem;text-align:center;color:#808080}.ui-slider-right-text{position:absolute;top:-.5rem;height:1.6818181818181819rem;text-align:center;color:#808080}div.ui-slider:not(.ui-toggle-switch){position:relative;top:.2272727272727273rem;height:.3181818181818182rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem;border:1px;border-style:solid;border-color:#a3a09e;-o-box-shadow:1px 1px 0 #000;-ms-box-shadow:1px 1px 0 #000;-moz-box-shadow:1px 1px 0 #000;-webkit-box-shadow:1px 1px 0 #000;box-shadow:1px 1px 0 #000;background-color:#cac8c4}div.ui-slider:not(.ui-toggle-switch) .ui-btn{top:-.75rem;margin-top:0}div.ui-slider:not(.ui-toggle-switch) .ui-btn-inner{padding:.3rem 0 0 0}div.ui-slider:not(.ui-toggle-switch) .ui-btn-text{color:#3b73b6}a.ui-slider-handle{position:relative;z-index:10;width:1.6363636363636365rem;height:1.6363636363636365rem;margin-left:-.8636363636363636rem;color:#3b73b6;font-size:.95rem;background:url(images/controls/00_slider_handle.png) no-repeat;-ms-background-size:1.6363636363636365rem 1.6363636363636365rem;-moz-background-size:1.6363636363636365rem 1.6363636363636365rem;-o-background-size:1.6363636363636365rem 1.6363636363636365rem;-webkit-background-size:1.6363636363636365rem 1.6363636363636365rem;background-size:1.6363636363636365rem 1.6363636363636365rem}.ui-slider-popup{position:absolute!important;z-index:1200;width:2.0454545454545454rem;height:2.4545454545454546rem;padding-top:.1rem;color:#f9f9f9;text-align:center;font-size:1.5rem;background:url(images/controls/00_slider_popup_bg.png) no-repeat;-ms-background-size:2.0454545454545454rem 2.4545454545454546rem;-moz-background-size:2.0454545454545454rem 2.4545454545454546rem;-o-background-size:2.0454545454545454rem 2.4545454545454546rem;-webkit-background-size:2.0454545454545454rem 2.4545454545454546rem;background-size:2.0454545454545454rem 2.4545454545454546rem}.ui-slider-bg{position:absolute;height:.3181818181818182rem;width:0;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0, #3677c3),color-stop(1, #96b8e0));-o-border-radius:.4545454545454546rem;-ms-border-radius:.4545454545454546rem;-moz-border-radius:.4545454545454546rem;-webkit-border-radius:.4545454545454546rem;border-radius:.4545454545454546rem;-o-box-shadow:-1px -1px 1px #b3c8e2;-ms-box-shadow:-1px -1px 1px #b3c8e2;-moz-box-shadow:-1px -1px 1px #b3c8e2;-webkit-box-shadow:-1px -1px 1px #b3c8e2;box-shadow:-1px -1px 1px #b3c8e2}.ui-slider-handle-press{position:absolute;z-index:15;width:1.6818181818181819rem;height:1.6818181818181819rem;background:url(images/controls/00_slider_handle_press.png) no-repeat;-ms-background-size:1.6363636363636365rem 1.6363636363636365rem;-moz-background-size:1.6363636363636365rem 1.6363636363636365rem;-o-background-size:1.6363636363636365rem 1.6363636363636365rem;-webkit-background-size:1.6363636363636365rem 1.6363636363636365rem;background-size:1.6363636363636365rem 1.6363636363636365rem}.ui-gallery{position:relative;width:100%}.ui-gallery-bg{display:none;position:absolute;text-align:center;width:100%}@-webkit-keyframes ui-ticker-show{from{ opacity:0;-webkit-transform:translateY(-2.272727272727273rem);top:-2.272727272727273rem}to{opacity:1;-webkit-transform:translateY(0);top:0}}@-webkit-keyframes ui-ticker-hide{from{ opacity:1;-webkit-transform:translateY(0);top:0}to{opacity:0;-webkit-transform:translateY(-2.272727272727273rem);top:-2.272727272727273rem}}.ui-ticker{position:fixed;display:none;left:0;width:100%;height:2.272727272727273rem;z-index:2147483547;background:#444}.ui-ticker.fix{display:block;top:0}.ui-ticker.show{display:block;-ms-animation:ui-ticker-show .8s 1 ease;-o-animation:ui-ticker-show .8s 1 ease;-moz-animation:ui-ticker-show .8s 1 ease;-webkit-animation:ui-ticker-show .8s 1 ease;top:0}.ui-ticker.hide{display:block;-o-animation:ui-ticker-hide .8s 1 ease;-ms-animation:ui-ticker-hide .8s 1 ease;-webkit-animation:ui-ticker-hide .8s 1 ease;top:-2.272727272727273rem}.ui-ticker-btn{position:relative;margin-top:.4545454545454546rem;margin-left:.36363636363636365rem;margin-right:.36363636363636365rem;vertical-align:middle;float:right}.ui-ticker-btn .ui-btn-inner{padding:.15rem 0 0 0;height:1.2727272727272727rem;width:3.5rem;font-size:.81rem;color:#fff;background:#404040;border:1px;border-color:#323232;box-shadow:0 0 1px 1px #323232}.ui-ticker-btn .ui-btn-box-s.ui-btn-up-s{background:#404040;box-shadow:0 0 1px 1px #323232;border-color:#323232}.ui-ticker-btn .ui-btn-box-s.ui-btn-hover-s{background:#404040;box-shadow:0 0 1px 1px #323232;border-color:#323232}.ui-ticker-icon{position:absolute;top:0;height:1.4545454545454546rem;width:1.4545454545454546rem;margin-top:.4090909090909091rem;margin-bottom:.4090909090909091rem;margin-left:.36363636363636365rem;margin-right:.36363636363636365rem;vertical-align:middle}.ui-ticker-text1-bg{position:absolute;top:0;height:.8181818181818182rem;left:2.1818181818181817rem;margin-top:.36363636363636365rem;font-size:.68rem;color:#fff}.ui-ticker-text2-bg{position:absolute;top:0;height:.7272727272727273rem;left:2.1818181818181817rem;margin-top:1.1818181818181819rem;font-size:.54rem;color:#fff}@-webkit-keyframes ui-smallpopup-show{from{ opacity:0;-webkit-transform:scaleY(0)}to{opacity:1;-webkit-transform:scaleY(1)}}@-webkit-keyframes ui-smallpopup-hide{from{ opacity:1;left:0;-webkit-transform:scaleY(1)}to{opacity:0;left:0;-webkit-transform:scaleY(0)}}.ui-smallpopup{position:fixed;display:none;left:0;width:100%;z-index:1100;background:#444;vertical-align:middle;font-size:.72rem;word-break:break-all}.ui-smallpopup.fix{display:block}.ui-smallpopup.show{display:block;-moz-animation:ui-smallpopup-show .5s 1 ease;-ms-animation:ui-smallpopup-show .5s 1 ease;-o-animation:ui-smallpopup-show .5s 1 ease;-webkit-animation:ui-smallpopup-show .5s 1 ease}.ui-smallpopup.hide{display:block;left:-100%;-moz-animation:ui-smallpopup-hide .5s 1 ease;-ms-animation:ui-smallpopup-hide .5s 1 ease;-o-animation:ui-smallpopup-hide .5s 1 ease;-webkit-animation:ui-smallpopup-hide .5s 1 ease}.ui-smallpopup-text-bg{position:relative;margin-top:.18181818181818182rem;margin-bottom:.18181818181818182rem;margin-left:.36363636363636365rem;margin-right:.36363636363636365rem;color:#fff}.ui-swipe{list-style-type:none;overflow:hidden}.ui-swipe-item{height:1.1818181818181819rem;-ms-user-select:none;-o-user-select:none;-moz-user-select:none;-webkit-user-select:none;-user-select:none;opacity:0;text-align:center}.ui-swipe-item .ui-btn{margin-top:-1.5em ! important;position:relative ! important}.ui-swipe-item p{margin:0}.ui-swipe-item-cover{position:absolute;border:0;top:0;left:0;width:100%;height:100%;z-index:100}.ui-swipe-item-cover .ui-swipe-item-cover-inner{position:absolute;padding-top:.6818181818181819rem;padding-bottom:.6818181818181819rem;padding-left:.36363636363636365rem;width:100%;text-align:left}.ui-swipe-item-cover .ui-swipe-item-cover-inner .ui-li-text-sub{position:absolute;padding-right:.7272727272727273rem}.ui-swipe-item-cover p{margin:0}.ui-fastscroll{position:absolute;right:0rem;background-color:#e6e3d8;width:1.1363636363636365rem;-ms-user-select:none;-o-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none;margin:0;padding-right:.08em;opacity:1}.ui-fastscroll ul{list-style-type:none;margin:0;padding:0}.ui-fastscroll li{cursor:pointer;color:#a09f9a;padding:.09090909090909091rem .09090909090909091rem .09090909090909091rem .09090909090909091rem;text-align:center;vertical-align:middle;font-size:.7272727272727273rem;font-weight:700;border-left-width:.13636363636363635rem;border-left-color:#3b73b6;border-left-style:solid;border-top-width:.13636363636363635rem;border-top-color:#e6e3d8}.ui-fastscroll2{position:absolute;right:0rem;-ms-user-select:none;-o-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none;margin:0;padding-right:.08em;opacity:1}.ui-fastscroll2 ul{list-style-type:none;margin:0;padding:0}.ui-fastscroll2 li{cursor:pointer;color:#a09f9a;padding:.09090909090909091rem .09090909090909091rem .09090909090909091rem .09090909090909091rem;text-align:right}.ui-fastscroll-bg{position:absolute;right:0rem;background-color:#e6e3d8;width:1.1363636363636365rem;z-index:10;top:0}.ui-fastscroll-popup{position:absolute;background:#3b73b6;color:#fff;padding:.4545454545454546rem 1.3636363636363638rem;-ms-box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);-o-box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);-moz-box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);-webkit-box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);box-shadow:.36363636363636365rem .4545454545454546rem 0rem rgba(199,199,199,.5);text-align:center;font-size:3.409090909090909rem;font-weight:700;display:none;box-sizing:border-box;left:50%;top:50%}li.ui-fastscroll-hover{color:#3b73b6}li.ui-fastscroll-hover,li.ui-fastscroll-hover-up,li.ui-fastscroll-hover-down{background:#f8f6ef;border-style:solid;border-color:#3b73b6;border-width:0;border-right-width:.13636363636363635rem;border-left-width:1px;border-left-color:#f8f6ef}li.ui-fastscroll-hover{padding-top:.045454545454545456rem;padding-bottom:.045454545454545456rem}li.ui-fastscroll-hover-first-item{padding-top:.09090909090909091rem}li.ui-fastscroll-hover-up{border-top-width:.13636363636363635rem;padding-top:0}li.ui-fastscroll-hover-down{border-bottom-width:.13636363636363635rem;padding-bottom:0}div.ui-slider.ui-toggle-switch{width:3rem;height:1.590909090909091rem;background-color:transparent;margin-top:.2272727272727273rem;margin-bottom:.2272727272727273rem}div.ui-slider.ui-toggle-switch .ui-slider-label{position:absolute;width:3rem;height:1.590909090909091rem;background-size:100% 100%;background-repeat:no-repeat;background-color:transparent}div.ui-slider.ui-toggle-switch .ui-slider-label.ui-slider-label-a{background-image:url(images/00_button_on.png)}div.ui-slider.ui-toggle-switch .ui-slider-label.ui-slider-label-b{background-image:url(images/00_button_off.png)}div.ui-slider.ui-toggle-switch .ui-slider-inneroffset a{background:0}.ui-slider-switch:not(.ui-toggle-switch){width:4.181818181818182rem}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch){position:relative;margin-top:.2272727272727273rem;margin-bottom:.2272727272727273rem;height:1.4545454545454546rem;top:0;margin:.2272727272727273rem;border-radius:.6818181818181819rem}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) .ui-slider-inneroffset{position:relative;margin:-1px .7272727272727273rem;z-index:1}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) a.ui-slider-handle{position:absolute;background:#fff;background-image:-webkit-gradient(radial,50% 50%,0,50% 50%,50,from( #f9f9f9),to( #323232));-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);top:50%;margin:1px 0 0 -.6818181818181819rem;border-radius:.6818181818181819rem;border:2px solid gray;width:1.2727272727272727rem;height:1.2727272727272727rem}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) a.ui-slider-handle-snapping{-webkit-transition:left 70ms linear}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span{position:absolute;overflow:hidden;text-align:center;height:1.4545454545454546rem;font-weight:700;font-size:.7272727272727273rem;border-radius:.6818181818181819rem;white-space:nowrap;line-height:2}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span.ui-slider-label-a{left:0;color:#fff;z-index:1;text-indent:-1.5em}div.ui-slider.ui-slider-switch:not(.ui-toggle-switch) span.ui-slider-label-b{right:0;color:#000;z-index:0;text-indent:1.5em}.ui-slider-switch .ui-slider-handle .ui-btn-inner{padding:0}.ui-triangle-container{position:relative}.ui-triangle-container .ui-triangle{position:absolute;border-style:solid;border-color:transparent;border-width:10px}.ui-triangle-container .ui-triangle-top{top:0;border-top-width:0;border-left-color:transparent;border-right-color:transparent;margin-left:-10px}.ui-triangle-container .ui-triangle-bottom{bottom:0;border-bottom-width:0;border-left-color:transparent;border-right-color:transparent;margin-left:-10px}.ui-triangle-container .ui-triangle-left{left:0;margin-top:-10px;border-left-width:0;border-left-color:transparent;border-right-color:transparent}.ui-triangle-container .ui-triangle-right{right:0;margin-top:-10px;border-right-width:0;border-left-color:transparent;border-right-color:transparent}.ui-triangle-container-top{height:10px;top:0;margin-top:-10px}.ui-triangle-container-bottom{height:10px;bottom:0;margin-bottom:-10px}.ui-triangle-container-left{width:10px}.ui-triangle-container-right{width:10px}.ui-tokentextarea{display:table;outline:0;position:relative}.ui-tokentextarea .ui-tokentextarea-label{display:inline-block;position:relative;margin-left:5px;margin-right:5px;padding:10px 0;color:#666;font-weight:700;text-align:center;font-size:1em}.ui-tokentextarea-input{outline:0;position:relative;border:0!important;padding:0!important;margin:8px;color:#222;text-align:left;font-size:1em}.ui-tokentextarea-input-visible{display:inline-block!important}.ui-tokentextarea-input-invisible{display:none!important}.ui-tokentextarea div{display:inline-block;text-align:center;cursor:pointer;position:relative;margin-left:5px;margin-right:5px;margin-bottom:5px;margin-top:5px;padding:3px 8px;font-size:1em;text-shadow:0 .1em .1em rgba(0,0,0,.3);-ms-border-radius:.2em;-o-border-radius:.2em;-webkit-border-radius:.2em;-moz-border-radius:.2em;border-radius:.2em;-o-box-shadow:0 .1em .1em rgba(0,0,0,.2);-ms-box-shadow:0 .1em .1em rgba(0,0,0,.2);-moz-box-shadow:0 .1em .1em rgba(0,0,0,.2);-webkit-box-shadow:0 .1em .1em rgba(0,0,0,.2);box-shadow:0 .1em .1em rgba(0,0,0,.2);color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}div.ui-tokentextarea-block{background-color:#5f8abd;background-image:url(./images/00_contacts_button_header.png);background-size:contain;background-repeat:no-repeat;padding-left:11px}div.ui-tokentextarea-sblock{background-color:#365984;background-image:url(./images/00_contacts_button_header_press.png);background-size:contain;background-repeat:no-repeat;padding-left:11px}.ui-tokentextarea .ui-tokentextarea-desclabel{display:inline-block;outline:0;position:relative;border:0;color:#666;text-align:left;font-size:1em}.ui-tokentextarea-link-base{position:absolute;right:0;bottom:.2em}.ui-handler{position:absolute;overflow:hidden;opacity:0}.ui-handler-visible{opacity:1}.ui-handler-direction-y{top:.2272727272727273rem;right:.2272727272727273rem;bottom:.2272727272727273rem;width:1.0909090909090908rem}.ui-handler-direction-x{right:.2272727272727273rem;bottom:.2272727272727273rem;left:.2272727272727273rem;height:1.0909090909090908rem}.ui-handler-track{position:relative;width:100%;height:100%}.ui-handler-thumb{position:absolute;top:0;left:0;background-position:center;background-repeat:no-repeat;-o-border-radius:.11363636363636365rem;-ms-border-radius:.11363636363636365rem;-moz-border-radius:.11363636363636365rem;-webkit-border-radius:.11363636363636365rem;border-radius:.11363636363636365rem}.ui-handler-direction-y .ui-handler-thumb{width:1.0909090909090908rem;height:4.863636363636364rem;background-size:1.0909090909090908rem .9090909090909092rem}.ui-handler-direction-x .ui-handler-thumb{width:4.863636363636364rem;height:1.0909090909090908rem;background-size:.9090909090909092rem 1.0909090909090908rem}.ui-handler-s .ui-handler-thumb{background-color:rgba(150,150,150,.5)}.ui-handler-s .ui-handler-direction-y .ui-handler-thumb{background-image:url("images/00_scroll_bar_handler.png")}.ui-handler-s .ui-handler-direction-x .ui-handler-thumb{background-image:url("images/00_scroll_bar_handler_hor.png")}.ui-virtualgrid{overflow:hidden;position:absolute}.ui-virtualgrid-wrapblock{position:absolute;left:0}.ui-virtualgrid-wrapblock-x{float:left;overflow:hidden}.ui-scrollbar-thumb-x{width:1.5rem!important}.ui-scrollbar-thumb-y{height:1.5rem!important}.ui-virtualgrid-overflow-indicator-x-top{position:absolute;display:block;left:0;top:0;width:.4545454545454546rem;height:100%;opacity:0;background:-webkit-gradient(linear,right top,left top,color-stop(0,rgba(128,128,128,0)),color-stop(1, #808080));pointer-events:none}.ui-virtualgrid-overflow-indicator-x-bottom{position:absolute;display:block;right:0;bottom:0;width:.4545454545454546rem;height:100%;opacity:0;background:-webkit-gradient(linear,right top,left top,color-stop(0, #808080),color-stop(1,rgba(128,128,128,0)));pointer-events:none}.ui-virtualgrid-overflow-indicator-y-top{position:absolute;display:block;top:0;width:100%;height:.4545454545454546rem;opacity:0;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,rgba(128,128,128,0)),color-stop(1, #808080));pointer-events:none}.ui-virtualgrid-overflow-indicator-y-bottom{position:absolute;display:block;bottom:0;width:100%;height:.4545454545454546rem;opacity:0;background:-webkit-gradient(linear,left bottom,left top,color-stop(0, #808080),color-stop(1,rgba(128,128,128,0)));pointer-events:none}.ui-content.ui-virtualgrid-content{padding:0}.ui-multimediaview{background-color:#f9f9f9;overflow:hidden}.ui-multimediaview-wrap{width:100%;padding:0;position:relative;overflow:hidden}.ui-multimediaview-siblings-off{display:none!important}.ui-multimediaview-control span{display:inline-block}.ui-multimediaview-video{position:absolute}.ui-multimediaview-control{display:block;z-index:1002;padding:0;margin:0;outline:0;border:0;height:1.9090909090909092rem;text-align:left;overflow:hidden}.ui-multimediaview-control span.ui-button{background-position:center center;background-size:80%;background-repeat:no-repeat;width:1.6818181818181819rem;height:1.6818181818181819rem;margin:.09090909090909091rem}.ui-multimediaview-control .ui-playpausebutton{float:left}.ui-multimediaview-control .ui-timestamplabel{text-align:center;float:left}.ui-multimediaview-control .ui-timestamplabel p{margin-top:-.22272727272727275rem;margin-left:.09090909090909091rem;padding:0;text-align:center;font-size:.5rem;line-height:.6363636363636364rem;text-align:left}.ui-multimediaview-control .ui-durationlabel{text-align:center;float:right}.ui-multimediaview-control .ui-durationlabel p{margin-top:-.22272727272727275rem;margin-right:.09090909090909091rem;padding:0;text-align:center;font-size:.5rem;line-height:.6363636363636364rem;text-align:right}.ui-multimediaview-bar{margin-top:.22272727272727275rem;float:left}.ui-multimediaview-bar-bg{height:.36363636363636365rem;border-radius:1.5em}.ui-multimediaview-bar-highlight{height:.36363636363636365rem;position:absolute;border-radius:1.5em}.ui-multimediaview-control .ui-seekbar{margin-left:.09090909090909091rem}.ui-multimediaview-control .ui-seekbar .ui-duration{width:100%}.ui-multimediaview-control .ui-volumecontrol{width:5rem;height:100%;float:left}.ui-multimediaview-control .ui-volumecontrol .ui-volumebar{margin-left:.6818181818181819rem}.ui-multimediaview-control .ui-volumecontrol .ui-volumebar .ui-guide{width:3.8636363636363638rem}.ui-multimediaview-control .ui-volumecontrol .ui-volumebar .ui-handle{margin:0;padding:0;width:.6818181818181819rem;height:.6818181818181819rem;border-style:solid;border-width:1px;border-radius:1.5em}.ui-fullscreen-parents{padding:0!important;margin:0!important;width:100%!important;height:100%!important;overflow:hidden}.ui-multimediaview-s .ui-multimediaview-video{background-color:rgba(248,246,239,.5)}.ui-multimediaview-s .ui-timestamplabel{color:#4a84c9}.ui-multimediaview-s .ui-durationlabel{color:#808080}.ui-multimediaview-s span.ui-button{background-color:#f8f6ef}.ui-multimediaview-s span.ui-play-icon{background-image:url(./images/00_button_play.png)}.ui-multimediaview-s span.ui-pause-icon{background-image:url(./images/00_button_pause.png)}.ui-multimediaview-s span.ui-volume-icon{background-image:url(./images/controls/00_slider_button_volume_02.png)}.ui-multimediaview-s span.ui-mute-icon{background-image:url(./images/controls/00_slider_button_volume_01.png)}.ui-multimediaview-s span.ui-fullscreen-on{background-image:url(./images/00_button_fullscreen_on.png)}.ui-multimediaview-s span.ui-fullscreen-off{background-image:url(./images/00_button_fullscreen_off.png)}.ui-multimediaview-s .ui-seekbar .ui-duration{background-color:#cbc8c5}.ui-multimediaview-s .ui-seekbar .ui-currenttime{background-color:#4a84c9;background-image:-webkit-gradient(linear,left top,left bottom,from( #6289d9),to( #295b98));background-image:-moz-linear-gradient(top, #6289d9, #295b98);background-image:-o-linear-gradient(top, #6289d9, #295b98);background-image:-ms-linear-gradient(top, #6289d9, #295b98)}.ui-multimediaview-s .ui-volumebar .ui-guide{background-color:#cbc8c5}.ui-multimediaview-s .ui-volumebar .ui-value{background-color:#4a84c9;background-image:-webkit-gradient(linear,left top,left bottom,from( #6289d9),to( #295b98));background-image:-moz-linear-gradient(top, #6289d9, #295b98);background-image:-o-linear-gradient(top, #6289d9, #295b98);background-image:-ms-linear-gradient(top, #6289d9, #295b98)}.ui-multimediaview-s .ui-volumebar .ui-handle{background-color:#f9f9f9;background-image:-webkit-gradient(linear,left top,left bottom,from( #fff),to( #e6e6e6));background-image:-moz-linear-gradient(top, #fff, #e6e6e6);background-image:-o-linear-gradient(top, #fff, #e6e6e6);background-image:-ms-linear-gradient(top, #fff, #e6e6e6);border-color:#bab9b4}.ui-popup-screen{top:0;left:0;width:100%;height:100%;border:0;position:absolute;filter:Alpha(Opacity=50);opacity:0}.ui-popup-screen-background-hack{background-color:#000;filter:Alpha(Opacity=0)}@-webkit-keyframes popup-fadein{from{ opacity:0}to{opacity:.5}}@-moz-keyframes popup-fadein{from{ opacity:0}to{opacity:.5}}@-webkit-keyframes popup-fadeout{from{ opacity:.5}to{opacity:0}}@-moz-keyframes popup-fadeout{from{ opacity:.5}to{opacity:0}}.ui-popup-screen.fade.in{opacity:.5;-webkit-animation-name:popup-fadein;-moz-animation-name:popup-fadein}.ui-popup-screen.fade.out{opacity:0;-webkit-animation-name:popup-fadeout;-moz-animation-name:popup-fadeout}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup>img{width:auto;height:auto;max-width:100%;max-height:100%;vertical-align:middle}.ui-popup iframe{vertical-align:middle}@media all and (min-width: 450px){.ui-popup .ui-field-contain label.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-label,.ui-popup .ui-field-contain label.ui-select,.ui-popup .ui-field-contain label.ui-input-text{ font-size:16px;line-height:1.4;display:block;font-weight:400;margin:0 0 .3em}.ui-popup .ui-field-contain .ui-btn.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-controls,.ui-popup .ui-field-contain .ui-select,.ui-popup .ui-field-contain input.ui-input-text,.ui-popup .ui-field-contain textarea.ui-input-text,.ui-popup .ui-field-contain .ui-input-search{width:100%;display:block}}.ui-popup>.ui-btn-left,.ui-popup>.ui-btn-right{position:absolute;top:-9px;margin:0;z-index:1101}.ui-popup>.ui-btn-left{left:-9px}.ui-popup>.ui-btn-right{right:-9px}.ui-popup-screen{background:#000;opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;z-index:1200}.ui-overlay-dim{opacity:.7}.ui-popup-scroller-bg{width:100%}.ui-popup-container{position:absolute;width:86.12%;z-index:1201!important;background:#f8f6ef;text-align:center;outline-color:#f8f6ef;display:-moz-box;display:-webkit-box;display:box;-ms-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-box-orient:vertical;box-orient:vertical;-ms-box-align:center;-moz-box-align:center;-o-box-align:center;-webkit-box-align:center;box-align:center;-ms-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-webkit-box-pack:center;box-pack:center}.ui-popup-container .ui-popup{padding:3px 2px 2px 2px;background:#f8f6ef;width:100%;word-wrap:break-word}.ui-popup-container .ui-popup>.ui-popup-title,.ui-popup-container .ui-popup>.ui-popup-text,.ui-popup-container .ui-popup>.ui-popup-button-bg{width:100%}.ui-popup-container .ui-popup-title{width:100%;height:1.8181818181818183rem;text-align:left;color:#3b73b6;font-size:1.0909090909090908rem;font-weight:700}.ui-popup-container .ui-popup-title h1{font-size:1.0909090909090908rem;font-weight:700;color:#3b73b6;margin:0;padding-top:.4545454545454546rem;padding-left:.7272727272727273rem}.ui-popup-container .ui-popup-text{margin-top:1rem;margin-bottom:1rem;color:#000;font-size:.9090909090909092rem;background:#f8f6ef;text-align:center}.ui-popup-container .ui-popup-text .ui-li .ui-radio label,.ui-popup-container .ui-popup-text .ui-li .ui-checkbox label{background:transparent}.ui-popup-container .ui-popup-text input{display:inline-block}.ui-popup-container .ui-popup-button-bg{font-size:1.4545454545454546rem;height:1.6818181818181819rem;padding-top:.4545454545454546rem;padding-bottom:.4545454545454546rem;width:100%;vertical-align:middle}.ui-popup-container .ui-popup-button-bg>.ui-btn{display:inline-block;margin:auto;height:1.6818181818181819rem}.ui-popup-container .ui-popup-button-bg .ui-btn-inner{padding-top:.2272727272727273rem;padding-bottom:.2272727272727273rem;padding-left:.9090909090909092rem;padding-right:.9090909090909092rem}.ui-popup-container .center_basic_3btn .ui-btn,.ui-popup-container .center_title_3btn .ui-btn{max-width:3.6363636363636367rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_button_vertical .ui-popup-button-bg{display:block;height:auto}.ui-popup-container .center_button_vertical .ui-popup-button-bg>.ui-btn{display:block;width:9.090909090909092rem}.ui-popup-container .center_checkbox .ui-popup-check-bg{font-size:.9090909090909092rem;background:#f8f6ef;width:100%;padding-top:0rem;padding-bottom:1rem;vertical-align:middle}.ui-popup-container .center_checkbox .ui-popup-check-bg .ui-checkbox .ui-btn{text-align:center;background:#f8f6ef;border:0rem}.ui-popup-container .center_checkbox .ui-popup-check-bg .ui-checkbox .ui-btn .ui-btn-inner{border:0rem}.ui-popup-container .center_checkbox .ui-popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_checkbox .ui-popup-button-bg .ui-btn{width:5rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_liststyle_1btn .ui-popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:11.636363636363637rem}.ui-popup-container .center_liststyle_1btn .ui-popup-button-bg{padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_liststyle_2btn .ui-popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:11.636363636363637rem}.ui-popup-container .center_liststyle_2btn .ui-popup-button-bg{padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_liststyle_2btn .ui-popup-button-bg .ui-btn{width:5rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_liststyle_2btn .ui-popup-button-bg .ui-btn .ui-btn-inner{padding-top:.2272727272727273rem;padding-bottom:.2272727272727273rem;padding-left:.9090909090909092rem;padding-right:.9090909090909092rem}.ui-popup-container .center_title_2btn .ui-popup-button-bg{padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_title_2btn .ui-popup-button-bg .ui-btn{width:5.454545454545455rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_title_2btn .ui-popup-button-bg .ui-btn .ui-btn-inner{padding-top:.2272727272727273rem;padding-bottom:.2272727272727273rem;padding-left:.9090909090909092rem;padding-right:.9090909090909092rem}.ui-popup-container .center_liststyle_3btn .ui-popup-scroller-bg{width:100%;overflow:hidden;background:#f8f6ef;height:11.636363636363637rem}.ui-popup-container .center_liststyle_3btn .ui-popup-button-bg{padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_liststyle_3btn .ui-popup-button-bg .ui-btn{max-width:3.6363636363636367rem;height:1.6818181818181819rem;margin-top:0rem;margin-bottom:0rem;margin-left:.2272727272727273rem;margin-right:.2272727272727273rem;display:inline-block}.ui-popup-container .center_progressbar{text-align:center}.ui-popup-container .center_progressbar .ui-popup-text{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;height:3.181818181818182rem}.ui-popup-container .center_progressbar .ui-popup-text p{height:100%;text-align:center;padding:1rem .7272727272727273rem 0rem .7272727272727273rem}.ui-popup-container .center_progressbar .ui-popup-text-bottom-bg{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;vertical-align:middle}.ui-popup-container .center_progressbar .ui-popup-text-bottom-bg .text-left{width:40%;height:2.1818181818181817rem;padding:0rem .7272727272727273rem 0rem .7272727272727273rem;text-align:left;display:inline-block}.ui-popup-container .center_progressbar .ui-popup-text-bottom-bg .text-right{width:40%;height:2.1818181818181817rem;padding:0rem .7272727272727273rem 0rem .7272727272727273rem;text-align:right;display:inline-block}.ui-popup-container .center_progressbar .ui-popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .center_progressbar .ui-popup-button-bg .ui-btn{width:9.136363636363637rem;height:1.6818181818181819rem;margin:auto}.ui-popup-container .center_progressbar .ui-popup-progress-bg{background:#f8f6ef;width:100%;height:100%}.ui-popup-container .centertext_progressbar{text-align:center}.ui-popup-container .centertext_progressbar .ui-popup-text{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;padding-top:1rem;padding-bottom:.7272727272727273rem}.ui-popup-container .centertext_progressbar .ui-popup-text p{text-align:center}.ui-popup-container .centertext_progressbar .ui-popup-text-bottom-bg{font-size:1.1818181818181819rem;font-color:#999;background:#f8f6ef;width:100%;vertical-align:middle}.ui-popup-container .centertext_progressbar .ui-popup-text-bottom-bg .text-left{width:40%;height:1.8181818181818183rem;padding:.7272727272727273rem .7272727272727273rem 1rem .7272727272727273rem;text-align:left;display:inline-block}.ui-popup-container .centertext_progressbar .ui-popup-text-bottom-bg .text-right{width:40%;height:1.8181818181818183rem;padding:.7272727272727273rem .7272727272727273rem 1rem .7272727272727273rem;text-align:right;display:inline-block}.ui-popup-container .centertext_progressbar .ui-popup-button-bg{font-size:1.4545454545454546rem;background:#f8f6ef;width:100%;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}.ui-popup-container .centertext_progressbar .ui-popup-button-bg .ui-btn{width:18.272727272727273rem;height:1.6818181818181819rem;margin:auto}.ui-popup-container .centertext_progressbar .ui-popup-progress-bg{background:#f8f6ef;width:100%;height:100%}.ui-text-ellipsis{white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden!important}.ui-tabbar{background:#f8f6ef;z-index:1000}.ui-tabbar a.ui-btn{background:#f8f6ef;color:#999;padding-top:.8636363636363636rem;padding-bottom:.8636363636363636rem}.ui-tabbar a.ui-btn .ui-btn-inner{padding-top:0;padding-bottom:0;border-left:2px solid;border-color:#b2b1ae;border-radius:0;-0-border-radius:0;-ms-border-radius:0;-webkit-border-radius:0}.ui-tabbar a.ui-btn .ui-icon{width:1.4545454545454546rem;height:1.4545454545454546rem;background-repeat:no-repeat;background-size:100% 100%}.ui-tabbar.ui-tabbar-persist a.ui-btn{background:#f8f6ef}.ui-tabbar.ui-tabbar-persist a.ui-state-persist,.ui-tabbar.ui-tabbar-persist a.ui-state-persist.ui-btn-active,.ui-tabbar.ui-tabbar-persist a.ui-btn-show-style{color:#3b73b6}.ui-tabbar.ui-tabbar-persist a.ui-btn-hover-s.ui-btn-down-s:not(.ui-state-persist){color:#3b73b6;background:-webkit-linear-gradient(top, #d2d2c8 0, #f6f8ef 100%)}.ui-tabbar:not(.ui-tabbar-persist) a.ui-btn{background:#f8f6ef}.ui-tabbar:not(.ui-tabbar-persist) a.ui-btn-active,.ui-tabbar:not(.ui-tabbar-persist) .ui-btn-show-style{color:#3b73b6}.ui-tabbar:not(.ui-tabbar-persist) a.ui-btn.ui-btn-hover-s.ui-btn-down-s{color:#3b73b6;background:-webkit-linear-gradient(top, #d2d2c8 0, #f6f8ef 100%)}.ui-tabbar .ui-btn-inner{font-size:.6818181818181819rem;font-weight:700}.ui-tabbar .ui-btn-inner .ui-icon{top:.4545454545454546rem;left:50%;margin-left:-.7272727272727273rem}.ui-tabbar.ui-tabbar-notext a.ui-btn{padding-top:.5rem;padding-bottom:.4545454545454546rem}.ui-tabbar.ui-tabbar-notext .ui-btn-inner{height:1.5454545454545454rem}.ui-tabbar.ui-tabbar-notext .ui-btn-inner .ui-icon{top:0}.ui-header.ui-bar-s.ui-title-tabbar .ui-title{font-size:1rem;margin-top:.36363636363636365rem;margin-bottom:0rem}.ui-header.ui-bar-s.ui-title-tabbar .ui-tabbar.ui-tabbar-noicons a.ui-btn{padding-top:.6818181818181819rem;padding-bottom:.5909090909090909rem}.ui-header.ui-bar-s.ui-title-tabbar .ui-tabbar.ui-tabbar-notext a.ui-btn{padding-top:.3181818181818182rem;padding-bottom:.2272727272727273rem}.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn{padding-top:.5rem;padding-bottom:.4545454545454546rem}.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn .ui-btn-inner{height:2.4545454545454546rem}.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn .ui-btn-inner .ui-btn-text{padding-top:0;line-height:3.8636363636363638rem}.ui-header.ui-bar-s.ui-title-tabbar-multiline .ui-tabbar a.ui-btn .ui-btn-inner .ui-icon{top:0}.ui-header.ui-bar-s li:first-child .ui-btn-inner{border-left-width:0}.ui-footer.ui-bar-s .ui-tabbar{height:2.2272727272727275rem;margin-left:auto;margin-right:auto}.ui-footer.ui-bar-s .ui-tabbar a.ui-btn{padding-top:.7272727272727273rem;padding-bottom:.7272727272727273rem}.ui-footer.ui-bar-s .ui-tabbar .ui-btn-inner .ui-icon{top:0}.ui-footer.ui-bar-s .ui-tabbar.ui-tabbar-notext a.ui-btn{padding-top:.36363636363636365rem;padding-bottom:.3181818181818182rem}.ui-footer.ui-bar-s .ui-tabbar li:first-child .ui-btn-inner{border-left-width:0}.ui-footer.ui-bar-s .ui-tabbar.ui-tabbar-margin-back{margin-right:2.5454545454545454rem}.ui-footer.ui-bar-s .ui-tabbar.ui-tabbar-margin-more{margin-left:2.5454545454545454rem}.ui-footer.ui-bar-s .ui-btn-back~.ui-tabbar li:last-child .ui-btn-inner{border-right:1px solid;border-right-color:#b2b1ae}.ui-footer.ui-bar-s [data-icon="naviframe-more"]~.ui-tabbar li:first-child .ui-btn-inner{border-left:1px solid;border-left-color:#b2b1ae}.ui-tabbar-s.ui-navbar-noicons{font-size:1rem}.ui-tabbar .tabbar-scroll-ul{margin-top:0;margin-bottom:0;padding-left:0}.ui-tabbar .tabbar-scroll-ul .tabbar-scroll-li{position:relative;display:inline-block;margin-left:-.36363636363636365rem}.ui-tabbar .tabbar-scroll-ul .tabbar-scroll-li a{width:100%}.ui-tabbar .tabbar-scroll-ul li.tabbar-scroll-li:first-child{margin-left:0}.ui-tabbar-divider{position:absolute;top:0;width:.4545454545454546rem;height:2.5rem;background:-webkit-linear-gradient(left, #00009b 0, #f6f8ef 100%)}.ui-tabbar-divider-left{left:0;border-top-right-radius:.4545454545454546rem;border-bottom-right-radius:.4545454545454546rem;background:-webkit-linear-gradient(left, #999 0, #f6f8ef 100%)}.ui-tabbar-divider-right{right:0;border-top-left-radius:.4545454545454546rem;border-bottom-left-radius:.4545454545454546rem;background:-webkit-linear-gradient(right, #999 0, #f6f8ef 100%)}.ui-splitview{margin:0;padding:0;position:relative}.ui-splitview .ui-pane{position:absolute;overflow:hidden;border:0;margin:0;padding:0}.ui-splitview .ui-pane .ui-listview{margin:0;padding:0}.ui-splitview .ui-spliter{position:absolute;z-index:100;display:block;margin:0;padding:0}.ui-splitview .ui-spliter-bar{background-color:#b3b3b3;border-color:#000;border-style:solid}.ui-splitview .ui-spliter-handle{margin:0;padding:0;cursor:move;display:block;text-align:center;cursor:pointer;position:relative;background-position:center center;background-repeat:no-repeat;background-size:100% 100%}.ui-direction-horizontal>.ui-spliter{width:60px}.ui-direction-vertical>.ui-spliter{height:60px}.ui-direction-horizontal>.ui-spliter>.ui-spliter-bar{width:13px;margin:0 0 0 25px;border-width:1px 1px 1px 0}.ui-direction-vertical>.ui-spliter>.ui-spliter-bar{height:13px;margin:25px 0 0 0;border-width:0 1px 1px 1px}.ui-spliter-active>.ui-spliter-bar{background-color:#5787c2}.ui-direction-horizontal>.ui-spliter>.ui-spliter-bar>.ui-spliter-handle{width:13px;height:26px;background-image:url(./images/00_splite_handler_v.png)}.ui-direction-vertical>.ui-spliter>.ui-spliter-bar>.ui-spliter-handle{width:26px;height:13px;background-image:url(./images/00_splite_handler_h.png)}.ui-direction-horizontal>.ui-fixed{width:0}.ui-direction-horizontal>.ui-fixed>.ui-spliter-bar{width:5px}.ui-direction-vertical>.ui-fixed{height:0}.ui-direction-vertical>.ui-fixed>.ui-spliter-bar{height:5px}.ui-fixed .ui-spliter-handle{display:none}
\ No newline at end of file
index 1d63a2d..16bfa05 100644 (file)
@@ -31,7 +31,7 @@ $$include{"head.template"}
                 <h1>Popup title</h1>
             </div>
             <div class="ui-popup-text">Pop-up dialog box, a child window that blocks user interact to the parent windows</div>
-            <a href="#" data-inlie="true" data-role="button" onclick="javascript:$('#popup').popup('close');">Close</a>
+            <a href="#" data-inline="true" data-role="button" onclick="javascript:$('#popup').popup('close');">Close</a>
         </div>
     </div><!-- /content -->
 
index 1b6beed..94f1136 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/$${WidgetID|"WidgetID"}" version="1.0.0" viewmodes="maximized">
-    <tizen:application id="$@{APPID=APPLICATIONID()}.$${WidgetID|"WidgetID"}" package="$${APPID}" required_version="1.0"/>
+    <tizen:application id="$@{APPID=APPLICATIONID()}.$${WidgetID|"WidgetID"}" package="$${APPID}" required_version="2.1"/>
     <content src="$${ContentSRC|"index.html"}"/>
 $$if{TizenWebUIFWProject}
     <tizen:privilege name="http://tizen.org/privilege/application.launch"/>
index ddddff8..c82c9c9 100644 (file)
       <img src="images/tizen_32.png" /> Application Name
     </h1>
   </header>
-  <p>This is an empty template of Tizen Web Application. Tizen will support multiple device categories:
-    <ul>
-      <li>smartphones, tablets and smart TVs
-      <li>netbooks, in-vehicle infotainment devices
-    </ul>
-  </p>
+  <p>This is an empty template of Tizen Web Application. Tizen will support multiple device categories:</p>
+  <ul>
+    <li>smartphones, tablets and smart TVs
+    <li>netbooks, in-vehicle infotainment devices
+  </ul>
   <section>
     <p>This is a basic section of a document.</p>
     <p>The following button displays a time using JavaScript.</p>
index 126b616..eed6b25 100644 (file)
@@ -27,7 +27,7 @@
                 <h1>Popup title</h1>
             </div>
             <div class="ui-popup-text">Pop-up dialog box, a child window that blocks user interact to the parent windows</div>
-            <a href="#" data-inlie="true" data-role="button" onclick="javascript:$('#popup').popup('close');">Close</a>
+            <a href="#" data-inline="true" data-role="button" onclick="javascript:$('#popup').popup('close');">Close</a>
         </div>
     </div><!-- /content -->
 
index 9829f69..481699d 100644 (file)
Binary files a/org.tizen.common.verrari/templates/jar/common-resources.jar and b/org.tizen.common.verrari/templates/jar/common-resources.jar differ
index 1c02476..9c32e21 100644 (file)
Binary files a/org.tizen.common.verrari/templates/jar/jqm-common-resources.jar and b/org.tizen.common.verrari/templates/jar/jqm-common-resources.jar differ
index 130f0b2..7334f51 100644 (file)
Binary files a/org.tizen.common.verrari/templates/jar/jqm-masterdetail.jar and b/org.tizen.common.verrari/templates/jar/jqm-masterdetail.jar differ
index 7368c8e..90783a6 100644 (file)
Binary files a/org.tizen.common.verrari/templates/jar/jqm-multipage.jar and b/org.tizen.common.verrari/templates/jar/jqm-multipage.jar differ
index 225cb63..237cafd 100644 (file)
Binary files a/org.tizen.common.verrari/templates/jar/jqm-navigation.jar and b/org.tizen.common.verrari/templates/jar/jqm-navigation.jar differ
index 2e7075d..7000e4e 100644 (file)
Binary files a/org.tizen.common.verrari/templates/jar/jqm-singlepage.jar and b/org.tizen.common.verrari/templates/jar/jqm-singlepage.jar differ
index 358c0c8..d782195 100644 (file)
Binary files a/org.tizen.common.verrari/templates/jar/tizen-basic.jar and b/org.tizen.common.verrari/templates/jar/tizen-basic.jar differ
index c71de54..45aefeb 100644 (file)
Binary files a/org.tizen.common.verrari/templates/jar/tizenwebuifw-common-resources.jar and b/org.tizen.common.verrari/templates/jar/tizenwebuifw-common-resources.jar differ
index 3ef57b9..22095fd 100644 (file)
Binary files a/org.tizen.common.verrari/templates/jar/tizenwebuifw-masterdetail.jar and b/org.tizen.common.verrari/templates/jar/tizenwebuifw-masterdetail.jar differ
index 10f090c..4664284 100644 (file)
Binary files a/org.tizen.common.verrari/templates/jar/tizenwebuifw-multipage.jar and b/org.tizen.common.verrari/templates/jar/tizenwebuifw-multipage.jar differ
index d86213b..a991829 100644 (file)
Binary files a/org.tizen.common.verrari/templates/jar/tizenwebuifw-navigation.jar and b/org.tizen.common.verrari/templates/jar/tizenwebuifw-navigation.jar differ
index cc7bbbc..6e2dca8 100644 (file)
Binary files a/org.tizen.common.verrari/templates/jar/tizenwebuifw-singlepage.jar and b/org.tizen.common.verrari/templates/jar/tizenwebuifw-singlepage.jar differ
index aab2b5a..3bc4976 100755 (executable)
@@ -1,24 +1,24 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<classpath>\r
-       <classpathentry exported="true" kind="lib" path="lib/commons-logging-1.1.1.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/commons-collections-3.2.1.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/commons-pool-1.6.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/commons-lang3-3.1.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/commons-io-2.4.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/freemarker.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/log4j-1.2.17.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.6.4.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="lib/slf4j-log4j12-1.6.4.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="test/lib/junit-4.10.jar" sourcepath="test/lib/junit-4.10-src.jar"/>\r
-       <classpathentry kind="lib" path="test/lib/asm-4.0.jar"/>\r
-       <classpathentry kind="lib" path="test/lib/asm-tree-4.0.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="test/lib/javassist-3.16.1-GA.jar"/>\r
-       <classpathentry kind="lib" path="lib/ant.jar"/>\r
-       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>\r
-       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
-       <classpathentry kind="src" path="src"/>\r
-       <classpathentry kind="src" path="test/src"/>\r
-       <classpathentry exported="true" kind="lib" path="test/lib/powermock-mockito-1.5-full.jar"/>\r
-       <classpathentry exported="true" kind="lib" path="test/lib/mockito-all-1.9.5.jar"/>\r
-       <classpathentry kind="output" path="bin"/>\r
-</classpath>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry exported="true" kind="lib" path="lib/commons-logging-1.1.1.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/commons-collections-3.2.1.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/commons-pool-1.6.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/commons-lang3-3.1.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/commons-io-2.4.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/freemarker.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/log4j-1.2.17.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.6.4.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/slf4j-log4j12-1.6.4.jar"/>
+       <classpathentry exported="true" kind="lib" path="test/lib/junit-4.10.jar" sourcepath="test/lib/junit-4.10-src.jar"/>
+       <classpathentry kind="lib" path="test/lib/asm-4.0.jar"/>
+       <classpathentry kind="lib" path="test/lib/asm-tree-4.0.jar"/>
+       <classpathentry exported="true" kind="lib" path="test/lib/javassist-3.16.1-GA.jar"/>
+       <classpathentry kind="lib" path="lib/ant.jar"/>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+       <classpathentry kind="src" path="src"/>
+       <classpathentry kind="src" path="test/src"/>
+       <classpathentry exported="true" kind="lib" path="test/lib/powermock-mockito-1.5-full.jar"/>
+       <classpathentry exported="true" kind="lib" path="test/lib/mockito-all-1.9.5.jar"/>
+       <classpathentry kind="output" path="bin"/>
+</classpath>
index 83b41dc..7c5ff76 100755 (executable)
@@ -195,6 +195,7 @@ Export-Package:
  org.tizen.common.rds.ui.preference,
  org.tizen.common.sdb.command,
  org.tizen.common.sdb.command.message,
+ org.tizen.common.sdb.command.receiver,
  org.tizen.common.ui,
  org.tizen.common.ui.dialog,
  org.tizen.common.ui.page.preference,
index c0e18c7..2124b02 100755 (executable)
@@ -19,6 +19,7 @@ bin.includes = META-INF/,\
                about.ini,\\r
                about.properties,\\r
                about.mappings,\\r
-               schema/\r
+               schema/,\\r
+               log4j.xml\r
 javacSource=1.6\r
 javacTarget=1.6\r
diff --git a/org.tizen.common/log4j.xml b/org.tizen.common/log4j.xml
new file mode 100644 (file)
index 0000000..cb484bb
--- /dev/null
@@ -0,0 +1,38 @@
+<!--
+            URL url = null;
+            if(configurationOptionStr == null)
+            {
+                url = Loader.getResource("log4j.xml");
+                if(url == null)
+                    url = Loader.getResource("log4j.properties");
+            } else
+            {
+                try
+                {
+                    url = new URL(configurationOptionStr);
+                }
+                catch(MalformedURLException ex)
+                {
+                    url = Loader.getResource(configurationOptionStr);
+                }
+            }
+            if(url != null)
+            {
+                LogLog.debug("Using URL [" + url + "] for automatic log4j configuration.");
+                try
+                {
+                    OptionConverter.selectAndConfigure(url, configuratorClassName, getLoggerRepository());
+                }
+                catch(NoClassDefFoundError e)
+                {
+                    LogLog.warn("Error during default initialization", e);
+                }
+            }
+-->
+
+<!--
+We use custom log4j appender: org.tizen.common.util.log.TizenLog4jConfigurator by adding vm argument: -Dlog4j.configuratorClass=org.tizen.common.util.log.TizenLog4jConfigurator
+Above code is initialization code of LogManager, and it executes configurator only if it has log4j configure file in the class path. 
+We need this empty log4j.xml file because configurator is not executed without log4j.xml file.
+-->
+
index 2ad69fb..c078315 100755 (executable)
@@ -45,6 +45,7 @@ import org.tizen.common.util.DialogUtil;
 import org.tizen.common.util.HostUtil;
 import org.tizen.common.util.OSChecker;
 import org.tizen.common.util.log.Logger;
+import org.tizen.common.util.log.TizenLog4jConfigurator;
 import org.tizen.sdblib.CrashReportService;
 import org.tizen.sdblib.ICrashReportServiceListener;
 import org.tizen.sdblib.SmartDevelopmentBridge;
@@ -79,6 +80,9 @@ public class CommonPlugin extends AbstractUIPlugin {
     @Override
     public void start(BundleContext context) throws Exception {
         super.start( context );
+        
+        getPreferenceStore().addPropertyChangeListener( new TizenLog4jConfigurator() );
+        
         plugin = this;
         initializeExecutor();
 
diff --git a/org.tizen.common/src/org/tizen/common/IProjectInfo.java b/org.tizen.common/src/org/tizen/common/IProjectInfo.java
new file mode 100644 (file)
index 0000000..c0e935f
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Common
+ * 
+ * Copyright (C) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: 
+ * Hyeongseok Heo <hyeongseok.heo@samsung.com>
+ * Jihoon Song <jihoon80.song@samsung.com>
+ * Kangho Kim <kh5325.kim@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ * Contributors:
+ * - S-Core Co., Ltd
+ * 
+ */
+package org.tizen.common;
+
+/**
+ * IProjectInfo Interface that is used when getting web project's information.
+ *
+ * @author Kangho Kim{@literal <kh5325.kim@samsung.com>} (S-Core)
+ * @author JIhoon Song {@literal<jihoon80.song@samsung.com>} (S-Core)
+ */
+public interface IProjectInfo {
+
+    /**
+     * Returns whether the Tizen web project or not.
+     * 
+     * @return If a project is the Tizen web project, return true.
+     */
+    public boolean isWebProject();
+    
+    /**
+     * Returns the App ID from a config.xml.
+     * 
+     * @return an App ID string. If could not get a value, return null.
+     */
+    public String getAppId();
+    
+    /**
+     * Returns the Package ID from a manifest.xml.
+     * 
+     * @return a Package ID string. If could not get a value, return null.
+     */
+    public String getPackageId();
+}
index 33a94a5..b951be3 100644 (file)
 */
 package org.tizen.common;
 
-public class TizenHelpContextIds
-{
+import org.eclipse.ui.PlatformUI;
+
+public class TizenHelpContextIds {
+
+    public static String HELP_CONTENT_BASE_URL = PlatformUI.getWorkbench().getHelpSystem().resolve("", false).toString();
+
     private static final String HELP_COMMON = "org.tizen.ide.common.";
     public static final String HELP_COMMON_CONNECTION_EXPLORER_CONTEXT = HELP_COMMON + "connection_explorer_context";
     public static final String HELP_COMMON_LOG_CONTEXT = HELP_COMMON + "log_context";
index 7f26c7b..767f202 100644 (file)
@@ -83,6 +83,15 @@ public class TizenPlatformConstants {
     public static final String PKG_TOOL_INSTALL_COMMAND;
     public static final String PKG_TOOL_RUNNING_CHECK_COMMAND;
     public static final String PKG_TOOL_TERMINATE_COMMAND;
+    public static final String PKG_TOOL_REINSTALL_COMMAND;
+    public static final String PKG_TOOL_INSTALL_PATH_COMMAND;
+    public static final String PKG_TOOL_ROAPP_CHECK_COMMAND;
+    public static final String REMOVE_FILE_COMMAND;
+    public static final String DLOGUTIL_CMD;
+    public static final String SDK_ROOT_COMMAND;
+    public static final String ROAPP_RESULT;
+    public static final String RWAPP_RESULT;
+
     
     // Definitions for RDS
     public static final String RDS_PUSH_DIRECTORY_COMMAND = "mkdir -p -m 755 \"%s\""+ TizenPlatformConstants.CMD_SUFFIX;
@@ -111,7 +120,7 @@ public class TizenPlatformConstants {
     // Definitions for others
     public static final String CODE_COVERAGE_BUILD_OPTION = "-fprofile-arcs -ftest-coverage";
     public static final String CODE_COVERAGE_LAUNCH_OPTION = " __AUL_SDK__ CODE_COVERAGE";
-    public static final String PROCESS_GET_PROCESS_ID_COMMAND = "ps -ef | grep '%s' | grep -v grep | awk '{print $2}'";
+    public static final String PROCESS_GET_PROCESS_ID_COMMAND;
     public static final String PROCESS_SIGKILL_COMMAND = "kill -9 %s";
     public static final String PKG_TOOL_RUNNUNG_CHECK_COMMAND_RUNNING= "is Running";
 
@@ -137,11 +146,22 @@ public class TizenPlatformConstants {
         PKG_TOOL_LIST_COMMAND = PKG_TOOL + " -l  | grep %s";
         PKG_TOOL_REMOVE_COMMAND = PKG_TOOL + " -q -u -t %s -n %s";
         PKG_TOOL_INSTALL_COMMAND = PKG_TOOL + " -q -i -t %s -p %s";
+        PKG_TOOL_REINSTALL_COMMAND = PKG_TOOL + " -q -r -t %s -n %s";
         PKG_TOOL_RUNNING_CHECK_COMMAND = PKG_TOOL + " -C -t %s -n %s";
         PKG_TOOL_TERMINATE_COMMAND = PKG_TOOL + " -k -t %s -n %s";
+        // Check org.tizen.sdblib.Device.PKG_TOOL_INSTALL_PATH_COMMAND constant
+        PKG_TOOL_INSTALL_PATH_COMMAND = PKG_TOOL + " -a";
+        PKG_TOOL_ROAPP_CHECK_COMMAND = "/usr/bin/pkginfo --pkg %s | grep -i Removable";
+        ROAPP_RESULT = "Removable: 0";
+        RWAPP_RESULT = "Removable: 1";
+        
+        REMOVE_FILE_COMMAND = "rm -rf %s";
 
         // Should be absolute path
         LAUNCH_CMD = "/usr/bin/launch_app %s";
+        DLOGUTIL_CMD = "/usr/bin/dlogutil %s";
+        SDK_ROOT_COMMAND = "/usr/bin/da_command";
+        PROCESS_GET_PROCESS_ID_COMMAND = SDK_ROOT_COMMAND + " process | grep '%s' | grep -v grep | awk '{print $2}'";
     }
 
     /**
index cb6f194..1d84621 100755 (executable)
@@ -45,6 +45,7 @@ final public class InstallPathConfig {
 
     private static final String DIR_PLATFORMS = "platforms";
     private static final String DIR_PLATFORMS_VER;
+    private static final String DIR_PLATFORMS_VER_NUM = "2.1";  // caution, please using number of float type
     private static final String DIR_SAMPLES = "samples";
     private static final String DIR_SNIPPETS = "snippets";
     private static final String DIR_ON_DEMAND = "on-demand";
@@ -54,6 +55,7 @@ final public class InstallPathConfig {
     private static final String DIR_LIBRARY = "library";
     private static final String DIR_SDK_DATA = "tizen-sdk-data";
     private static final String DIR_CHECKER = "checker";
+    private static final String DIR_DOCUMENTS = "documents";
 
     private final static String SDKSUFFIX = DIR_SDK_DATA + File.separatorChar + "tizensdkpath";
 
@@ -65,7 +67,7 @@ final public class InstallPathConfig {
     private static final String REG_VALUE = "REG_SZ";
 
     static {
-        DIR_PLATFORMS_VER = "tizen2.1";
+        DIR_PLATFORMS_VER = "tizen" + DIR_PLATFORMS_VER_NUM;
 
         // FIXME : don't need the following lines if using environment variable
         if (OSChecker.isWindows()) {
@@ -106,6 +108,25 @@ final public class InstallPathConfig {
         return path;
     }
 
+    // return get platform version number. this value may be float type number string, but not guaranteed.
+    public static String getPlatformVersionNum() {
+        return DIR_PLATFORMS_VER_NUM;
+    }
+
+    /*
+     * return get platform version number.<br>
+     * this value float type number, if can't convert float type then return 0. or negative then return 0.
+     */
+    public static float getPlatformVersionNumToFloat() {
+        float version = 0;
+        try {
+            version = Float.parseFloat( getPlatformVersionNum() );
+        } catch ( NumberFormatException e ) {
+            return version;
+        }
+        return version;
+    }
+
     //TODO: Should change to get string array type for various platform version paths.
     public static String getSamplesPath() {
         return getPlatformVersionPath() + File.separator + DIR_SAMPLES;
@@ -167,6 +188,10 @@ final public class InstallPathConfig {
         return getUserHomePath() + File.separator + DIR_SDK_DATA;
     }
 
+    public static String getDocumentsPath() {
+        return getSDKPath()  + File.separator + DIR_DOCUMENTS;
+    }
+
     private static void loadSdkPath(String sdkPath) {
         boolean status = true;
         if (HostUtil.exists(sdkPath)) {
@@ -216,4 +241,4 @@ final public class InstallPathConfig {
 
         return value;
     }
-}
\ No newline at end of file
+}
index 581819d..8f44b0b 100644 (file)
@@ -154,7 +154,7 @@ extends AbstractOption
                        return false;
                }
                
-               if(shortName.equals(trim(value))) {
+               if(shortName.equalsIgnoreCase(trim(value))) {
                        return true;
                }
 
index becfe43..dee3af3 100755 (executable)
@@ -385,9 +385,12 @@ extends StandardFileHandler
 
        @Override
        public void removeFile(String path) throws IOException {
+           logger.trace( "Path :{}", path );
+           
            final IResource file = getResource( path );
            
-           if ( file.getType() != IResource.FILE ) 
+           // Bug fix : check null because the getResource method can return null.
+           if ( file == null || file.getType() != IResource.FILE ) 
            {
                throw new IOException();
            }
index 5350047..c84755d 100644 (file)
@@ -36,6 +36,10 @@ public class DeltaResourceInfo {
      */
     public final static String TYPE_MODIFY = "modify";
     /**
+     * Type constant which identifies added status resources.
+     */
+    public final static String TYPE_ADD = "add";
+    /**
      * Type constant which identifies deleted status resources.
      */
     public final static String TYPE_DELETE = "delete";
index ebb02e3..272afc1 100755 (executable)
@@ -27,6 +27,7 @@ package org.tizen.common.rds;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
+import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -50,6 +51,7 @@ import org.tizen.common.util.IOUtil;
 import org.tizen.common.util.log.Logger;
 import org.tizen.sdblib.IDevice;
 import org.tizen.sdblib.SyncService;
+import org.tizen.sdblib.SyncService.SyncResult;
 
 /**
  * Delta Detector for Rapid Development Support.
@@ -78,12 +80,13 @@ public class RdsDeltaDetector {
      * Reads the <code>STR_TREE_FILE</code>, and sets the <code>oldTree</code>.
      */
     public void readOldTree() {
-        downloadOldTree();
+        String strLocalFile = downloadOldTree();
+        if ( strLocalFile == null ) {
+            return;
+        }
         Workspace workspace = ((Workspace)project.getWorkspace());
         ElementTreeReader treeReader = new ElementTreeReader(workspace.getSaveManager());
         
-        String strLocalFile = project.getLocation().toString() + "/" + STR_TREE_FILE;
-        
         DataInputStream input = null;
         try {
             input = new DataInputStream(new SafeFileInputStream(strLocalFile, strLocalFile + ".temp", TREE_BUFFER_SIZE));
@@ -124,7 +127,10 @@ public class RdsDeltaDetector {
         String deltaFileOnRemote = remotePath + STR_TREE_DIRECTORY + STR_TREE_FILE;
         strLocalFile = project.getLocation().toString() + "/" + STR_TREE_FILE;
         try {
-            device.getSyncService().pullFile(deltaFileOnRemote, strLocalFile, true, SyncService.getNullProgressMonitor());
+            SyncResult result = device.getSyncService().pullFile(deltaFileOnRemote, strLocalFile, true, SyncService.getNullProgressMonitor());
+            if ( result.getCode() != SyncService.RESULT_OK ) {
+                throw new Exception(result.getMessage());
+            }
         } catch (Exception e) {
             return null;
         }
@@ -178,12 +184,12 @@ public class RdsDeltaDetector {
         }
         for( AbstractDataTreeNode node : deltaNode.getChildren() ) {
             if ( node instanceof DeletedNode) {
-                deltaInfoList.add(new DeltaResourceInfo(node.getName(), strPath + "/" + node.getName(), DeltaResourceInfo.TYPE_DELETE));
+                addDeltaInfo(deltaInfoList, node.getName(), strPath + "/" + node.getName(), DeltaResourceInfo.TYPE_DELETE);
                 continue;
             }
             else if ( node instanceof DataDeltaNode ) {
                 if ( node.getChildren().length == 0 ) {
-                    deltaInfoList.add(new DeltaResourceInfo(node.getName(), strPath + "/" + node.getName(), DeltaResourceInfo.TYPE_MODIFY));
+                    addDeltaInfo(deltaInfoList, node.getName(), strPath + "/" + node.getName(), DeltaResourceInfo.TYPE_MODIFY);
                     continue;
                 }
                 else {
@@ -192,7 +198,7 @@ public class RdsDeltaDetector {
             }
             else if ( node instanceof DataTreeNode ) {
                 if ( node.getChildren().length == 0 ) {
-                    deltaInfoList.add(new DeltaResourceInfo(node.getName(), strPath + "/" + node.getName(), DeltaResourceInfo.TYPE_MODIFY));
+                    addDeltaInfo(deltaInfoList, node.getName(), strPath + "/" + node.getName(), DeltaResourceInfo.TYPE_ADD);
                     continue;
                 }
                 else {
@@ -207,6 +213,15 @@ public class RdsDeltaDetector {
         return deltaInfoList;
     }
     
+    private void addDeltaInfo(List<DeltaResourceInfo> deltaInfoList, String nodeName, String deltaFullPath, String deltaType) {
+        if ( new File(deltaFullPath).isDirectory() ) {
+            deltaInfoList.add(new DeltaResourceInfo(nodeName, deltaFullPath + "/", deltaType));
+        }
+        else {
+            deltaInfoList.add(new DeltaResourceInfo(nodeName, deltaFullPath, deltaType));
+        }
+    }
+    
     /**
      * Makes the <code>STR_TREE_FILE</code> file.
      * 
diff --git a/org.tizen.common/src/org/tizen/common/rds/RdsDeltaListFile.java b/org.tizen.common/src/org/tizen/common/rds/RdsDeltaListFile.java
new file mode 100644 (file)
index 0000000..2114904
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: 
+ * Kangho Kim <kh5325.kim@samsung.com>
+ * Gun Kim <gune.kim@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.common.rds;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.tizen.common.util.FileUtil;
+import org.tizen.common.util.log.Logger;
+
+
+/**
+ * This class generates delta list file for RDS.
+ * The delta list file contains information that is comprised of "add", "modify" and "delete".
+ * 
+ * @author Gun Kim<gune.kim@samsung.com>
+ */
+public class RdsDeltaListFile {
+    public static final String RDS_DELTA_LIST_FILE_NAME = ".rds_delta";
+    public static final String ADD_TITLE = "#add";
+    public static final String MODIFY_TITLE = "#modify";
+    public static final String DELETE_TITLE = "#delete";
+
+    List<String> addList = new ArrayList<String>();
+    List<String> modifyList = new ArrayList<String>();
+    List<String> deleteList = new ArrayList<String>();
+
+    public void addAddDelta(String addDelta) {
+        addList.add(addDelta);
+    }
+    public void addModifyDelta(String addDelta) {
+        modifyList.add(addDelta);
+    }
+    public void addDeleteDelta(String addDelta) {
+        deleteList.add(addDelta);
+    }
+    
+    
+    /**
+     * Makes delta list file.
+     * If addList and modifyList and deleteList are empty, This method does not make delta list file and returns null.
+     *
+     * @return the generated file, or null.
+     */
+    public File makeFile(String parentDirectory){
+        if ( addList.isEmpty() && modifyList.isEmpty() && deleteList.isEmpty() ) {
+            return null;
+        }
+        
+        StringBuilder strBuilder = new StringBuilder(RdsDeltaListFile.DELETE_TITLE + "\n");
+        for ( String delete : deleteList ) {
+            strBuilder.append(delete + "\n");
+        }
+        strBuilder.append(RdsDeltaListFile.ADD_TITLE + "\n");
+        for ( String add : addList ) {
+            strBuilder.append(add + "\n");
+        }
+        strBuilder.append(RdsDeltaListFile.MODIFY_TITLE + "\n");
+        for ( String modify : modifyList ) {
+            strBuilder.append(modify + "\n");
+        }
+        
+        File file = new File(parentDirectory + "/" + RDS_DELTA_LIST_FILE_NAME);
+        try {
+            FileUtil.writeTextFile(file, strBuilder.toString(), null);
+        } catch (IOException e) {
+            Logger.error("Cannot write delta info in " + parentDirectory + "/" + RDS_DELTA_LIST_FILE_NAME , e);
+            if ( file.exists() ) {
+                file.delete();
+            }
+            return null;
+        }
+        
+        return file;
+    }
+    
+
+}
index 9ff3654..f5a9b0b 100644 (file)
@@ -30,9 +30,7 @@ import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
@@ -43,9 +41,9 @@ import org.tizen.common.CommonPlugin;
 import org.tizen.common.TizenPlatformConstants;
 import org.tizen.common.sdb.command.SdbCommand;
 import org.tizen.common.sdb.command.message.PkgcmdErrorType;
-import org.tizen.common.ui.view.console.ConsoleManager;
+import org.tizen.common.sdb.command.receiver.PkgCmdReceiver;
+import org.tizen.common.ui.view.console.ITizenConsoleManager;
 import org.tizen.common.util.ISdbCommandHelper;
-import org.tizen.common.util.StringUtil;
 import org.tizen.common.util.log.Logger;
 import org.tizen.sdblib.IDevice;
 import org.tizen.sdblib.SyncService;
@@ -58,7 +56,7 @@ import org.tizen.sdblib.SyncService.SyncResult;
  */
 public abstract class RdsDeployer implements Closeable{
     protected IProgressMonitor monitor;
-    protected ConsoleManager console;
+    protected ITizenConsoleManager console;
     protected String pkgType;
     protected String strAppInstallPath;
     protected IProject project;
@@ -69,7 +67,7 @@ public abstract class RdsDeployer implements Closeable{
     protected List<DeltaResourceInfo> ignoreList = new ArrayList<DeltaResourceInfo>();
     protected List<DeltaResourceInfo> interestList = new ArrayList<DeltaResourceInfo>();
     private SyncService syncService;
-    private final static String[] needAppOwnerArray = new String[] {"/data", "/shared/data", "/shared/trusted", "/setting"};
+//    private final static String[] needAppOwnerArray = new String[] {"/data", "/shared/data", "/shared/trusted", "/setting"};
     // deltaInfoList should be set only once.
     private List<DeltaResourceInfo> deltaInfoList = null;
     // strDeltaInfoFile should be set when deltaInfoList is set.
@@ -82,19 +80,23 @@ public abstract class RdsDeployer implements Closeable{
      */
     protected abstract void printInfo( String message );
     /**
-     * Gets package name excluded path which is installed on target
+     * Gets package name included path which is installed on target.
      * 
      * @return String
      */
     protected abstract String getAppInstallPath();
     /**
+     * Gets package id.
+     */
+    protected abstract String getPkgId();
+    /**
      * Deploys using RDS.
      * 
      * @return boolean
      */
     public abstract boolean deploy() throws CoreException;
     
-    public RdsDeployer( IProject project, IDevice device, ISdbCommandHelper tizenCommand, ConsoleManager console, String pkgType, IProgressMonitor monitor) {
+    public RdsDeployer( IProject project, IDevice device, ISdbCommandHelper tizenCommand, ITizenConsoleManager console, String pkgType, IProgressMonitor monitor) {
         this.project = project;
         this.device = device;
         this.tizenCommand = tizenCommand;
@@ -113,116 +115,137 @@ public abstract class RdsDeployer implements Closeable{
     public void setIgnoreList( List<DeltaResourceInfo> list) {
         ignoreList = list;
     }
+    
+    private String getRemotePathOfDelta(DeltaResourceInfo interest, String strProjectPath, DeltaResourceInfo delta) {
+        String strRemotePath = "";
+        if ( interest.getRemotePath() == null ) {
+            strRemotePath = delta.getFullPath().replaceFirst(strProjectPath, "");
+        }
+        else {
+            File file = new File(delta.getFullPath());
+            String interestRemotePath = "";
+            String interestFullPath = "";
+            if ( isDirectory(interest.getFullPath()) ) {
+                if ( file.exists() ) {
+                    interestFullPath = interest.getFullPath();
+                    interestRemotePath = interest.getRemotePath();
+                }
+                else {
+                    interestFullPath = interest.getFullPath().substring(0,interest.getFullPath().length()-1 );
+                    interestRemotePath = interest.getRemotePath().substring(0,interest.getRemotePath().length()-1 );
+                }
+            }
+            else {
+                interestFullPath = interest.getFullPath();
+                interestRemotePath = interest.getRemotePath();
+            }
+            strRemotePath = delta.getFullPath().replaceFirst(strProjectPath + interestFullPath, interestRemotePath);
+        }
+        return strRemotePath.replaceFirst("/", "");
+    }
+    
+    private DeltaResourceInfo containsNode(DeltaResourceInfo node, List<DeltaResourceInfo> nodeList, String prefix) {
+        File file = new File(node.getFullPath());
+        for ( DeltaResourceInfo tempNode : nodeList ) {
+            // directory
+            if ( isDirectory(tempNode.getFullPath()) ) {
+                if ( file.exists() ) {
+                    if ( (node.getFullPath()).startsWith(prefix + tempNode.getFullPath()) ) {
+                        return tempNode;
+                    }
+                }
+                else {
+                    if ( (node.getFullPath() + "/").startsWith(prefix + tempNode.getFullPath()) ) {
+                        return tempNode;
+                    }
+                }
+            }
+            // file
+            else {
+                if ( node.getFullPath().equals( prefix + tempNode.getFullPath()) ) {
+                    return tempNode;
+                }
+            }
+        }
+        return null;
+    }
+    
+    protected boolean isDirectory(String path) {
+        return path.endsWith("/");
+    }
 
     protected void partialInstall( List<DeltaResourceInfo> deltaInfoList ) throws CoreException {
-        boolean isNeededInstall = false;
         String strProjectPath = project.getLocation().toString();
         String strRemotePath = null;
+        String strRemoteAbsolutePath = null;
         String command = null;
-        boolean isInteresting = false;
-        boolean isIgnore = false;
-        Set<String> needAppOwnerSet = new HashSet<String>();
-        
+        DeltaResourceInfo interestNode = null;
+        RdsDeltaListFile deltaListFile = new RdsDeltaListFile();
+        String type = null;
+
         for ( DeltaResourceInfo node : deltaInfoList ) {
-            isInteresting = false;
-            isIgnore = false;
+            interestNode = null;
             
-            for ( DeltaResourceInfo ignore : ignoreList ) {
-                if ( node.getFullPath().startsWith(strProjectPath + ignore.getFullPath()) ) {
-                    isIgnore = true;
-                    break;
-                }
-            }
-            if ( isIgnore ) {
+            if ( containsNode(node, ignoreList, strProjectPath) != null ) {
                 continue;
             }
             
-            for ( DeltaResourceInfo interest : interestList ) {
-                if ( node.getFullPath().startsWith(strProjectPath + interest.getFullPath()) ) {
-                    isInteresting = true;
-                    if ( interest.getRemotePath() == null ) {
-                        strRemotePath = strAppInstallPath + node.getFullPath().replaceFirst(strProjectPath, "");
-                    }
-                    else {
-                        strRemotePath = strAppInstallPath + node.getFullPath().replaceFirst(strProjectPath + interest.getFullPath(), interest.getRemotePath());
-                    }
-                    
-                    if ( DeltaResourceInfo.TYPE_INSTALL.equals(interest.getType()) ) {
-                        isNeededInstall = true;
-                    }
-                    break;
-                }
-            }
-            if ( !isInteresting ) {
+            interestNode = containsNode(node, interestList, strProjectPath);
+            if ( interestNode == null ) {
                 continue;
             }
+            strRemotePath = getRemotePathOfDelta(interestNode, strProjectPath, node);
+            strRemoteAbsolutePath = strAppInstallPath + "/" + strRemotePath;
             
-            if ( DeltaResourceInfo.TYPE_MODIFY.equals(node.getType()) ) {
+            type = node.getType();
+            if ( DeltaResourceInfo.TYPE_MODIFY.equals(type) || DeltaResourceInfo.TYPE_ADD.equals(type) ) {
                 try {
-                    command = RdsDeployer.makeRdsLog(NLS.bind(RdsMessages.RDS_PUSH_LOG, node.getFullPath(), strRemotePath));
+                    command = RdsDeployer.makeRdsLog(NLS.bind(RdsMessages.RDS_PUSH_LOG, node.getFullPath(), strRemoteAbsolutePath));
                     if ( new File(node.getFullPath()).isDirectory() ) {
-                        tizenCommand.runCommand( String.format(TizenPlatformConstants.RDS_PUSH_DIRECTORY_COMMAND, strRemotePath), true, TizenPlatformConstants.CMD_SUCCESS);
+                        tizenCommand.runCommand( String.format(TizenPlatformConstants.RDS_PUSH_DIRECTORY_COMMAND, strRemoteAbsolutePath), true, TizenPlatformConstants.CMD_SUCCESS);
                     }
                     else {
-                        SyncResult result = getSyncService().pushFile(node.getFullPath(), strRemotePath, SyncService.getNullProgressMonitor());
+                        SyncResult result = getSyncService().pushFile(node.getFullPath(), strRemoteAbsolutePath, SyncService.getNullProgressMonitor());
                         if ( result.getCode() != SyncService.RESULT_OK ) {
                             throw new IOException(command);
                         }
                     }
                     printInfo( command );
-                    
-                    // TODO: The code is removed, if 'pkgcmd' is used to change owner.
-                    for ( String needAppOwnerPath : needAppOwnerArray) {
-                        String needAppOwnerFullPath = strAppInstallPath + needAppOwnerPath;
-                        if ( strRemotePath.startsWith( needAppOwnerFullPath ) ) {
-                            needAppOwnerSet.add(needAppOwnerFullPath);
-                            break;
-                        }
+                    if ( DeltaResourceInfo.TYPE_MODIFY.equals(type) ) {
+                        deltaListFile.addModifyDelta(strRemotePath);
+                    }
+                    else if ( DeltaResourceInfo.TYPE_ADD.equals(type) ){
+                        deltaListFile.addAddDelta(strRemotePath);
                     }
                 } catch (Exception e) {
                     newCoreException(RdsDeployer.makeRdsLog(RdsMessages.RDS_PUSH_ERROR), e);
                 }
             }
-            else if ( DeltaResourceInfo.TYPE_DELETE.equals(node.getType()) ) {
-                try {
-                    command = "rm -rf " + addQuotes(strRemotePath) + TizenPlatformConstants.CMD_SUFFIX;
-                    tizenCommand.runCommand(command, true, null);
-                } catch (Exception e) {
-                    newCoreException(RdsDeployer.makeRdsLog(RdsMessages.RDS_DELETE_ERROR), e);
-                }
+            else if ( DeltaResourceInfo.TYPE_DELETE.equals(type) ) {
+                deltaListFile.addDeleteDelta(strRemotePath);
             }
         }
         
-        // TODO: It should be replaced to 'pkgcmd'
-        for ( String needAppOwnerPath : needAppOwnerSet ) {
+        File file = deltaListFile.makeFile(strProjectPath);
+        if ( file != null ) {
             try {
-                tizenCommand.runCommand( String.format(TizenPlatformConstants.RDS_CHANGE_OWNER_COMMAND, needAppOwnerPath) , true, TizenPlatformConstants.CMD_SUCCESS);
+                pushFile(file.getCanonicalPath(), strAppInstallPath + "/" + file.getName());
+                command = RdsDeployer.makeRdsLog(NLS.bind(RdsMessages.RDS_PUSH_LOG, file.getCanonicalPath(), strAppInstallPath + "/" + file.getName()));
+                printInfo( command );
             } catch (Exception e) {
                 newCoreException(RdsDeployer.makeRdsLog(RdsMessages.RDS_PUSH_ERROR), e);
             }
-        }
-        
-        if ( isNeededInstall ) {
             postInstall();
         }
     }
     
     public List<DeltaResourceInfo> getInterestDelta( List<DeltaResourceInfo> deltaInfoList ) {
         List<DeltaResourceInfo> delta = new ArrayList<DeltaResourceInfo>();
-        boolean isIgnore = false;
         String strProjectPath = project.getLocation().toString();
         String strRemotePath = "";
         
         for ( DeltaResourceInfo node : deltaInfoList ) {
-            isIgnore = false;
-            
-            for ( DeltaResourceInfo ignore : ignoreList ) {
-                if ( node.getFullPath().startsWith(strProjectPath + ignore.getFullPath()) ) {
-                    isIgnore = true;
-                    break;
-                }
-            }
-            if ( isIgnore ) {
+            if ( containsNode(node, ignoreList, strProjectPath) != null ) {
                 continue;
             }
             
@@ -234,7 +257,7 @@ public abstract class RdsDeployer implements Closeable{
                     else {
                         strRemotePath = node.getFullPath().replaceFirst(strProjectPath + interest.getFullPath(), interest.getRemotePath());
                     }
-                    delta.add(new DeltaResourceInfo(node.getFullPath(), new String(strRemotePath) ));
+                    delta.add(new DeltaResourceInfo( node.getName(), node.getFullPath(), strRemotePath, node.getType() ));
                     break;
                 }
             }
@@ -249,7 +272,7 @@ public abstract class RdsDeployer implements Closeable{
     }
 
     public List<DeltaResourceInfo> getDelta() {
-        if ( deltaInfoList == null)  {
+        if ( deltaInfoList == null) {
             deltaInfoList = deltaDetector.getDelta(null, null);
             strDeltaInfoFile = deltaDetector.makeDeltaFile(null,null);
         }
@@ -262,11 +285,15 @@ public abstract class RdsDeployer implements Closeable{
     }
     
     protected void postInstall() throws CoreException {
-        SdbCommand sdbCommand = new SdbCommand(device, console);
+        SdbCommand sdbCommand = new SdbCommand(device, console, new PkgCmdReceiver(console));
 
         try {
-            String installCommand = String.format(TizenPlatformConstants.PKG_TOOL_INSTALL_COMMAND, pkgType.toLowerCase(), strAppInstallPath);
-            sdbCommand.runCommand(installCommand, new PkgcmdErrorType());
+            String installCommand = String.format(TizenPlatformConstants.PKG_TOOL_REINSTALL_COMMAND, pkgType.toLowerCase(), getPkgId());
+            //String installCommand = String.format("osp-installer -r %s",  getPkgId());
+            // TODO: Timeout is temporary.
+            // If "pkgcmd -r" is normal operation, timeout should be removed.
+            sdbCommand.runCommand(installCommand, new PkgcmdErrorType(), 20000);
+            sdbCommand.runCommand( String.format(TizenPlatformConstants.REMOVE_FILE_COMMAND, strAppInstallPath));
         } catch (Exception e) {
             newCoreException(RdsDeployer.makeRdsLog(RdsMessages.CANNOT_INSTALL), e);
         }
@@ -282,26 +309,28 @@ public abstract class RdsDeployer implements Closeable{
     
     public void pushResInfoFile() {
         String appInstallPath = getAppInstallPath();
-        
         getDelta();
-
+        
         String strRemotePath = appInstallPath + RdsDeltaDetector.STR_TREE_DIRECTORY + RdsDeltaDetector.STR_TREE_FILE;
         
         try {
-            getSyncService().pushFile(strDeltaInfoFile, strRemotePath, SyncService.getNullProgressMonitor());
+            pushFile(strDeltaInfoFile, strRemotePath);
         } catch (Exception e) {
             Logger.error(RdsDeployer.makeRdsLog(RdsMessages.RDS_RES_INFO_PUSH_ERROR), e);
         }
     }
     
-    private String addQuotes(String orig) {
-        return "\"" + orig + "\"";
-    }
-    
     public static String makeRdsLog( String log ) {
         return RdsMessages.RDS_MODE_PREFIX + " " + log;
     }
     
+    private void pushFile(String source, String dest) throws Exception {
+        SyncResult result = getSyncService().pushFile(source, dest, SyncService.getNullProgressMonitor());
+        if ( result.getCode() != SyncService.RESULT_OK ) {
+            throw new Exception(result.getMessage());
+        }
+    }
+    
     /**
      * Creates a new exception.
      *
index 95f7ee6..de49c50 100644 (file)
@@ -40,6 +40,7 @@ public class RdsMessages {
     public static String RDS_RES_INFO_PUSH_ERROR;
     public static String CANNOT_FIND_RDS_INFO;
     public static String CANNOT_FIND_DELTA;
+    public static String CANNOT_PARTIALLY_INSTALL;
     public static String RDS_MODE_DISABLE;
     public static String RDS_MODE_ENABLE;
     public static String RDS_MODE_CONSOLE_TITLE;
index b24b7a2..7a95964 100644 (file)
@@ -5,6 +5,7 @@ CANNOT_INSTALL = Cannot install application.
 RDS_RES_INFO_PUSH_ERROR=Failed to upload resource information for RDS.
 CANNOT_FIND_RDS_INFO=Cannot find information of the latest launch.
 CANNOT_FIND_DELTA=Cannot find information of delta.
+CANNOT_PARTIALLY_INSTALL=Cannot partially upload or reinstall.
 RDS_MODE_DISABLE=RDS mode is disabled.
 RDS_MODE_ENABLE=RDS mode is enabled.
 RDS_MODE_CONSOLE_TITLE=, RDS Mode
index 34d1272..9ec84d7 100644 (file)
@@ -38,9 +38,10 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.tizen.common.CommonPlugin;
 import org.tizen.common.ui.page.preference.Messages;
-import org.tizen.common.util.log.Logger;
 
 
 /**
@@ -49,6 +50,8 @@ import org.tizen.common.util.log.Logger;
  * @author Gun Kim<gune.kim@samsung.com>
  */
 public class RdsPreferencePage extends PropertyAndPreferencePage implements IWorkbenchPreferencePage {
+    private static Logger logger = LoggerFactory.getLogger(RdsPreferencePage.class);
+    
     public static final String RDS_OPTION_ID = "org.tizen.common.option.rds";
     public static final String RDS_PREFERENCE_PAGE_ID = "org.tizen.common.preferences.rds";
     public static final String RDS_PROPERTIES_PAGE_ID = "org.tizen.common.properties.rds";
@@ -144,7 +147,7 @@ public class RdsPreferencePage extends PropertyAndPreferencePage implements IWor
                     project.setPersistentProperty(RDS_PROPERTIES_RDS_OPTION_NAME, OPTION_DISABLE);
                 }
             } catch (CoreException e) {
-                Logger.error(Messages.RDS_OPTION_SAVE_FAIL, e);
+                logger.error(Messages.RDS_OPTION_SAVE_FAIL, e);
             }
         }
         else {
@@ -194,26 +197,30 @@ public class RdsPreferencePage extends PropertyAndPreferencePage implements IWor
         String rdsOption = OPTION_DISABLE;
 
         // TODO: ad-hoc code. If the project referencing other projects, RDS is disabled.
-        try {
-            IProject[] refPrjs = project.getReferencedProjects();
-            if (refPrjs.length != 0 ) {
-                return false;
+        if ( project != null ) {
+            try {
+                IProject[] refPrjs = project.getReferencedProjects();
+                if (refPrjs.length != 0 ) {
+                    return false;
+                }
+            } catch (CoreException e) {
+                logger.error("Failed to read the referenced project list.", e);
             }
-        } catch (CoreException e) {
-            Logger.error("Failed to read the referenced project list.", e);
         }
 
         
-        try {
-            projectSpecificOption = project.getPersistentProperty(RDS_PROPERTIES_SPECIFIC_OPTION_NAME);
-        } catch (CoreException e) {
-            Logger.error("Failed to read project specific option.", e);
+        if ( project != null ) {
+            try {
+                projectSpecificOption = project.getPersistentProperty(RDS_PROPERTIES_SPECIFIC_OPTION_NAME);
+            } catch (CoreException e) {
+                logger.error("Failed to read project specific option.", e);
+            }
         }
         if ( OPTION_ENABLE.equals(projectSpecificOption)) {
             try {
                 rdsOption = project.getPersistentProperty(RDS_PROPERTIES_RDS_OPTION_NAME);
             } catch (CoreException e) {
-                Logger.error("Failed to read RDS option.", e);
+                logger.error("Failed to read RDS option.", e);
             }
             
             return OPTION_ENABLE.equals(rdsOption);
@@ -232,13 +239,13 @@ public class RdsPreferencePage extends PropertyAndPreferencePage implements IWor
         try {
             projectSpecificOption = project.getPersistentProperty(RDS_PROPERTIES_SPECIFIC_OPTION_NAME);
         } catch (CoreException e) {
-            Logger.error("Failed to read project specific option.", e);
+            logger.error("Failed to read project specific option.", e);
         }
         if ( OPTION_ENABLE.equals(projectSpecificOption)) {
             try {
                 rdsOption = project.getPersistentProperty(RDS_PROPERTIES_RDS_OPTION_NAME);
             } catch (CoreException e) {
-                Logger.error("Failed to read RDS option.", e);
+                logger.error("Failed to read RDS option.", e);
             }
             
             return OPTION_ENABLE.equals(rdsOption);
index f4e9111..f5239c3 100644 (file)
 
 package org.tizen.common.sdb.command;
 
-import java.io.File;
 import java.io.IOException;
 
 import org.tizen.common.TizenPlatformConstants;
 import org.tizen.common.sdb.command.message.CommandErrorException;
 import org.tizen.common.sdb.command.message.CommandErrorType;
-import org.tizen.common.ui.view.console.ConsoleManager;
+import org.tizen.common.sdb.command.receiver.CommandOutputReceiver;
+import org.tizen.common.ui.view.console.ITizenConsoleManager;
 import org.tizen.common.util.StringUtil;
 import org.tizen.sdblib.IDevice;
-import org.tizen.sdblib.MultiLineReceiver;
 import org.tizen.sdblib.SdbCommandRejectedException;
 import org.tizen.sdblib.ShellCommandUnresponsiveException;
 import org.tizen.sdblib.TimeoutException;
@@ -44,44 +43,49 @@ import org.tizen.sdblib.TimeoutException;
 public class SdbCommand {
     public static final int DEFAULT_TIMEOUT = 60000;
     private IDevice device = null;
-    private ConsoleManager console = null;
+    private ITizenConsoleManager console = null;
     private String endLine = "";
     private String commandOutput = "";
+    private CommandOutputReceiver receiver = null;
     
     public SdbCommand(IDevice device) {
         this(device, null);
     }
     
-    public SdbCommand(IDevice device, ConsoleManager console) {
+    public SdbCommand(IDevice device, ITizenConsoleManager console) {
+        this(device, console, new CommandOutputReceiver(console));
+    }
+    
+    public SdbCommand(IDevice device, ITizenConsoleManager console, CommandOutputReceiver receiver) {
         this.device = device;
         this.console = console;
+        this.receiver = receiver;
     }
     
     public void runCommand(String command ) throws Exception {
         if (console != null) {
             console.println("$ " + command);
         }
-        
-        CommandOuputReceiver receiver = new CommandOuputReceiver();
-        
+
         device.executeShellCommand(command, receiver);
-        
+
         this.endLine = receiver.getEndLine();
         this.commandOutput = receiver.getCommandOutput();
     }
-    
+
     public CommandErrorType runCommand(String command, CommandErrorType messages ) throws CommandErrorException, TimeoutException, SdbCommandRejectedException, ShellCommandUnresponsiveException, IOException {
         return runCommand(command, messages, DEFAULT_TIMEOUT);
     }
-    
+
     public CommandErrorType runCommand(String command, CommandErrorType errorMessages, int timeout ) throws CommandErrorException, TimeoutException, SdbCommandRejectedException, ShellCommandUnresponsiveException, IOException{
         if (console != null) {
             console.println("$ " + command);
         }
-        
-        CommandOuputReceiver receiver = new CommandOuputReceiver();
-        device.executeShellCommand( makeCommandWithExitcode(command), receiver, timeout);
 
+        device.executeShellCommand( makeCommandWithExitcode(command), receiver, timeout);
+        this.endLine = receiver.getEndLine();
+        this.commandOutput = receiver.getCommandOutput();
+        
         String endLine = receiver.getEndLine();
         int exitcode = parseExitcode(endLine);
 
@@ -100,6 +104,16 @@ public class SdbCommand {
         return commandOutput;
     }
     
+    public String[] getResultLineStrings() {
+        String strs = commandOutput.toString();
+        if ( StringUtil.isEmpty(strs) ) {
+            return new String[0];
+        }
+        String [] str = StringUtil.split( strs, System.getProperty("line.separator") );
+        
+        return str;
+    }
+    
     private int parseExitcode(String line) {
         int exitcode = -1;
         if ( line.startsWith(TizenPlatformConstants.CMD_RESULT_PREFIX) ) {
@@ -111,34 +125,4 @@ public class SdbCommand {
     private String makeCommandWithExitcode(String command) {
         return command + TizenPlatformConstants.CMD_SUFFIX;
     }
-
-    private final class CommandOuputReceiver extends MultiLineReceiver {
-        private StringBuilder commandOutput = new StringBuilder(256);
-        private String endLine = null;
-
-        public CommandOuputReceiver() {
-            super();
-            setTrimLine(false);
-        }
-
-        @Override
-        public void processNewLines(String[] lines) {
-            for( String line: lines ) {
-                if (console != null) {
-                    console.println(line);
-                }
-                commandOutput.append(line);
-                commandOutput.append(File.separatorChar);
-            }
-            endLine = lines[lines.length - 1];
-        }
-
-        public String getCommandOutput() {
-            return commandOutput.toString();
-        }
-
-        public String getEndLine() {
-            return endLine;
-        }
-    }
 }
index da8f46b..74591d0 100644 (file)
@@ -51,10 +51,23 @@ public class PkgcmdErrorMessages {
     public static String ERROR_CERTIFICATE_CHAIN_VERIFICATION_FAILED;
     public static String ERROR_CERTIFICATE_EXPIRED;
     public static String ERROR_INVALID_PRIVILEGE;
+    public static String ERROR_PRIVILEGE_LEVEL_VIOLATION;
     public static String ERROR_MENU_ICON_NOT_FOUND;
     public static String ERROR_FATAL_ERROR;
     public static String ERROR_OUT_OF_STORAGE;
     public static String ERROR_OUT_OF_MEMORY;
+    public static String ERROR_ARGUMENT_INVALID;
+
+    //web app error messages.
+    public static String ERROR_WEB_PACKAGE_ALREADY_INSTALLED;
+    public static String ERROR_WEB_ACE_CHECK_FAILED;
+    public static String ERROR_WEB_MANIFEST_CREATE_FAILED;
+    public static String ERROR_WEB_ENCRYPTION_FAILED;
+    public static String ERROR_WEB_INSTALL_OSP_SERVICE;
+    public static String ERROR_WEB_NOT_DEVELOPER_MODE;
+    public static String ERROR_WEB_UNINSTALLATION_FAILED;
+    public static String ERROR_WEB_PLUGIN_INSTALLATION_FAILED;
+    
     public static String ERROR_UNKNOWN;
     
 }
index 264d1cb..d643508 100644 (file)
@@ -2,7 +2,7 @@ MESSAGE_FORMAT=\nError code: %s\nError message: %s\nCommand: %s\nManagement: %s\
 
 ERROR_PACKAGE_NOT_FOUND=Check package components in Project Explorer.
 ERROR_PACKAGE_INVALID=Check package components in Project Explorer.
-ERROR_PACKAGE_LOWER_VARSION=RDS does not support installation for the lower version. If you want to install the lower version, please turn off RDS.
+ERROR_PACKAGE_LOWER_VARSION=RDS and Update Mode do not support installation for the lower version. If you want to install the lower version, please turn off RDS and Update Mode.
 ERROR_PACKAGE_EXECUTABLE_NOT_FOUND=Check "Right Click" in Project Explorer > Build Configurations.
 ERROR_MANIFEST_NOT_FOUND=Check manifest.xml in Project Explorer.
 ERROR_MANIFEST_INVALID=Check manifest.xml in manifest editor.
@@ -13,11 +13,25 @@ ERROR_SIGNATURE_INVALID=Check author certificates in Preferences > Tizen SDK > S
 ERROR_SIGNATURE_VERIFICATION_FAILED=Check whether the package is modified illegally.
 ERROR_ROOT_CERTIFICATE_NOT_FOUND=Insert root certificate into device or emulator.
 ERROR_CERTIFICATE_INVALID=Check author certificates in Preferences > Tizen SDK > Secure Profiles > Profile items.
-ERROR_CERTIFICATE_CHAIN_VERIFICATION_FAILED=Check author certificates in Preferences > Tizen SDK > Secure Profiles > Profile items.
+ERROR_CERTIFICATE_CHAIN_VERIFICATION_FAILED=Check whether your device`s date and time is current. If the time is wrong, certificate expiration will be happened.\n\
+ Check author certificates in Preferences > Tizen SDK > Secure Profiles > Profile items.
 ERROR_CERTIFICATE_EXPIRED=Check the system time in device or emulator.
 ERROR_INVALID_PRIVILEGE=Check privilege strings in manifest editor > Privileges > Privileges.
+ERROR_PRIVILEGE_LEVEL_VIOLATION=Refer to Help contents > Getting Started with Tizen > Overview > Privilege.
 ERROR_MENU_ICON_NOT_FOUND=Select a menu icon in manifest editor > Basic tab > Icon > MainMenu.
 ERROR_FATAL_ERROR=Installation or uninstallation is not working temporarily.
 ERROR_OUT_OF_STORAGE=Guarantee storage for installation in device or emulator.
 ERROR_OUT_OF_MEMORY=Restart device or emulator.
-ERROR_UNKNOWN=\nUnknown error\n\nSee the error log for more details.
\ No newline at end of file
+ERROR_ARGUMENT_INVALID=Check the parameters of pkgcmd command.
+
+# web app error messages
+ERROR_WEB_PACKAGE_ALREADY_INSTALLED=If you want to reinstall, please uninstall the application in target.
+ERROR_WEB_ACE_CHECK_FAILED=Check privilege values in "config.xml".
+ERROR_WEB_MANIFEST_CREATE_FAILED=Check config.xml in Project Explorer.
+ERROR_WEB_ENCRYPTION_FAILED=Check the encryption option.
+ERROR_WEB_INSTALL_OSP_SERVICE=Check the service application in Project Explorer.
+ERROR_WEB_NOT_DEVELOPER_MODE=You don't have permission to access.
+ERROR_WEB_UNINSTALLATION_FAILED=Check the application's ID what you want to uninstall.
+ERROR_WEB_PLUGIN_INSTALLATION_FAILED=Web runtime initialization is failed(plugins installation).
+
+ERROR_UNKNOWN=\nUnknown error\n\nSee the error log for more details.
index 4238a25..9b9eeea 100644 (file)
@@ -99,13 +99,13 @@ public class PkgcmdErrorType implements CommandErrorType {
     
     private String parseErrorMessage( ) {
         int startIdx = commandOutput.indexOf(ERROR_MESSAGE_TEMPLATE);
-        int endIdx = commandOutput.indexOf("\n", startIdx);
+        int endIdx = commandOutput.indexOf(System.getProperty("line.separator"), startIdx);
         
         if ( startIdx == -1 || endIdx == -1) {
             return "";
         }
         else {
-            return commandOutput.substring(startIdx, endIdx);
+            return commandOutput.substring(startIdx + ERROR_MESSAGE_TEMPLATE.length(), endIdx);
         }
     }
     
@@ -127,10 +127,22 @@ public class PkgcmdErrorType implements CommandErrorType {
         CERTIFICATE_CHAIN_VERIFICATION_FAILED(33, PkgcmdErrorMessages.ERROR_CERTIFICATE_CHAIN_VERIFICATION_FAILED),
         CERTIFICATE_EXPIRED(34, PkgcmdErrorMessages.ERROR_CERTIFICATE_EXPIRED),
         INVALID_PRIVILEGE(41, PkgcmdErrorMessages.ERROR_INVALID_PRIVILEGE),
+        PRIVILEGE_LEVEL_VIOLATION(42, PkgcmdErrorMessages.ERROR_PRIVILEGE_LEVEL_VIOLATION),
         MENU_ICON_NOT_FOUND(51, PkgcmdErrorMessages.ERROR_MENU_ICON_NOT_FOUND),
         FATAL_ERROR(61, PkgcmdErrorMessages.ERROR_FATAL_ERROR),
         OUT_OF_STORAGE(62, PkgcmdErrorMessages.ERROR_OUT_OF_STORAGE),
-        OUT_OF_MEMORY(63, PkgcmdErrorMessages.ERROR_OUT_OF_MEMORY);
+        OUT_OF_MEMORY(63, PkgcmdErrorMessages.ERROR_OUT_OF_MEMORY),
+        ARGUMENT_INVALID(64, PkgcmdErrorMessages.ERROR_ARGUMENT_INVALID),
+        
+        //web app error messages.
+        WEB_PACKAGE_ALREADY_INSTALLED(121, PkgcmdErrorMessages.ERROR_WEB_PACKAGE_ALREADY_INSTALLED),
+        WEB_ACE_CHECK_FAILED(122, PkgcmdErrorMessages.ERROR_WEB_ACE_CHECK_FAILED),
+        WEB_MANIFEST_CREATE_FAILED(123, PkgcmdErrorMessages.ERROR_WEB_MANIFEST_CREATE_FAILED),
+        WEB_ENCRYPTION_FAILED(124, PkgcmdErrorMessages.ERROR_WEB_ENCRYPTION_FAILED),
+        WEB_INSTALL_OSP_SERVICE(125, PkgcmdErrorMessages.ERROR_WEB_INSTALL_OSP_SERVICE),
+        WEB_NOT_DEVELOPER_MODE(126, PkgcmdErrorMessages.ERROR_WEB_NOT_DEVELOPER_MODE),
+        WEB_UNINSTALLATION_FAILED(127, PkgcmdErrorMessages.ERROR_WEB_UNINSTALLATION_FAILED),
+        WEB_PLUGIN_INSTALLATION_FAILED(128, PkgcmdErrorMessages.ERROR_WEB_PLUGIN_INSTALLATION_FAILED);
 
         private int exitCode;
         private String management;
diff --git a/org.tizen.common/src/org/tizen/common/sdb/command/receiver/CommandOutputReceiver.java b/org.tizen.common/src/org/tizen/common/sdb/command/receiver/CommandOutputReceiver.java
new file mode 100644 (file)
index 0000000..2a69627
--- /dev/null
@@ -0,0 +1,38 @@
+package org.tizen.common.sdb.command.receiver;
+
+import java.io.File;
+
+import org.tizen.common.ui.view.console.ITizenConsoleManager;
+import org.tizen.sdblib.MultiLineReceiver;
+
+public class CommandOutputReceiver extends MultiLineReceiver {
+    protected StringBuilder commandOutput = new StringBuilder(256);
+    protected String endLine = null;
+    protected ITizenConsoleManager console = null;
+
+    public CommandOutputReceiver(ITizenConsoleManager console) {
+        super();
+        setTrimLine(false);
+        this.console = console;
+    }
+
+    @Override
+    public void processNewLines(String[] lines) {
+        for( String line: lines ) {
+            if (console != null) {
+                console.println(line);
+            }
+            commandOutput.append(line);
+            commandOutput.append(System.getProperty("line.separator"));
+        }
+        endLine = lines[lines.length - 1];
+    }
+
+    public String getCommandOutput() {
+        return commandOutput.toString();
+    }
+
+    public String getEndLine() {
+        return endLine;
+    }
+}
diff --git a/org.tizen.common/src/org/tizen/common/sdb/command/receiver/PkgCmdReceiver.java b/org.tizen.common/src/org/tizen/common/sdb/command/receiver/PkgCmdReceiver.java
new file mode 100644 (file)
index 0000000..4ace140
--- /dev/null
@@ -0,0 +1,97 @@
+package org.tizen.common.sdb.command.receiver;
+
+import java.io.File;
+
+import org.tizen.common.ui.view.console.ITizenConsoleManager;
+import org.tizen.common.util.StringUtil;
+
+public class PkgCmdReceiver extends CommandOutputReceiver {
+    private String PKGCMD_CB_KEY_ABOUT_KEY = "key";
+    private String PKGCMD_CB_KEY_ABOUT_VALUE = "val";
+    private String oldOutput = "";
+
+    private static String RETURN_CB_PREFIX = "__return_cb";
+    private static String RETURN_CB_START = "start";
+    private static String RETURN_CB_END = "end";
+    private static String RETURN_CB_INSTALL_PERCENT = "install_percent";
+    private static String RETURN_CB_UNINSTALL_PERCENT = "uninstall_percent";
+    private static String OUTPUT_INSTALL_START = "installing...";
+    private static String OUTPUT_UNINSTALL_START = "uninstalling...";
+    private static String OUTPUT_ING = ".";
+    
+
+    public PkgCmdReceiver(ITizenConsoleManager console) {
+        super(console);
+    }
+
+    @Override
+    public void processNewLines(String[] lines) {
+        for( String line: lines ) {
+            String output = getMeaningfulOutput(line, oldOutput);
+            if (console != null 
+                    && output != null
+                    && !output.isEmpty()) {
+                console.print(output);
+                oldOutput=output;
+            }
+            
+            commandOutput.append(line);
+            commandOutput.append(System.getProperty("line.separator"));
+        }
+        endLine = lines[lines.length - 1];
+    }
+
+    private String getMeaningfulOutput(String output, String lastMeaningfulOutput) {
+        String meaningfulOutput = null;
+        String[] elements = StringUtil.split(output, " ");
+
+        if (output.startsWith(RETURN_CB_PREFIX)) {
+            String key = getValue(elements, PKGCMD_CB_KEY_ABOUT_KEY);
+            String value = getValue(elements, PKGCMD_CB_KEY_ABOUT_VALUE);
+
+            if (RETURN_CB_START.equals(key)) {
+                meaningfulOutput = key + " process ("
+                        + getValue(elements, PKGCMD_CB_KEY_ABOUT_VALUE)
+                        + ")\n";
+            } else if (RETURN_CB_END.equals(key)) {
+                meaningfulOutput = "\n" + key + " process ("
+                             + getValue(elements, PKGCMD_CB_KEY_ABOUT_VALUE)
+                             + ")\n";
+            } else if(RETURN_CB_INSTALL_PERCENT.equals(key)) {
+                if (lastMeaningfulOutput.startsWith(OUTPUT_INSTALL_START)
+                        || lastMeaningfulOutput.startsWith(OUTPUT_ING)) {
+                    meaningfulOutput = OUTPUT_ING;
+                } else {
+                    meaningfulOutput = OUTPUT_INSTALL_START;
+                }
+            } else if (RETURN_CB_UNINSTALL_PERCENT.equals(key)) {
+                if (lastMeaningfulOutput.startsWith(OUTPUT_UNINSTALL_START)
+                        || lastMeaningfulOutput.startsWith(OUTPUT_ING)) {
+                    meaningfulOutput = OUTPUT_ING;
+                } else {
+                    meaningfulOutput = OUTPUT_UNINSTALL_START;
+                }
+            } else {
+                meaningfulOutput = "\n" + key
+                        + " : "
+                        + value
+                        + "\n";
+            }
+        } else {
+            meaningfulOutput = output + "\n";
+        }
+        return meaningfulOutput;
+    }
+
+    private String getValue(String[] elements, String key) {
+        String result = null;
+        for (String element : elements) {
+            if (element.startsWith(key)) {
+                String[] list = StringUtil.split(element, "[");
+                result = StringUtil.trimCharacter(list[1], ']');
+                break;
+            }
+        }
+        return result;
+    }
+}
index 22fe4d6..348afdd 100644 (file)
@@ -49,6 +49,7 @@ import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.PlatformUI;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
+import org.tizen.common.util.OSChecker;\r
 import org.tizen.common.util.OpenBrowserUtil;\r
 import org.tizen.common.util.StringUtil;\r
 \r
@@ -210,6 +211,8 @@ public class HelpToolTip extends DefaultToolTip {
                     setPopupDelay(popupDelay);\r
 \r
                     break;\r
+                default :\r
+                    break;\r
             }\r
         }\r
     }\r
@@ -222,10 +225,6 @@ public class HelpToolTip extends DefaultToolTip {
 \r
             Shell shell = composite.getShell();\r
             switch (event.type) {\r
-                case SWT.MouseUp :\r
-                case SWT.MouseMove :\r
-                case SWT.MouseEnter :\r
-                    break;\r
                 case SWT.MouseDown :\r
                     if (isHideOnMouseDown())\r
                         hide();\r
@@ -239,9 +238,19 @@ public class HelpToolTip extends DefaultToolTip {
                     if (focusOnHover) {\r
                         shell.setActive();\r
                         composite.setFocus();\r
+                        // FIXME\r
+                        if (OSChecker.isLinux()) {\r
+                            // In Linux, MouseExit event for Shell is fired after MouseExit event for Label is fired.\r
+                            // So org.eclipse.jface.window.ToolTip$TooltipHideListener hides the tooltip. (a user can not select the tooltip link)\r
+                            Listener[] listeners = shell.getListeners(SWT.MouseExit);\r
+                            if (listeners != null)\r
+                                shell.removeListener(SWT.MouseExit, listeners[0]);\r
+                        }\r
                     }\r
 \r
                     break;\r
+                default:\r
+                    break;\r
             }\r
         }\r
     }\r
index 5acd9f5..e230fc1 100644 (file)
@@ -37,6 +37,8 @@ import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
@@ -60,6 +62,7 @@ import org.eclipse.ui.dialogs.SelectionStatusDialog;
 import org.tizen.common.CommonPlugin;
 import org.tizen.common.ScreenDensity;
 import org.tizen.common.util.ImageUtil;
+import org.tizen.common.util.StringUtil;
 import org.tizen.common.util.log.Logger;
 
 /**
@@ -83,6 +86,8 @@ public class NewIconDialog extends SelectionStatusDialog {
     private Label lblImageFile;
     private BufferedImage fMaskImage, fEffectImage, fIconImage;
 
+    public String iconFileName = ICON_FILE_NAME;
+
     public NewIconDialog(Shell parentShell, IProject project) {
         super(parentShell);
         setTitle("Add Icon");
@@ -196,8 +201,26 @@ public class NewIconDialog extends SelectionStatusDialog {
                     0
             );
 
-            if (dlg.open() == 1) {
-                return;
+            if (dlg.open() == CANCEL) {
+                // rename for icon.png
+                InputDialog iconFileNameInputDialog = new InputDialog(getShell(), "Name Conflict", "Enter a new name for 'icon.png'", "", new IInputValidator() {
+                    @Override
+                    public String isValid(String name) {
+                        if (StringUtil.isEmpty(name)) {
+                            return "Name cannot be empty.";
+                        } else if (fProject.getFile(name).exists()) {
+                            return "A resource with that name already exists";
+                        }
+                        return null;
+                    }
+                });
+                if (iconFileNameInputDialog.open() == CANCEL) {
+                    return;
+                } else {
+                    iconFileName = iconFileNameInputDialog.getValue();
+                    destFile = fProject.getFile(iconFileName);
+                    destFilePath = destFile.getLocation().toString();
+                }
             } else {
                 try {
                     if (! fPath.equals(destFilePath)) {
@@ -264,4 +287,8 @@ public class NewIconDialog extends SelectionStatusDialog {
         fText.setText(src);
     }
 
+    public String getIconFileName() {
+        return iconFileName;
+    }
+
 }
index ec48dd8..0fbcc8c 100644 (file)
@@ -43,6 +43,21 @@ public class Messages {
     public static String RDS_OPTION_SAVE_FAIL;
     public static String RDS_MODE_PREFERENCE;
     
+    public static String LOGGER_GROUP;
+    public static String LABEL_LOG_LOCATION;
+    public static String LABEL_LOG_CP;
+    
+    public static String BUTTON_REPORT;
+    public static String BUTTON_USAGE;
+    public static String BUTTON_PERFORM;
+    
+    public static String DES_OFF;
+    public static String DES_ERROR;
+    public static String DES_WARN;
+    public static String DES_INFO;
+    public static String DES_DEBUG;
+    public static String DES_ALL;
+    
     static {
         // initialize resource bundle
         NLS.initializeMessages( BUNDLE_NAME, Messages.class );
index 8197247..e59d6ea 100644 (file)
@@ -6,4 +6,10 @@ LABEL_UPDATE=Automatically find new updates at start-up and notify me
 PROPERTIES_PAGE_BODY=Expand the tree to edit preferences for a specific feature.
 RDS_NOTE=Currently, this option is not supported for multi-app project.
 RDS_OPTION_SAVE_FAIL=Failed to save options.
-RDS_MODE_PREFERENCE=Enable rapid development mode
\ No newline at end of file
+RDS_MODE_PREFERENCE=Enable rapid development mode
+LOGGER_GROUP=Logger
+LABEL_LOG_LOCATION=&Location
+LABEL_LOG_CP=&Pattern
+BUTTON_REPORT=I want to contribute this information to improve Tizen IDE
+BUTTON_USAGE=Send usage data
+BUTTON_PERFORM=Send performance data
\ No newline at end of file
index 41696eb..2d3063e 100644 (file)
 
 package org.tizen.common.ui.page.preference;
 
+import org.apache.log4j.Logger;
+import org.apache.log4j.MDC;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.jface.preference.BooleanFieldEditor;
 import org.eclipse.jface.preference.DirectoryFieldEditor;
 import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Scale;
+import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
 import org.tizen.common.CommonPlugin;
+import org.tizen.common.core.application.InstallPathConfig;
 import org.tizen.common.util.SWTUtil;
+import org.tizen.common.util.StringUtil;
+import org.tizen.common.util.log.FileAppender;
+import org.tizen.common.util.log.Level;
+import org.tizen.common.util.log.LoggerConstants;
 
 public class TizenBasePreferencePage extends FieldEditorPreferencePage implements
         IWorkbenchPreferencePage
@@ -45,9 +63,58 @@ public class TizenBasePreferencePage extends FieldEditorPreferencePage implement
 
     public static final String KEY_SDKLOCATION = "sdkpath"; //$NON-NLS-1$
     public static final String KEY_SDKUPDATE = "sdkupdate"; //$NON-NLS-1$
+    
     public static final String VALUE_SDKLOCATION_DEFAULT = null;;
     public static final boolean VALUE_SDKUPDATE_DEFAULT = false;
+    private boolean applyOk = true;
+    
+    /**
+     * Option id for getting logger level from preference store
+     */
+    public static final String OPTION_ID_LEVEL = "org.tizen.common.logger.level";
+    
+    /**
+     * Option id for getting logger location from preference store
+     */
+    public static final String OPTION_ID_LOCATION = "org.tizen.common.logger.location";
+    
+    /**
+     * Option id for getting logger conversion pattern from preference store
+     */
+    public static final String OPTION_ID_CP = "org.tizen.common.logger.cp";
+    
+    /**
+     * Option id for getting report agreement from preference store
+     */
+    public static final String OPTION_ID_REPORT = "org.tizen.common.logger.report";
+    
+    /**
+     * Option id for getting usage report agreement from preference store
+     */
+    public static final String OPTION_ID_USAGE = "org.tizen.common.logger.usage";
+    
+    /**
+     * Option id for getting performance report agreement from preference store
+     */
+    public static final String OPTION_ID_PERFORM = "org.tizen.common.logger.perform";
+    
+    private static final int DEFAULT_LEVEL = 1;
+    private static final Level[] LEVELS = {Level.OFF, Level.ERROR, Level.INFO, Level.DEBUG, Level.ALL};
+    
+    private Text loggerCP;
+    private Text loggerLocText;
+    private Scale levelScale;
+    private Label levelDesLabel;
+    private Button reportButton;
+    private Button usageButton;
+    private Button performButton;
+    
+    private static final IPreferenceStore prefStore = (CommonPlugin.getDefault() == null) ? null : CommonPlugin.getDefault().getPreferenceStore();
 
+    /**
+     * Constructor for {@link TizenBasePreferencePage}
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
     public TizenBasePreferencePage()
     {
         // super(GRID);
@@ -58,11 +125,13 @@ public class TizenBasePreferencePage extends FieldEditorPreferencePage implement
     }
 
     @Override
-    public void init(IWorkbench workbench)
-    {
-        // TODO Auto-generated method stub
+    public void init(IWorkbench workbench) {
     }
-
+    
+    /**
+     * {@inheritDoc}
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
     @Override
     protected void createFieldEditors()
     {
@@ -82,6 +151,7 @@ public class TizenBasePreferencePage extends FieldEditorPreferencePage implement
         SWTUtil.createSpacer(composite, 1);
         createUpdateSettingPreferences(composite);
         SWTUtil.createSpacer(composite, 1);
+        createLoggerPreferences(composite);
     }
 
     private void createPathSettingPreferences(Composite parent)
@@ -104,4 +174,310 @@ public class TizenBasePreferencePage extends FieldEditorPreferencePage implement
         addField(startupCheckEditor);
     }
 
+    private void createLoggerPreferences(Composite parent) {
+        Composite comp = SWTUtil.createGroup(parent, Messages.LOGGER_GROUP, 1);
+        SWTUtil.setGridLayout(comp, 2, false, -1, -1, -1, -1, GridData.FILL_HORIZONTAL);
+        createLoggerLocationButton(comp);
+        createLoggerConversionPatterhn(comp);
+        createLoggerLevelButtons(comp);
+        //createLoggerReportButtons(comp);
+    }
+
+    private void createLoggerConversionPatterhn(Composite parent) {
+        Label loggerLocationLabel = new Label(parent, SWT.None);
+        loggerLocationLabel.setText(Messages.LABEL_LOG_CP);
+        
+        loggerCP = new Text(parent, SWT.BORDER);
+        SWTUtil.setGridLayoutData(loggerCP, -1, -1, -1, -1, GridData.FILL_HORIZONTAL);
+        
+        loggerCP.setText(getLogConversionPattern());
+    }
+
+    @SuppressWarnings("unused")
+    private void createLoggerReportButtons(Composite parent) {
+        Composite comp = new Composite(parent, SWT.None);
+        SWTUtil.setGridLayout(comp, 2, false, -1, -1, -1, -1, GridData.FILL_HORIZONTAL);
+        SWTUtil.setGridLayoutData(comp, -1, -1, 2, -1, GridData.FILL_HORIZONTAL);
+        
+        reportButton = new Button(comp, SWT.CHECK);
+        SWTUtil.setGridLayoutData(reportButton, -1, -1, 2, -1, GridData.FILL_HORIZONTAL);
+        reportButton.setText(Messages.BUTTON_REPORT);
+        
+        Label emptyLabel = new Label(comp, SWT.None);
+        emptyLabel.setText("   ");
+        
+        usageButton = new Button(comp, SWT.CHECK);
+        SWTUtil.setGridLayoutData(usageButton,  -1, -1, -1, -1, GridData.FILL_HORIZONTAL);
+        usageButton.setText(Messages.BUTTON_USAGE);
+        
+        Label emptyLabel2 = new Label(comp, SWT.None);
+        emptyLabel2.setText("   ");
+        
+        performButton = new Button(comp, SWT.CHECK);
+        SWTUtil.setGridLayoutData(performButton, -1, -1, -1, -1, GridData.FILL_HORIZONTAL);
+        performButton.setText(Messages.BUTTON_PERFORM);
+        
+        if(prefStore.getBoolean(OPTION_ID_REPORT)) {
+            reportButton.setSelection(true);
+            if(prefStore.getBoolean(OPTION_ID_USAGE)) {
+                usageButton.setSelection(true);
+            }
+            if(prefStore.getBoolean(OPTION_ID_PERFORM)) {
+                performButton.setSelection(true);
+            }
+        }
+        
+//        checkLoggerButton();
+        
+        reportButton.addSelectionListener(new SelectionListener() {
+            
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+//                checkLoggerButton();
+            }
+            
+            @Override
+            public void widgetDefaultSelected(SelectionEvent e) {
+            }
+        });
+    }
+    
+    private void checkLoggerButton() {
+        if(!reportButton.getSelection()) {
+            usageButton.setSelection(false);
+            usageButton.setEnabled(false);
+            performButton.setSelection(false);
+            performButton.setEnabled(false);
+        }
+        else {
+            usageButton.setEnabled(true);
+            performButton.setEnabled(true);
+        }
+    }
+
+    private void createLoggerLocationButton(Composite parent) {
+        Label loggerLocationLabel = new Label(parent, SWT.None);
+        loggerLocationLabel.setText(Messages.LABEL_LOG_LOCATION);
+        
+        loggerLocText = new Text(parent, SWT.BORDER);
+        SWTUtil.setGridLayoutData(loggerLocText, -1, -1, -1, -1, GridData.FILL_HORIZONTAL);
+        
+        loggerLocText.setText(getLogLocation());
+    }
+
+    /**
+     * Gets a logger conversion pattern from the preference page
+     * @return conversion pattern
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public static String getLogConversionPattern() {
+        
+        String loggerCP = prefStore.getString(OPTION_ID_CP);
+        if(StringUtil.isEmpty(loggerCP)) {
+            loggerCP = LoggerConstants.DEFAULT_CONVERSION_PATTERN;
+        }
+        
+        return loggerCP;
+    }
+    
+    /**
+     * Gets a log location from the preference page
+     * @return log location
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public static String getLogLocation() {
+        
+        String loggerPath = prefStore.getString(OPTION_ID_LOCATION);
+        if(StringUtil.isEmpty(loggerPath)) {
+            loggerPath = LoggerConstants.DEFAULT_LOG_LOCATION;
+        }
+        
+        return loggerPath;
+    }
+
+    private void createLoggerLevelButtons(Composite parent) {
+        String selectedLevel = prefStore.getString(OPTION_ID_LEVEL);
+        if(StringUtil.isEmpty(selectedLevel)) {
+            selectedLevel = LEVELS[DEFAULT_LEVEL].toString();
+        }
+        
+        levelScale = new Scale(parent, SWT.HORIZONTAL);
+        SWTUtil.setGridLayoutData(levelScale, -1, -1, 2, -1, GridData.FILL_HORIZONTAL);
+        levelScale.setMinimum(0);
+        levelScale.setMaximum(LEVELS.length - 1);
+        levelScale.setIncrement(1);
+        levelScale.setPageIncrement(1);
+//        levelScale.setDragDetect(false);
+        
+        boolean levelDefined = false;
+        for(int i=0; i<LEVELS.length; i++) {
+            Level level = LEVELS[i];
+            
+            if(level.toString().equals(selectedLevel)) {
+                levelDefined = true;
+                levelScale.setSelection(i);
+                break;
+            }
+        }
+        
+        if(!levelDefined) {
+            levelScale.setSelection(DEFAULT_LEVEL);
+        }
+        
+        levelDesLabel = new Label(parent, SWT.None);
+        SWTUtil.setGridLayoutData(levelDesLabel, -1, -1, 2, -1, GridData.FILL_HORIZONTAL);
+        levelDesLabel.setText(LEVELS[levelScale.getSelection()].getDescription());
+        
+        
+        
+        levelScale.addMouseListener(new MouseListener() {
+            
+            @Override
+            public void mouseUp(MouseEvent e) {
+                int selectedLevel = levelScale.getSelection();
+                levelScale.setSelection(selectedLevel);
+            }
+            
+            @Override
+            public void mouseDown(MouseEvent e) {
+            }
+            
+            @Override
+            public void mouseDoubleClick(MouseEvent e) {
+            }
+        });
+        
+        levelScale.addSelectionListener(new SelectionListener() {
+            
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                levelDesLabel.setText(LEVELS[levelScale.getSelection()].getDescription());
+            }
+            
+            @Override
+            public void widgetDefaultSelected(SelectionEvent e) {
+            }
+        });
+    }
+
+    /**
+     * {@inheritDoc}
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    @Override
+    protected void performDefaults() {
+        
+        levelScale.setSelection(DEFAULT_LEVEL);
+        levelDesLabel.setText(LEVELS[DEFAULT_LEVEL].getDescription());
+        loggerLocText.setText(LoggerConstants.DEFAULT_LOG_LOCATION);
+        loggerCP.setText(LoggerConstants.DEFAULT_CONVERSION_PATTERN);
+//        reportButton.setSelection(false);
+//        checkLoggerButton();
+        super.performDefaults();
+    }
+    
+    /**
+     * {@inheritDoc}
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    @Override
+    protected void performApply() {
+        Level loggerLevel = LEVELS[levelScale.getSelection()];
+        String loggerLoc = loggerLocText.getText();
+        
+        MDC.put(LoggerConstants.KEY_WORKSPACE, ResourcesPlugin.getWorkspace().getRoot().getLocation().toString());
+        MDC.put(LoggerConstants.KEY_SDK_HOME, InstallPathConfig.getSDKPath());
+        Logger rootLogger = Logger.getRootLogger();
+        FileAppender fileAppender = (FileAppender) rootLogger.getAppender(LoggerConstants.NAME_FILE_APPENDER);
+        String result = fileAppender.setFilePath(loggerLoc);
+        MDC.remove(LoggerConstants.KEY_SDK_HOME);
+        MDC.remove(LoggerConstants.KEY_WORKSPACE);
+        
+        if(!StringUtil.isEmpty(result)) {
+            setErrorMessage(result);
+            applyOk = false;
+            return;
+        }
+        
+        prefStore.setValue(OPTION_ID_LOCATION, loggerLocText.getText());
+        prefStore.setValue(OPTION_ID_LEVEL, loggerLevel.toString());
+//        prefStore.setValue(OPTION_ID_REPORT, reportButton.getSelection());
+//        prefStore.setValue(OPTION_ID_USAGE, usageButton.getSelection());
+//        prefStore.setValue(OPTION_ID_PERFORM, performButton.getSelection());
+        prefStore.setValue(OPTION_ID_CP, loggerCP.getText());
+        setErrorMessage(null);
+        applyOk = true;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    @Override
+    public boolean performOk() {
+        performApply();
+        
+        if(!applyOk) {
+            return false;
+        }
+        
+        return super.performOk();
+    }
+    
+    /**
+     * Gets a logger level from the preference store
+     * @return logger level
+     */
+    public static Level getLoggerLevel() {
+        return getLoggerLevel(null);
+    }
+    
+    public static Level getLoggerLevel(String levelString) {
+        
+        if(StringUtil.isEmpty(levelString)) {
+            levelString = prefStore.getString(OPTION_ID_LEVEL);
+        }
+        for(Level level: LEVELS) {
+            if(level.toString().equals(levelString)) {
+                return level;
+            }
+        }
+        return LEVELS[DEFAULT_LEVEL];
+    }
+    
+    /**
+     * Gets a reporting agreement from the preference store
+     * @return reporting agreement
+     */
+    public static boolean isReport() {
+        if(prefStore == null) {
+            return false;
+        }
+        return prefStore.getBoolean(OPTION_ID_REPORT);
+    }
+    
+    /**
+     * Gets a usage reporting agreement from the preference store
+     * @return usage reporting agreement
+     */
+    public static boolean isUsage() {
+        if(prefStore == null) {
+            return false;
+        }
+        return prefStore.getBoolean(OPTION_ID_USAGE);
+    }
+    
+    /**
+     * Gets a performance reporting agreement from the preference store
+     * @return performance reporting agreement
+     */
+    public static boolean isPerform() {
+        if(prefStore == null) {
+            return false;
+        }
+        return prefStore.getBoolean(OPTION_ID_PERFORM);
+    }
+
 }
index 125be79..a9b0429 100755 (executable)
@@ -49,7 +49,7 @@ import org.eclipse.ui.console.MessageConsoleStream;
  * @author GyeongSeok Seo {@literal <gyeongseok.seo@samsung.com>} (S-Core)
  */
 public class ConsoleManager
-implements IConsolePrinter
+implements ITizenConsoleManager
 {
     private IConsoleManager consoleManager;
     private String consoleName;
@@ -312,5 +312,16 @@ implements IConsolePrinter
             setStringStyle(this.fontStyle, this.color);
         }
     }
+
+    @Override
+    public void print(String line) {
+        MessageConsoleStream output = this.console.newMessageStream();
+        output.print(line);
+        try {
+            output.close();
+        } catch (IOException e) {
+             ConsolePlugin.log(e);
+        }
+    }
 }
 
index e3289a1..ebdecc7 100755 (executable)
@@ -31,6 +31,8 @@ import static org.tizen.common.util.SWTUtil.getActivePage;
 import static org.tizen.common.util.SWTUtil.syncExec;
 import static org.tizen.common.util.IOUtil.tryClose;
 
+import java.io.IOException;
+
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.ui.IWorkbenchPage;
@@ -52,7 +54,7 @@ import org.tizen.common.util.Assert;
  */
 public class
 ConsoleManager2
-implements IConsolePrinter, IHyperlinkManager
+implements ITizenConsoleManager, IHyperlinkManager
 {
        
        /**
@@ -183,7 +185,7 @@ implements IConsolePrinter, IHyperlinkManager
         * 
         * @return {@link IConsole} to be managed
         */
-       protected IConsole getConsole() {
+       public IConsole getConsole() {
                return this.console;
        }
        
@@ -406,5 +408,15 @@ implements IConsolePrinter, IHyperlinkManager
                hyperlinkManager.addLinker( link );
        }
 
+    @Override
+    public void print(String line) {
+        MessageConsoleStream output = this.console.newMessageStream();
+        output.print(line);
+        try {
+            output.close();
+        } catch (IOException e) {
+             ConsolePlugin.log(e);
+        }
+    }
 }
 
diff --git a/org.tizen.common/src/org/tizen/common/ui/view/console/ITizenConsoleManager.java b/org.tizen.common/src/org/tizen/common/ui/view/console/ITizenConsoleManager.java
new file mode 100644 (file)
index 0000000..4e7ad83
--- /dev/null
@@ -0,0 +1,13 @@
+package org.tizen.common.ui.view.console;
+
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.ui.console.IConsole;
+
+public interface ITizenConsoleManager extends IConsolePrinter {
+    public IConsole getConsole();
+    public void print(String line);
+    public void println(String line);
+    public void println(String message, int fontStyle, Color color);
+    public void printProcessStreams(Process process);
+    public void show();
+}
index 6289747..f175f2c 100755 (executable)
@@ -642,7 +642,7 @@ public class FileUtil {
      * return appended path with given OS type..
      * @param originalPath original path
      * @param appendPath path which will be appended to original path.
-     * @param iwWindow if you want to get Windows path, true. Else, false.
+     * @param iwWindows if you want to get path of Microsoft Windows, <code>true</code>. Else, <code>false</code>.
      * @return appended path 
      */
     public static String appendPath(String originalPath, String appendPath, boolean isWindows) {
index c6ae968..25f0d9e 100755 (executable)
@@ -103,7 +103,7 @@ public abstract class HostUtil{
             logger.info( "Exception occurred:", e );
             return false;
         } finally{
-            logger.info( "HostUtil execute - exit value : {}", i );
+            logger.debug( "HostUtil execute - exit value : {}", i );
             if(proc!=null)    
             {
                 proc.destroy();
index d9113f8..16d0d16 100644 (file)
@@ -39,6 +39,7 @@ import javax.imageio.ImageIO;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Plugin;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.SWTException;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.ImageData;
 import org.eclipse.swt.graphics.PaletteData;
@@ -173,7 +174,7 @@ public class ImageUtil {
             } else {
                 image = ImageIO.read(new File(path));
             }
-        } catch (Exception e) {
+        } catch (IOException e) {
             Logger.log(e);
         } finally {
             IOUtil.tryClose(is);
@@ -187,21 +188,21 @@ public class ImageUtil {
     }
 
     public static Image getSWTImage(Display display, String relativePath) {
-        Image image = null;
+        if ( StringUtil.isEmpty(relativePath) ) {
+            return new Image( display, 1, 1 );
+        }
+
         InputStream is = ImageUtil.class.getResourceAsStream(relativePath);
 
         try {
-            image = new Image(Display.getDefault(), is);
-        } catch (RuntimeException ex) {
-            Logger.log(ex);
+            Image image = new Image(Display.getDefault(), is);
+            if ( image == null ) {
+                image = new Image(display, 1, 1);
+            }
+            return image;
         } finally {
             IOUtil.tryClose(is);
         }
-
-        if (image == null) {
-            image = new Image(display, 1, 1);
-        }
-        return image;
     }
 
     public static Image convertImageToSWT(Display display, BufferedImage bImage) {
index 8eb96ae..35d226a 100644 (file)
@@ -41,7 +41,8 @@ import java.net.ServerSocket;
  */
 public class LocalPortChecker
 {
-       
+       protected static String LOCAL_ADDRESS_IP = "127.0.0.1";
+
        public static boolean isPortInRange( final int port )
        {
                return ( 0 <= port ) && ( port < 65536 );
@@ -57,7 +58,7 @@ public class LocalPortChecker
         ServerSocket socket = null;
         try
         {
-            InetAddress localhost = InetAddress.getByName( "127.0.0.1" );
+            InetAddress localhost = InetAddress.getByName( LOCAL_ADDRESS_IP );
             socket = new ServerSocket( port, 50, localhost );
             return true;
         }
index a829e13..bf98f5a 100755 (executable)
@@ -59,8 +59,8 @@ public abstract class PropertyUtil {
                                props.setProperty(key, value);
                        }
                        //props.load(reader);
-               } catch (Exception e) {
-                       e.printStackTrace();
+               } catch (IOException e) {
+                       logger.error( e.getMessage() );
                } finally {
                        tryClose( reader );
                }
index f8369bf..6b75138 100755 (executable)
@@ -480,6 +480,25 @@ public class SWTUtil {
             }
         } while (!treeStack.isEmpty());
     }
+    
+    /**
+     * set grid layout of the Control
+     * If values of  heightHint, widthHint, horizontalSpan, verticalSpan is -1, this method does not change value of them
+     * 
+     * @param c target control to which grid layout data is set
+     * @param numColumns the number of columns in the grid
+     * @param equalWidth whether or not the columns will have equal width 
+     * @param heightHint height of the control
+     * @param widthHint width of the control
+     * @param horizontalSpan the number of column cells that control will take up
+     * @param verticalSpan the number of row cells that control will take up
+     * @param style style of the control
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public static void setGridLayout(Composite c, int numColumns, boolean equalWidth, int heightHint, int widthHint, int horizontalSpan, int verticalSpan, int style) {
+        c.setLayout(new GridLayout(numColumns, equalWidth));
+        SWTUtil.setGridLayoutData(c, heightHint, widthHint, horizontalSpan, verticalSpan, style);
+    }
 
     /**
      * set grid layout data of Control. 
diff --git a/org.tizen.common/src/org/tizen/common/util/ThreadLocalMap.java b/org.tizen.common/src/org/tizen/common/util/ThreadLocalMap.java
new file mode 100644 (file)
index 0000000..6a64d81
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * BonYong Lee <bonyong.lee@samsung.com>
+ * Ho Namkoong <ho.namkoong@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.common.util;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * ThreadLocalMap which implements {@link Map}} has one map per one thread
+ * @see ThreadLocal
+ * @see Map
+ * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+ */
+public class ThreadLocalMap<K, V>
+implements Map<K, V> {
+
+    /**
+     * contains one map per one thread
+     */
+    private ThreadLocal<Map<K, V>> threadLocal = new ThreadLocal<Map<K,V>>() {
+        
+        protected Map<K,V> initialValue() {
+            return new HashMap<K, V>();
+        };
+    };
+    
+    @Override
+    public int size() {
+        return threadLocal.get().size();
+    }
+
+    @Override
+    public boolean isEmpty() {
+        return threadLocal.get().isEmpty();
+    }
+
+    @Override
+    public boolean containsKey(Object key) {
+        return threadLocal.get().containsKey(key);
+    }
+
+    @Override
+    public boolean containsValue(Object value) {
+        return threadLocal.get().containsValue(value);
+    }
+
+    @Override
+    public V get(Object key) {
+        return threadLocal.get().get(key);
+    }
+
+    @Override
+    public V put(K key, V value) {
+        return threadLocal.get().put(key, value);
+    }
+
+    @Override
+    public V remove(Object key) {
+        return threadLocal.get().remove(key);
+    }
+
+    @Override
+    public void putAll(Map<? extends K, ? extends V> m) {
+        threadLocal.get().putAll(m);
+    }
+
+    @Override
+    public void clear() {
+        threadLocal.get().clear();
+    }
+
+    @Override
+    public Set<K> keySet() {
+        return threadLocal.get().keySet();
+    }
+
+    @Override
+    public Collection<V> values() {
+        return threadLocal.get().values();
+    }
+
+    @Override
+    public Set<java.util.Map.Entry<K, V>> entrySet() {
+        return threadLocal.get().entrySet();
+    }
+}
diff --git a/org.tizen.common/src/org/tizen/common/util/log/EclipseAppender.java b/org.tizen.common/src/org/tizen/common/util/log/EclipseAppender.java
new file mode 100644 (file)
index 0000000..54f7da3
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: 
+ * Ho Namkoong <ho.namkoong@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.common.util.log;
+
+import java.text.MessageFormat;
+
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.EnhancedPatternLayout;
+import org.apache.log4j.Layout;
+import org.apache.log4j.Level;
+import org.apache.log4j.helpers.LogLog;
+import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.spi.ThrowableInformation;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.tizen.common.CommonPlugin;
+import org.tizen.common.ui.view.console.ConsoleManager;
+
+/**
+ * appends log to the Eclipse error log view
+ * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+ *
+ */
+public class EclipseAppender extends AppenderSkeleton{
+    
+    /**
+     * Constructor for {@link EclipseAppender}
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public EclipseAppender() {
+        this(new EnhancedPatternLayout(LoggerConstants.DEFAULT_CONVERSION_PATTERN));
+    }
+    
+    /**
+     * Constructor for {@link EclipseAppender} with {@link Layout}
+     * @param layout
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public EclipseAppender(Layout layout) {
+        super();
+        this.setName(LoggerConstants.NAME_ECLIPSE_APPENDER);
+        setLayout(layout); 
+    }
+    
+    @Override
+    public void close() {
+        // TODO Auto-generated method stub
+        
+    }
+
+    @Override
+    public boolean requiresLayout() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    @Override
+    protected void append(LoggingEvent event) {
+        try {
+            Level level = event.getLevel();
+            ThrowableInformation tI = event.getThrowableInformation();
+            Throwable t = null;
+            if(tI != null) {
+                t = tI.getThrowable();
+            }
+            
+            String message = getLayout().format(event);
+            String caller = event.getLocationInformation().getClassName();
+            
+            if(level.isGreaterOrEqual(Level.OFF)) {
+                return;
+            }
+            if(level.isGreaterOrEqual(Level.ERROR)) {
+                log(new Status(Status.ERROR, caller, message.toString(), t));
+            }
+            else if(level.isGreaterOrEqual(Level.WARN)) {
+                log(new Status(Status.WARNING, caller, message.toString(), t));
+            }
+            else if(level.isGreaterOrEqual(Level.INFO)) {
+                log(new Status(Status.INFO, caller, message.toString(), t));
+            }
+        }
+        catch(Throwable t) {
+            LogLog.error(MessageFormat.format("Exception occurred while logging message: {0}", event.getMessage()), t);
+        }
+    }
+    
+    
+    private static void log(IStatus status) {
+        CommonPlugin plugin = CommonPlugin.getDefault();
+        if (plugin != null) {
+            plugin.getLog().log(status);
+        } else {
+            ConsoleManager conManager = new ConsoleManager("Error Log", false);
+            conManager.println(status.getPlugin() + " : " + status.getMessage());
+        }
+    }
+}
diff --git a/org.tizen.common/src/org/tizen/common/util/log/FileAppender.java b/org.tizen.common/src/org/tizen/common/util/log/FileAppender.java
new file mode 100644 (file)
index 0000000..f70d5c5
--- /dev/null
@@ -0,0 +1,254 @@
+/*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * BonYong Lee <bonyong.lee@samsung.com>
+ * Ho Namkoong <ho.namkoong@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.common.util.log;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.text.MessageFormat;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.EnhancedPatternLayout;
+import org.apache.log4j.Layout;
+import org.apache.log4j.Logger;
+import org.apache.log4j.helpers.LogLog;
+import org.apache.log4j.spi.LoggingEvent;
+import org.eclipse.osgi.util.NLS;
+import org.tizen.common.util.IOUtil;
+import org.tizen.common.util.StringUtil;
+
+/**
+ * Appends log to the file
+ * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+ *
+ */
+public class FileAppender extends AppenderSkeleton{
+    
+    private int bufferSize;
+  //This event is dummy for getting formatted workspace path.
+    private static final LoggingEvent dummy = new LoggingEvent( null, Logger.getLogger( "FileAppender"), Level.OFF, StringUtil.EMPTY_STRING, null );
+
+    protected final OutputStream NOOP_OUTPUT_STREAM = new OutputStream() {
+
+        @Override
+        public void write(int b) throws IOException {
+        }
+    };
+    
+    protected final FileAppenderScheduler NOOP_SCHEDULER = new FileAppenderScheduler() {
+        
+        @Override
+        public void run() {}
+        
+        @Override
+        public boolean cancel() {
+            return true;
+        }
+    };
+    
+    OutputStream  FILE_OUTPUT_STREAM;
+    private FileAppenderScheduler SCHEDULER;
+    private static final Timer TIMER = new Timer("File appender timer", true);
+    protected String logPath;
+
+    /**
+     * Constructor {@link FileAppender} with log path
+     * @param logPath
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public FileAppender(String logPath) {
+        this(logPath, new EnhancedPatternLayout(LoggerConstants.DEFAULT_CONVERSION_PATTERN), LoggerConstants.DEFAULT_BUFFER_SIZE);
+    }
+    
+    /**
+     * Constructor {@link FileAppender} with log path and {@link Layout}
+     * @param logPath
+     * @param layout
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public FileAppender(String logPath, Layout layout) {
+        this(logPath, layout, LoggerConstants.DEFAULT_BUFFER_SIZE);
+    }
+    
+    /**
+     * Constructor {@link FileAppender} with log path, {@link Layout} and buffer size
+     * @param logPath
+     * @param layout
+     * @param bufferSize
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public FileAppender(String logPath, Layout layout, int bufferSize) {
+        super();
+        this.setName(LoggerConstants.NAME_FILE_APPENDER);
+        this.logPath = new EnhancedPatternLayout(logPath).format(dummy);
+        this.bufferSize = bufferSize;
+        setLayout(layout);
+        initializeAppender();
+    }
+
+    @Override
+    public void close() {
+    }
+
+    @Override
+    public boolean requiresLayout() {
+        return false;
+    }
+
+    /**
+     * Sets the log file path
+     * @param path log file path
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    synchronized public String setFilePath( final String path ) {
+        IOUtil.tryFlush(FILE_OUTPUT_STREAM);
+        IOUtil.tryClose(FILE_OUTPUT_STREAM);
+        EnhancedPatternLayout layout = new EnhancedPatternLayout(path);
+        this.logPath = layout.format(dummy);
+        return initializeAppender();
+    }
+    
+    /**
+     * Sets the log buffer size
+     * @param bufferSize log buffer size
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    synchronized public void setBufferSize(final int bufferSize) {
+        IOUtil.tryFlush(FILE_OUTPUT_STREAM);
+        IOUtil.tryClose(FILE_OUTPUT_STREAM);
+        this.bufferSize = bufferSize;
+        initializeAppender();
+    }
+
+    
+    /**
+     * {@inheritDoc}
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    @Override
+    synchronized protected void append(LoggingEvent arg0) {
+        try {
+            try {
+                FILE_OUTPUT_STREAM.write(layout.format(arg0).getBytes());
+                
+                if(getLayout().ignoresThrowable()) {
+                    String[] tss = arg0.getThrowableStrRep();
+                    if(tss != null) {
+                        for(String ts: tss) {
+                            FILE_OUTPUT_STREAM.write((ts + "\n").getBytes());
+                        }
+                    }
+                }
+            } catch (IOException e) {
+                LogLog.error(Messages.FileAppender_EXCEPTION_WRITING_LOG, e); //$NON-NLS-1$
+            }
+    
+            SCHEDULER.cancel();
+            SCHEDULER = new FileAppenderScheduler();
+            TIMER.scheduleAtFixedRate(SCHEDULER, LoggerConstants.DEFAULT_TIMER_PERIOD, LoggerConstants.DEFAULT_TIMER_PERIOD);
+        }
+        catch(Throwable t) {
+            LogLog.error(MessageFormat.format("Exception occurred while logging message: {0}", arg0.getMessage()), t);
+        }
+    }
+
+    synchronized private String initializeAppender() {
+        
+        createLogFile(logPath);
+        File logFile = new File(logPath);
+        String message = StringUtil.EMPTY_STRING;
+        
+        if(!logFile.exists()) {
+            logFile.getAbsoluteFile().getParentFile().mkdirs();
+            try {
+                logFile.createNewFile();
+            } catch (IOException e) {
+                FILE_OUTPUT_STREAM = NOOP_OUTPUT_STREAM;
+                SCHEDULER = NOOP_SCHEDULER;
+                message = NLS.bind(Messages.FileAppender_EXCEPTION_CREATING_LOGFILE, logPath);
+                LogLog.error(NLS.bind(Messages.FileAppender_EXCEPTION_CREATING_LOGFILE, logPath), e); //$NON-NLS-1$
+                return message;
+            }
+        }
+        else if(logFile.isDirectory()) {
+            FILE_OUTPUT_STREAM = NOOP_OUTPUT_STREAM;
+            SCHEDULER = NOOP_SCHEDULER;
+            message = NLS.bind(Messages.FileAppender_EXCEPTION_DIRECTORY_EXISTING, logPath);
+            LogLog.error(NLS.bind(Messages.FileAppender_EXCEPTION_DIRECTORY_EXISTING, logPath));
+            return message;
+        }
+
+        IOUtil.tryFlush(FILE_OUTPUT_STREAM);
+        IOUtil.tryClose(FILE_OUTPUT_STREAM);
+        try {
+            FILE_OUTPUT_STREAM = new BufferedOutputStream( new FileOutputStream(logPath, true), this.bufferSize );
+        } catch (IOException e) {
+            FILE_OUTPUT_STREAM = NOOP_OUTPUT_STREAM;
+            SCHEDULER = NOOP_SCHEDULER;
+            message = Messages.FileAppender_EXCEPTION_CREATING_BUFFER;
+            LogLog.error(Messages.FileAppender_EXCEPTION_CREATING_BUFFER, e); //$NON-NLS-1$
+            return message;
+        }
+        
+        SCHEDULER = new FileAppenderScheduler();
+        TIMER.scheduleAtFixedRate(SCHEDULER, LoggerConstants.DEFAULT_TIMER_PERIOD, LoggerConstants.DEFAULT_TIMER_PERIOD);
+        return message;
+    }
+
+    private void createLogFile(String logPath2) {
+        // TODO Auto-generated method stub
+        
+    }
+
+    /**
+     * Flush file output stream buffer for a specific time period
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     *
+     */
+    public class FileAppenderScheduler extends TimerTask {
+        @Override
+        public void run() {
+            synchronized ( FileAppender.this ) {
+                try {
+                    FILE_OUTPUT_STREAM.flush();
+                } catch (IOException e) {
+                    LogLog.error(Messages.FileAppender_EXCEPTION_FLUSHING_BUFFER, e);
+                }
+            }
+        }
+    }
+}
diff --git a/org.tizen.common/src/org/tizen/common/util/log/GoogleAnalyticAppender.java b/org.tizen.common/src/org/tizen/common/util/log/GoogleAnalyticAppender.java
new file mode 100644 (file)
index 0000000..c7bce38
--- /dev/null
@@ -0,0 +1,335 @@
+/*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * BonYong Lee <bonyong.lee@samsung.com>
+ * Ho Namkoong <ho.namkoong@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.common.util.log;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.EnhancedPatternLayout;
+import org.apache.log4j.Layout;
+import org.apache.log4j.Level;
+import org.apache.log4j.helpers.LogLog;
+import org.apache.log4j.spi.LoggingEvent;
+import org.tizen.common.util.ObjectUtil;
+import org.tizen.common.util.log.UserLogger.Event;
+import org.tizen.common.util.log.UserLogger.Page;
+import org.tizen.common.util.log.UserLogger.PerformanceInfo;
+
+public
+class
+GoogleAnalyticAppender
+extends AppenderSkeleton
+{
+    private boolean isUsage = false;
+    private boolean isPerform = false;
+    static final String URL_GOOGLE_ANALYTIC = "http://www.google-analytics.com/collect";
+    private static final int MAX_STACK_TRACE = 2;
+    
+    private static final String KEY_ANALYTIC_VER = "v";
+    private static final String KEY_TRACKING_ID = "tid";
+    private static final String KEY_CLIENT_ID = "cid";
+    private static final String KEY_HIT_TYPE = "t";
+    private static final String KEY_APP_NAME = "an";
+    private static final String KEY_APP_VER = "av";
+    private static final String KEY_CONTENT_DES = "cd";
+    private static final String KEY_EVENT_CATEGORY = "ec";
+    private static final String KEY_EVENT_ACTION = "ea";
+    private static final String KEY_PERFORM_CATEGORY = "utc";
+    private static final String KEY_PERFORM_VARIABLE = "utv";
+    private static final String KEY_PERFORM_TIME = "utt";
+    private static final String KEY_EXCEPTION = "exd";
+    private static final String KEY_FATAL = "exf";
+
+    private static final String VALUE_ANALYTIC_VER = "1";
+    private static final String VALUE_TRACKING_ID = "UA-33537119-1";
+    private static final String VALUE_CLIENT_ID = ObjectUtil.generateGUID( GoogleAnalyticAppender.class );
+    private static final String VALUE_APP_NAME = "tizen-ide";
+    private static final String VALUE_APP_VER = "2.1";
+    private static final String VALUE_HIT_TYPE_TIMING = "timing";
+    private static final String VALUE_HIT_TYPE_EVENT = "event";
+//    private static final String VALUE_HIT_TYPE_PAGE = "page";
+//    private static final String VALUE_HIT_TYPE_EXCEPTION = "exception";
+    private static final String VALUE_HIT_TYPE_APP = "appview";
+    int rc;
+    
+    /**
+     * Constructor for {@link GoogleAnalyticAppender} with usage reporting agreement and performance reporting agreement
+     * @param isUsage usage reporting agreement
+     * @param isPerform performance reporting agreement
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public GoogleAnalyticAppender(boolean isUsage, boolean isPerform) {
+        this(isUsage, isPerform, new EnhancedPatternLayout(LoggerConstants.DEFAULT_CONVERSION_PATTERN));
+    }
+    
+    /**
+     * Constructor for {@link GoogleAnalyticAppender} with usage reporting agreement, performance reporting agreement and {@link Layout}
+     * @param isUsage usage reporting agreement
+     * @param isPerform performance reporting agreement
+     * @param layout
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public GoogleAnalyticAppender(boolean isUsage, boolean isPerform, Layout layout) {
+        super();
+        this.setName(LoggerConstants.NAME_GOOGLE_APPENDER);
+        this.isUsage = isUsage;
+        this.isPerform = isPerform;
+        setLayout(layout);
+    }
+    
+    /**
+     * Sets the usage reporting agreement
+     * @param isUsage usage reporting agreement
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public void setUsage(boolean isUsage) {
+        this.isUsage = isUsage;
+    }
+    
+    
+    /**
+     * Sets the performance reporting agreement
+     * @param isPerform performance reporting agreement
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public void setPerform(boolean isPerform) {
+        this.isPerform = isPerform;
+    }
+    
+    @Override
+    public
+    void
+    close()
+    {
+    }
+
+    @Override
+    public boolean requiresLayout()
+    {
+        return false;
+    }
+
+    protected String
+    assembly(
+            final String key,
+            final String value
+            )
+                    throws UnsupportedEncodingException
+                    {
+        return URLEncoder.encode( key, "utf-8" ) + "=" + URLEncoder.encode( value, "utf-8" );
+                    }
+
+    /**
+     * Joins a string with "&"
+     * @param props strings which will be joined
+     * @return joined string
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    protected
+    String
+    join( String... props )
+    {
+        final StringBuilder buffer = new StringBuilder( 1000 );
+        for ( int i = 0, n = props.length ; i<n ; ++i  )
+        {
+            if ( 0 != i )
+            {
+                buffer.append( "&" );
+            }
+            final String prop = props[i];
+            buffer.append( prop );
+        }
+        return buffer.toString();
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    @Override
+    protected void append(
+            final LoggingEvent event
+            )
+    {
+        try {
+            rc = 0;
+            ArrayList<String> result = new ArrayList<String>();
+            try {
+                if(!assembleString(result, event)) {
+                    return;
+                }
+            } catch (UnsupportedEncodingException e) {
+                LogLog.error("Exception occurred while creating google analytic message", e);
+                return;
+            }
+            
+            final String resultData = join(result.toArray(new String[result.size()]));
+            
+            try
+            {
+                final URL u = new URL( URL_GOOGLE_ANALYTIC );
+                final HttpURLConnection con = (HttpURLConnection) u.openConnection();
+                try
+                {
+                    con.setDoOutput( true );
+                    final OutputStream out = con.getOutputStream();
+                    final OutputStreamWriter writer = new OutputStreamWriter( out );
+                    writer.write( resultData );
+                    writer.flush();
+    
+                    rc = con.getResponseCode();
+                    if ( 200 <= rc && rc < 300 ) 
+                    {
+                        System.out.println("OK");
+                    }
+                }
+                finally
+                {
+                    con.disconnect();
+                }
+            } catch (MalformedURLException e)
+            {
+                LogLog.debug( String.format("Malformed URL: %s", URL_GOOGLE_ANALYTIC), e );
+            } catch (IOException e)
+            {
+                e.printStackTrace();
+                LogLog.debug( "Exception occurred while transmitting google analytic data.", e );
+            }
+        }
+        catch(Throwable t) {
+            LogLog.error(MessageFormat.format("Exception occurred while logging message: {0}", event.getMessage()), t);
+        }
+    }
+
+    private boolean assembleString(ArrayList<String> result, LoggingEvent event) throws UnsupportedEncodingException {
+        
+        Level level = event.getLevel();
+        if(level == org.tizen.common.util.log.Level.PERFORM_END) {
+            if(!isPerform) {
+                return false;
+            }
+            PerformanceInfo perform = (PerformanceInfo) event.getMessage();
+            addPerformPreVariables(result, perform);
+            result.add(assembly(KEY_PERFORM_TIME, perform.getPerformanceString()));
+        }
+        else if(level == org.tizen.common.util.log.Level.PERFORM_START) {
+            if(!isPerform) {
+                return false;
+            }
+            PerformanceInfo perform = (PerformanceInfo) event.getMessage();
+            addPerformPreVariables(result, perform);
+        }
+        else if(level == org.tizen.common.util.log.Level.PAGE) {
+            if(!isUsage) {
+                return false;
+            }
+            addPageVariable(result, (Page)event.getMessage());
+        }
+        else if(level == org.tizen.common.util.log.Level.EVENT) {
+            if(!isUsage) {
+                return false;
+            }
+            addEventVariable(result, (Event)event.getMessage());
+        }
+        else {
+            result.add(assembly(KEY_HIT_TYPE, VALUE_HIT_TYPE_APP));
+        }
+        
+        addBasicInfo(result, event);
+        return true;
+    }
+
+    private void addPageVariable(ArrayList<String> result, Page page) throws UnsupportedEncodingException {
+        result.add(assembly(KEY_HIT_TYPE, VALUE_HIT_TYPE_EVENT));
+        result.add(assembly(KEY_EVENT_CATEGORY, page.getCategory()));
+    }
+
+    private void addEventVariable(ArrayList<String> result, Event event) throws UnsupportedEncodingException {
+        result.add(assembly(KEY_HIT_TYPE, VALUE_HIT_TYPE_EVENT));
+        result.add(assembly(KEY_EVENT_CATEGORY, event.getCategory()));
+        result.add(assembly(KEY_EVENT_ACTION, event.getAction()));
+    }
+
+    private void addPerformPreVariables(ArrayList<String> result, PerformanceInfo performanceInfo) throws UnsupportedEncodingException {
+        result.add(assembly(KEY_HIT_TYPE, VALUE_HIT_TYPE_TIMING));
+        result.add(assembly(KEY_PERFORM_CATEGORY, performanceInfo.getCategory()));
+        result.add(assembly(KEY_PERFORM_VARIABLE, performanceInfo.getVariableName()));
+    }
+
+    private void addBasicInfo(ArrayList<String> result, LoggingEvent event) throws UnsupportedEncodingException {
+        
+        //HTTP error 413 occurred if request entity is too large. Just getting the first tss.
+        String[] tss = event.getThrowableStrRep();
+        Level level = event.getLevel();
+        StringBuffer msg = new StringBuffer();
+        msg.append(getLayout().format(event));
+        if(tss != null) {
+            
+            if(level == org.tizen.common.util.log.Level.FATAL) {
+                result.add(assembly(KEY_FATAL, "FATAL"));
+            }
+            StringBuffer tBuffer = new StringBuffer();
+            
+            int i=0;
+            for(String ts: tss) {
+                if(MAX_STACK_TRACE > i + 1) {
+                    tBuffer.append(ts + "\n");
+                    i++;
+                }
+                else {
+                    break;
+                }
+            }
+            result.add(assembly(KEY_EXCEPTION, tBuffer.toString()));
+            
+            if(getLayout().ignoresThrowable()) {
+                msg.append(tBuffer);
+            }
+        }
+        result.add(assembly(KEY_ANALYTIC_VER, VALUE_ANALYTIC_VER));
+        result.add(assembly(KEY_TRACKING_ID, VALUE_TRACKING_ID));
+        result.add(assembly(KEY_CLIENT_ID, VALUE_CLIENT_ID));
+        result.add(assembly(KEY_APP_NAME, VALUE_APP_NAME));
+        result.add(assembly(KEY_APP_VER, VALUE_APP_VER));
+        result.add(assembly(KEY_CONTENT_DES, msg.toString()));
+    }
+}
\ No newline at end of file
diff --git a/org.tizen.common/src/org/tizen/common/util/log/Level.java b/org.tizen.common/src/org/tizen/common/util/log/Level.java
new file mode 100644 (file)
index 0000000..5ac85b0
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * BonYong Lee <bonyong.lee@samsung.com>
+ * Ho Namkoong <ho.namkoong@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+
+package org.tizen.common.util.log;
+
+
+public class Level extends org.apache.log4j.Level{
+    
+    private static final long serialVersionUID = 5540784843364335844L;
+    
+    /**
+     * Logging level page
+     */
+    public static final Level PAGE = new Level(25000, "PAGE", 5);
+    
+    /**
+     * Logging level event
+     */
+    public static final Level EVENT = new Level(23000, "EVENT", 5);
+    
+    /**
+     * Logging level performance start
+     */
+    public static final Level PERFORM_START = new Level(27000, "PERFORM_START", 5);
+    
+    /**
+     * Logging level performance end
+     */
+    public static final Level PERFORM_END = new Level(27000, "PERFFORM_END", 5);
+    
+    /**
+     * Logging level off
+     */
+    public static final Level OFF = new Level(org.apache.log4j.Level.OFF, Messages.LOGGER_OFF_DES);
+    
+    /**
+     * Logging level error
+     */
+    public static final Level ERROR = new Level(org.apache.log4j.Level.ERROR, Messages.LOGGER_ERROR_DES);
+    
+    /**
+     * Logging level info
+     */
+    public static final Level INFO = new Level(org.apache.log4j.Level.INFO, Messages.LOGGER_INFO_DES);
+    
+    /**
+     * Logging level debug
+     */
+    public static final Level DEBUG = new Level(org.apache.log4j.Level.DEBUG, Messages.LOGGER_DEBUG_DES);
+    
+    /**
+     * Logging level all
+     */
+    public static final Level ALL = new Level(org.apache.log4j.Level.ALL, Messages.LOGGER_ALL_DES);
+    
+    private String description;
+    
+    protected Level(int level, String levelStr, int syslogEquivalent) {
+        super(level, levelStr, syslogEquivalent);
+        this.description = "";
+    }
+    
+    protected Level(org.apache.log4j.Level level, String desc) {
+        this(level.toInt(), level.toString(), level.getSyslogEquivalent());
+        this.description = desc;
+    }
+    
+    /**
+     * Gets the description of the logger level
+     * @return logger level description
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public String getDescription() {
+        return description;
+    }
+    
+    
+    @Override
+    public int hashCode() {
+        // TODO Auto-generated method stub
+        return toString().hashCode();
+    }
+}
index 83f368e..120bf04 100755 (executable)
@@ -37,10 +37,17 @@ import org.tizen.common.ui.view.console.ConsoleManager;
 /**
  * Logger.
  * @author Changhyun Lee {@literal <changhyun1.lee@samsung.com>} (S-Core)
+ * @deprecated Use {@link org.slf4j.Logger}} instead.
  */
 public class Logger {
     private static String loggerName = Logger.class.getName();
 
+    
+    /**
+     * 
+     * @param status
+     * @deprecated Use {@link org.apache.log4j.Logger#log(org.apache.log4j.Priority, Object)} instead
+     */
     public static void log(IStatus status) {
         CommonPlugin plugin = CommonPlugin.getDefault();
         if (plugin != null) {
@@ -67,6 +74,11 @@ public class Logger {
         return "noname";
     }
 
+    /**
+     * 
+     * @param e
+     * @deprecated Use {@link org.apache.log4j.Logger#log(org.apache.log4j.Priority, Object, Throwable)} instead
+     */
     public static void log(Throwable e) {
         if (e instanceof CoreException) {
             log(new Status(IStatus.ERROR, getCallerName(), ((CoreException) e).getStatus().getSeverity(), e.getMessage(), e.getCause()));
@@ -74,24 +86,43 @@ public class Logger {
             log(new Status(IStatus.ERROR, getCallerName(), e.toString(), e));
         }
     }
-    
-    public static void debug( String message, Object... arguments )
-    {
-       
-    }
 
+    /**
+     * 
+     * @param message
+     * @param arguments
+     * @deprecated Use {@link org.slf4j.Logger#info(String, Object[])} instead
+     */
     public static void info(String message, Object... arguments) {
         log(new Status(Status.INFO, getCallerName(), getPossiblyFormattedString(message, arguments)));
     }
 
+    /**
+     * 
+     * @param message
+     * @param t
+     * @deprecated Use {@link org.slf4j.Logger#error(String, Throwable)} instead
+     */
     public static void error(Object message, Throwable t) {
         log(new Status(Status.ERROR, getCallerName(), message.toString(), t));
     }
 
+    /**
+     * 
+     * @param message
+     * @param arguments
+     * @deprecated Use {@link org.slf4j.Logger#error(String, Object[])} instead
+     */
     public static void error(String message, Object... arguments) {
         log(new Status(Status.ERROR, getCallerName(), getPossiblyFormattedString(message, arguments)));
     }
 
+    /**
+     * 
+     * @param message
+     * @param arguments
+     * @deprecated Use {@link org.slf4j.Logger#warn(String, Object[])} instead
+     */
     public static void warning(String message, Object... arguments) {
         log(new Status(Status.WARNING, getCallerName(), getPossiblyFormattedString(message, arguments)));
     }
@@ -101,4 +132,14 @@ public class Logger {
                                                   : message;
     }
 
+    /**
+     * 
+     * @param message
+     * @param args
+     * @deprecated Use {@link org.slf4j.Logger#debug(String, Throwable)}
+     */
+    public static void debug(String message, Object... args) {
+        // TODO Auto-generated method stub
+    }
+
 }
diff --git a/org.tizen.common/src/org/tizen/common/util/log/LoggerConstants.java b/org.tizen.common/src/org/tizen/common/util/log/LoggerConstants.java
new file mode 100644 (file)
index 0000000..774f8d7
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * BonYong Lee <bonyong.lee@samsung.com>
+ * Ho Namkoong <ho.namkoong@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+
+package org.tizen.common.util.log;
+
+import org.apache.log4j.Layout;
+
+public class LoggerConstants {
+    
+    /**
+     * Default conversion pattern
+     */
+    public static final String DEFAULT_CONVERSION_PATTERN = "[%-5p] %F(%L) - %m%n";
+    
+    /**
+     * Default buffer size
+     */
+    public static final int DEFAULT_BUFFER_SIZE = 5000;
+    
+    /**
+     * Default time period 
+     */
+    public static final long DEFAULT_TIMER_PERIOD = 3000;
+    
+    /**
+     * Default workspace key which will be used in {@link Layout}
+     */
+    public static final String KEY_WORKSPACE = "workspace";
+    
+    /**
+     * Default sdk home key which will be used in {@link Layout}
+     */
+    public static final String KEY_SDK_HOME = "tizensdk";
+    
+    /**
+     * File appender name
+     */
+    public static final String NAME_FILE_APPENDER = "TIZEN_FILE_APPENDER";
+    
+    /**
+     * Eclipse appender name
+     */
+    public static final String NAME_ECLIPSE_APPENDER = "TIZEN_ECLIPSE_APPENDER";
+    
+    /**
+     * Google appender name
+     */
+    public static final String NAME_GOOGLE_APPENDER = "TIZEN_GOOGLE_APPENDER";
+
+    /**
+     * Async appender name
+     */
+    public static final String NAME_ASYNC_APPENDER = "TIZEN_ASYNC_APPENDER";
+
+    /**
+     * User logger name
+     */
+    public static final String NAME_USER_LOGGER = "UserLogger";
+    
+    /**
+     * Default log file location
+     */
+    public static final String DEFAULT_LOG_LOCATION = "%X{" + LoggerConstants.KEY_WORKSPACE + "}/.metadata/log.%d{yyyy-MM-dd HH-mm-ss}";
+    
+}
diff --git a/org.tizen.common/src/org/tizen/common/util/log/Messages.java b/org.tizen.common/src/org/tizen/common/util/log/Messages.java
new file mode 100644 (file)
index 0000000..3621a19
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * BonYong Lee <bonyong.lee@samsung.com>
+ * Ho Namkoong <ho.namkoong@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.common.util.log;
+
+import org.eclipse.osgi.util.NLS;
+import org.tizen.common.CommonPlugin;
+
+public class Messages {
+    
+    private static final String BUNDLE_NAME = CommonPlugin.PLUGIN_ID + ".util.log.messages";//$NON-NLS-1$
+
+    private Messages() {
+        // Do not instantiate
+    }
+    
+    public static String UserLogger_EVENT_STRING;
+    public static String FileAppender_EXCEPTION_FLUSHING_BUFFER;
+    public static String FileAppender_EXCEPTION_CREATING_BUFFER;
+    public static String FileAppender_EXCEPTION_CREATING_LOGFILE;
+    public static String FileAppender_EXCEPTION_WRITING_LOG;
+    public static String FileAppender_EXCEPTION_DIRECTORY_EXISTING;
+    public static String LOGGER_OFF_DES;
+    public static String LOGGER_ERROR_DES;
+    public static String LOGGER_INFO_DES;
+    public static String LOGGER_DEBUG_DES;
+    public static String LOGGER_ALL_DES;
+    
+    static {
+        NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+    }
+}
diff --git a/org.tizen.common/src/org/tizen/common/util/log/TizenLog4Configurator.java b/org.tizen.common/src/org/tizen/common/util/log/TizenLog4Configurator.java
deleted file mode 100644 (file)
index 93ff866..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- *  Common
- *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: 
- * Ho Namkoong <ho.namkoong@samsung.com>
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Contributors:
- * - S-Core Co., Ltd
- *
- */
-
-package org.tizen.common.util.log;
-
-import java.io.InputStream;
-import java.net.URL;
-
-import org.apache.log4j.Appender;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.spi.Configurator;
-import org.apache.log4j.spi.LoggerRepository;
-
-public class TizenLog4Configurator implements Configurator  {
-
-    @Override
-    public void doConfigure(InputStream arg0, LoggerRepository arg1) {
-        // TODO Auto-generated method stub
-    }
-
-    @Override
-    public void doConfigure(URL arg0, LoggerRepository arg1) {
-        arg1.resetConfiguration();
-        Logger rootLogger = arg1.getRootLogger();
-        rootLogger.setLevel(Level.WARN);
-        rootLogger.removeAllAppenders();
-        Appender tizenAppender = new TizenLog4jAppender();
-        rootLogger.addAppender(tizenAppender);
-    }
-
-}
diff --git a/org.tizen.common/src/org/tizen/common/util/log/TizenLog4jAppender.java b/org.tizen.common/src/org/tizen/common/util/log/TizenLog4jAppender.java
deleted file mode 100644 (file)
index c492d9a..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *  Common
- *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: 
- * Ho Namkoong <ho.namkoong@samsung.com>
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Contributors:
- * - S-Core Co., Ltd
- *
- */
-
-package org.tizen.common.util.log;
-
-import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.Level;
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.log4j.spi.ThrowableInformation;
-
-public class TizenLog4jAppender extends AppenderSkeleton{
-    
-    @Override
-    public void close() {
-        // TODO Auto-generated method stub
-        
-    }
-
-    @Override
-    public boolean requiresLayout() {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
-    protected void append(LoggingEvent arg0) {
-        int level = arg0.getLevel().toInt();
-        ThrowableInformation tI = arg0.getThrowableInformation();
-        Throwable t = null;
-        if(tI != null) {
-            t = tI.getThrowable();
-        }
-        Object msg = arg0.getMessage();
-        String message = msg.toString();
-        
-        switch (level) {
-        case Level.ERROR_INT:
-            Logger.error(message, t);
-            break;
-        case Level.WARN_INT:
-            Logger.warning(message, t);
-            break;
-        case Level.DEBUG_INT:
-            Logger.debug(message, t);
-            break;
-        case Level.FATAL_INT:
-            Logger.error(message, t);
-            break;
-        case Level.INFO_INT:
-            Logger.info(message, t);
-            break;
-        default:
-            break;
-        }
-    }
-}
diff --git a/org.tizen.common/src/org/tizen/common/util/log/TizenLog4jConfigurator.java b/org.tizen.common/src/org/tizen/common/util/log/TizenLog4jConfigurator.java
new file mode 100644 (file)
index 0000000..547caa5
--- /dev/null
@@ -0,0 +1,145 @@
+/*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: 
+ * Ho Namkoong <ho.namkoong@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.common.util.log;
+
+import java.io.InputStream;
+import java.net.URL;
+import org.apache.log4j.AsyncAppender;
+import org.apache.log4j.EnhancedPatternLayout;
+import org.apache.log4j.Logger;
+import org.apache.log4j.MDC;
+import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.xml.DOMConfigurator;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.tizen.common.core.application.InstallPathConfig;
+import org.tizen.common.ui.page.preference.TizenBasePreferencePage;
+
+/**
+ * Configs the tizen logger
+ * 
+ *@author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+ */
+public class TizenLog4jConfigurator extends DOMConfigurator implements IPropertyChangeListener  {
+    
+    private static final EnhancedPatternLayout layout = new EnhancedPatternLayout();
+    
+    @Override
+    public void doConfigure(InputStream arg0, LoggerRepository arg1) {
+        // TODO Auto-generated method stub
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    @Override
+    public void doConfigure(URL arg0, LoggerRepository arg1) {
+        arg1.resetConfiguration();
+        layout.setConversionPattern(TizenBasePreferencePage.getLogConversionPattern());
+        configRootLogger(arg1);
+        configUserLogger();
+    }
+    
+    private void configUserLogger() {
+        Logger userLogger = Logger.getLogger(LoggerConstants.NAME_USER_LOGGER);
+        AsyncAppender asyncAppender = new AsyncAppender();
+        asyncAppender.setName(LoggerConstants.NAME_ASYNC_APPENDER);
+        GoogleAnalyticAppender googleAppender =  new GoogleAnalyticAppender(TizenBasePreferencePage.isUsage(), TizenBasePreferencePage.isPerform(), layout);
+        asyncAppender.addAppender(googleAppender);
+//        userLogger.addAppender(asyncAppender);
+        userLogger.setLevel(Level.ALL);
+    }
+
+    private void configRootLogger(LoggerRepository arg1) {
+        Logger rootLogger = arg1.getRootLogger();
+        rootLogger.removeAllAppenders();
+        rootLogger.setLevel(TizenBasePreferencePage.getLoggerLevel());
+        
+        MDC.put(LoggerConstants.KEY_WORKSPACE, ResourcesPlugin.getWorkspace().getRoot().getLocation().toString());
+        MDC.put(LoggerConstants.KEY_SDK_HOME, InstallPathConfig.getSDKPath());
+        FileAppender fileAppender = new FileAppender(TizenBasePreferencePage.getLogLocation(), layout);
+        rootLogger.addAppender(fileAppender);
+        MDC.remove(LoggerConstants.KEY_WORKSPACE);
+        MDC.remove(LoggerConstants.KEY_SDK_HOME);
+        
+        EclipseAppender eclipseAppender = new EclipseAppender(layout);
+        rootLogger.addAppender(eclipseAppender);
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    @Override
+    public void propertyChange(PropertyChangeEvent event) {
+        String property = event.getProperty();
+        
+        Logger rootLogger = Logger.getRootLogger();
+        Logger userLogger = Logger.getLogger(LoggerConstants.NAME_USER_LOGGER);
+        AsyncAppender asyncAppender = (AsyncAppender) userLogger.getAppender(LoggerConstants.NAME_ASYNC_APPENDER);
+        GoogleAnalyticAppender googleAppender = null;
+        if(asyncAppender != null) {
+            googleAppender = (GoogleAnalyticAppender) asyncAppender.getAppender(LoggerConstants.NAME_GOOGLE_APPENDER);
+        }
+        if(property.equals(TizenBasePreferencePage.OPTION_ID_LEVEL)) {
+            String loggerLevel = (String) event.getNewValue();
+            Level level = TizenBasePreferencePage.getLoggerLevel(loggerLevel);
+            rootLogger.setLevel(level);
+        }
+        else if(property.equals(TizenBasePreferencePage.OPTION_ID_REPORT)) {
+            if(asyncAppender != null && googleAppender != null) {
+                boolean isReport = (Boolean) event.getNewValue();
+                if(isReport) {
+                    asyncAppender.addAppender(googleAppender);
+                }
+                else {
+                    asyncAppender.removeAppender(googleAppender);
+                }
+            }
+        }
+        else if(property.equals(TizenBasePreferencePage.OPTION_ID_USAGE)) {
+            if(googleAppender != null) {
+                boolean isUsage = (Boolean) event.getNewValue();
+                googleAppender.setUsage(isUsage);
+            }
+        }
+        else if(property.equals(TizenBasePreferencePage.OPTION_ID_PERFORM)) {
+            if(googleAppender != null) {
+                boolean isPerform = (Boolean) event.getNewValue();
+                googleAppender.setUsage(isPerform);
+            }
+        }
+        else if(property.equals(TizenBasePreferencePage.OPTION_ID_CP)) {
+            String cp = (String) event.getNewValue();
+            layout.setConversionPattern(cp);
+        }
+    }
+
+}
diff --git a/org.tizen.common/src/org/tizen/common/util/log/UserLogger.java b/org.tizen.common/src/org/tizen/common/util/log/UserLogger.java
new file mode 100644 (file)
index 0000000..72cc88c
--- /dev/null
@@ -0,0 +1,351 @@
+/*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: 
+ * Ho Namkoong <ho.namkoong@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.common.util.log;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.apache.log4j.Logger;
+import org.tizen.common.util.StringUtil;
+import org.tizen.common.util.ThreadLocalMap;
+
+/**
+ * Logger for reporting usage and performance
+ * 
+ *@author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+ */
+public class UserLogger {
+
+    protected static ThreadLocalMap<String, Long> id2perform = new ThreadLocalMap<String, Long>();
+
+    private static final String FQCN = UserLogger.class.getName();
+    private static final SimpleDateFormat logDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+
+    private static Logger logger = Logger.getLogger(LoggerConstants.NAME_USER_LOGGER);
+
+    /**
+     * Report page information with a category
+     * @param category
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public static void page(String category) {
+        page(category, null);
+    }
+
+    /**
+     * Report page information with a category and exception.
+     * @param category
+     * @param t
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public static void page(String category, Throwable t) {
+        Page message = new Page(category);
+        logger.log(FQCN, Level.PAGE, message, t);
+    }
+    
+    /**
+     * Report event information with a category
+     * @param category
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public static void event(String category) {
+        event(category, StringUtil.EMPTY_STRING, null);
+    }
+
+    /**
+     * Report event information with a category and action
+     * @param category
+     * @param action
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public static void event(String category, String action) {
+        event(category, action, null);
+    }
+    
+    /**
+     * Report event information with a category, action and exception
+     * @param category
+     * @param action
+     * @param t
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public static void event(String category, String action, Throwable t) {
+        Event message = new Event(category, action);
+        logger.log(FQCN, Level.EVENT, message, t);
+    }
+
+    /**
+     * Report performance start information with a category
+     * @param category
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public static void start(String category) {
+        start(category, StringUtil.EMPTY_STRING);
+    }
+
+    /**
+     * Report performance start information with a category and variable name
+     * @param category
+     * @param variableName
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public static void start(String category, String variableName) {
+        long start = System.currentTimeMillis();
+        id2perform.put( category + variableName, start );
+        PerformanceInfo message = new PerformanceInfo(category, start, 0, variableName);
+        logger.log(FQCN, Level.PERFORM_START, message, null);
+    }
+
+    /**
+     * Report performance end information with a category
+     * @param category
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public static void end(String category) {
+        end(category, StringUtil.EMPTY_STRING);
+    }
+
+    /**
+     * Report performance end information with a category and variable name
+     * @param category
+     * @param variableName
+     * 
+     * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public static void end(String category, String variableName) {
+        long end = System.currentTimeMillis();
+        Long start = id2perform.remove(category + variableName);
+        if (null == start) {
+            return;
+        }
+        
+        PerformanceInfo message = new PerformanceInfo(category, start, end, variableName);
+        logger.log(FQCN, Level.PERFORM_END, message, null);
+    }
+    
+    /**
+     * Performance information
+     * 
+     *@author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+    public static class PerformanceInfo {
+        
+        final private String category;
+        final private long start;
+        final private long end;
+        final private String variableName;
+        final private String message;
+        
+        /**
+         * Constructor for a {@link PerformanceInfo} with a category, start time and end time
+         * @param category
+         * @param start
+         * @param end
+         * 
+         * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+         */
+        public PerformanceInfo(String category, long start, long end) {
+            this(category, start, end, null);
+        }
+        
+        /**
+         * Constructor for a {@link PerformanceInfo} with a category, start time, end time and variable name
+         * @param category
+         * @param start
+         * @param end
+         * @param variableName
+         * 
+         * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+         */
+        public PerformanceInfo(String category, long start, long end, String variableName) {
+            this.category = category;
+            this.start = start;
+            this.end = end;
+            this.variableName = variableName;
+            if(end == 0) {
+                if(StringUtil.isEmpty(variableName)) {
+                    this.message = String.format("[Category: %s] at %s", category, logDateFormat.format(new Date(start)));
+                }
+                else {
+                    this.message = String.format("[Category: %s\tVariable: %s] at %s", category, variableName, logDateFormat.format(new Date(start)));
+                }
+            }
+            else {
+                if(StringUtil.isEmpty(variableName)) {
+                    this.message = String.format("[Category: %s] at %s \t [%s(ms)]", category, logDateFormat.format(new Date(end)), getPerformanceString());
+                }
+                else{
+                    this.message = String.format("[Category: %s\tVariable: %s] at %s \t [%s(ms)]", category, variableName, logDateFormat.format(new Date(end)), getPerformanceString());
+                }
+            }
+        }
+
+        @Override
+        public String toString() {
+            return this.message;
+        }
+        
+        /**
+         * Gets the category
+         * @return category
+         */
+        public String getCategory() {
+            return category;
+        }
+        
+        /**
+         * Gets the variable name
+         * @return variable name
+         */
+        public String getVariableName() {
+            return variableName;
+        }
+        
+        /**
+         * Gets the performance time
+         * @return performance time
+         */
+        public String getPerformanceString() {
+            return String.format("%d", (this.end - this.start));
+        }
+    }
+      
+    /**
+     * Event information
+     * 
+     *@author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+     */
+      public static class Event {
+          
+          final private String category;
+          final private String action;
+          final private String message;
+          
+          /**
+           * Constructor for the {@link Event} with a category
+           * @param category
+           * 
+           * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+           */
+          public Event(String category) {
+              this(category, null);
+          }
+          
+          /**
+           * Constructor for the {@link Event} with a category and action
+           * @param category
+           * @param action
+           * 
+           * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+           */
+          public Event(String category, String action) {
+              this.category = category;
+              this.action = action;
+              
+              if(StringUtil.isEmpty(action)) {
+                  this.message = String.format(
+                          "[Category: %s]", category
+                          );
+              }
+              else {
+                  this.message = String.format(
+                          "[Category: %s\tAction: %s]", category,
+                          action);
+              }
+
+          }
+          
+          /**
+           * Gets the category
+           * @return category
+           * 
+           * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+           */
+          public String getCategory() {
+              return category;
+          }
+          
+          /**
+           * Gets the action
+           * @return action
+           * 
+           * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+           */
+          public String getAction() {
+              return action;
+          }
+          
+          @Override
+          public String toString() {
+              return message;
+          }
+      }
+      
+      /**
+       * Page information
+       * 
+       * @author Ho Namkoong {@literal <ho.namkoong@samsung.com>} (S-Core)
+       *
+       */
+      public static class Page {
+          
+          final private String category;
+          final private String message;
+          
+          /**
+           * Constructor for a {@link Page}
+           * @param category
+           */
+          public Page(String category) {
+              this.category = category;
+              this.message = String.format("[Category: %s]",
+                      this.category);
+          }
+          
+          /**
+           * Gets the category
+           * @return category
+           */
+          public String getCategory() {
+              return category;
+          }
+          
+          @Override
+          public String toString() {
+              return this.message;
+          }
+          
+          
+      }
+}
diff --git a/org.tizen.common/src/org/tizen/common/util/log/messages.properties b/org.tizen.common/src/org/tizen/common/util/log/messages.properties
new file mode 100644 (file)
index 0000000..3ec226c
--- /dev/null
@@ -0,0 +1,11 @@
+FileAppender_EXCEPTION_CREATING_BUFFER=Exception occurred while creating buffered writer.
+FileAppender_EXCEPTION_CREATING_LOGFILE=Exception occurred while creating log file: {0}.
+FileAppender_EXCEPTION_FLUSHING_BUFFER=Exception occurred while flushing buffer.
+FileAppender_EXCEPTION_WRITING_LOG=Exception occurred while writing log message.
+FileAppender_EXCEPTION_DIRECTORY_EXISTING=Log File {0} already exists as a directory.
+LOGGER_OFF_DES=OFF: the highest possible rank and is intended to turn off logging
+LOGGER_ERROR_DES=ERROR: error events that might still allow the application to continue running
+LOGGER_INFO_DES=INFO: informational messages that highlight the progress of the application at coarse-grained level
+LOGGER_DEBUG_DES=DEBUG: fine-grained informational events that are most useful to debug an application
+LOGGER_ALL_DES=ALL: the lowest possible rank and is intended to turn on all logging
+UserLogger_EVENT_STRING=Category: {0}\tAction: {1}
\ No newline at end of file
diff --git a/org.tizen.common/test/src/org/tizen/common/util/log/FileAppenderTest.java b/org.tizen.common/test/src/org/tizen/common/util/log/FileAppenderTest.java
new file mode 100644 (file)
index 0000000..f1a5644
--- /dev/null
@@ -0,0 +1,225 @@
+/*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * BonYong Lee <bonyong.lee@samsung.com>
+ * Ho Namkoong <ho.namkoong@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.common.util.log;
+
+import java.io.File;
+import java.io.IOException;
+import static junit.framework.Assert.*;
+
+import org.apache.log4j.EnhancedPatternLayout;
+import org.apache.log4j.Logger;
+import org.apache.log4j.spi.LoggingEvent;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.powermock.api.mockito.PowerMockito.*;
+import org.tizen.common.util.FileUtil;
+import org.tizen.common.util.StringUtil;
+
+public class FileAppenderTest {
+
+    private static final String TEST_LOG_FILE_FIRST = "log.2013-04-15 13'16'11";
+    private static final String TEST_LOG_FILE_SECOND = "test2.txt";
+    private static final String TEST_LOG_FILE_NOOP = "noop.txt";
+    private static final String RESULT = "A";
+    private static final String BUFFER_RESULT_FIRST = "AAAAA";
+    private static final String BUFFER_RESULT_SECOND = "BBBBB";
+    
+    private FileAppender appender;
+    private EnhancedPatternLayout TEST_LAYOUT = new EnhancedPatternLayout("%m");
+    private LoggingEvent event;
+    
+    /**
+     * Sets up the test
+     * 
+     * @throws Exception
+     */
+    @Before
+    public void setUp() throws Exception {
+        File testFile = new File(TEST_LOG_FILE_FIRST);
+        if(testFile.exists()) {
+            testFile.delete();
+        }
+        
+        File testFile2 = new File(TEST_LOG_FILE_SECOND);
+        if(testFile2.exists()) {
+            testFile2.delete();
+        }
+        
+        appender = new FileAppender(TEST_LOG_FILE_FIRST, TEST_LAYOUT, 5);
+        event = new LoggingEvent( null, Logger.getLogger( getClass() ), Level.ERROR, RESULT, null );
+    }
+
+    /**
+     * 
+     * TestCase for {@link FileAppender#append(LoggingEvent)}
+     * It tests timeout
+     * 
+     * @author ho.namkoong (ho.namkoong@samsung.com)
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void test_append_timeout() throws Exception {
+        appender.append(event);
+        String emptyResult = FileUtil.readTextFile(new File(TEST_LOG_FILE_FIRST), null);
+        assertEquals(StringUtil.EMPTY_STRING, emptyResult);
+        
+        Thread.sleep(4000);
+        
+        String result = FileUtil.readTextFile(new File(TEST_LOG_FILE_FIRST), null);
+        assertEquals(RESULT, result);
+    }
+    
+    /**
+     * 
+     * TestCase for {@link FileAppender#append(LoggingEvent)}
+     * It tests buffer overflow
+     * 
+     * @author ho.namkoong (ho.namkoong@samsung.com)
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void test_appender_bufferover() throws Exception {
+        event = new LoggingEvent( null, Logger.getLogger( getClass() ), Level.ERROR, BUFFER_RESULT_FIRST, null );
+        appender.append(event);
+        String result = FileUtil.readTextFile(new File(TEST_LOG_FILE_FIRST), null);
+        assertEquals(BUFFER_RESULT_FIRST, result);
+        
+        event = new LoggingEvent( null, Logger.getLogger( getClass() ), Level.ERROR, BUFFER_RESULT_SECOND, null );
+        appender.append(event);
+        result = FileUtil.readTextFile(new File(TEST_LOG_FILE_FIRST), null);
+        assertEquals(BUFFER_RESULT_FIRST +  BUFFER_RESULT_SECOND, result);
+    }
+    
+    /**
+     * 
+     * TestCase for {@link FileAppender#setFilePath(String)}
+     * 
+     * @author ho.namkoong (ho.namkoong@samsung.com)
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void test_setFilePath() throws Exception {
+        event = new LoggingEvent( null, Logger.getLogger( getClass() ), Level.ERROR, BUFFER_RESULT_FIRST, null );
+        appender.append(event);
+        String result = FileUtil.readTextFile(new File(TEST_LOG_FILE_FIRST), null);
+        assertEquals(BUFFER_RESULT_FIRST, result);
+        
+        appender.setFilePath(TEST_LOG_FILE_SECOND);
+        
+        event = new LoggingEvent( null, Logger.getLogger( getClass() ), Level.ERROR, BUFFER_RESULT_SECOND, null );
+        appender.append(event);
+        result = FileUtil.readTextFile(new File(TEST_LOG_FILE_FIRST), null);
+        assertEquals(BUFFER_RESULT_FIRST, result);
+        result = FileUtil.readTextFile(new File(TEST_LOG_FILE_SECOND), null);
+        assertEquals(BUFFER_RESULT_SECOND, result);
+    }
+    
+    /**
+     * 
+     * TestCase for {@link FileAppender#setBufferSize(int)}
+     * 
+     * @author ho.namkoong (ho.namkoong@samsung.com)
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void test_setBufferSize() throws Exception {
+        event = new LoggingEvent( null, Logger.getLogger( getClass() ), Level.ERROR, BUFFER_RESULT_FIRST, null );
+        appender.append(event);
+        String result = FileUtil.readTextFile(new File(TEST_LOG_FILE_FIRST), null);
+        assertEquals(BUFFER_RESULT_FIRST, result);
+        
+        appender.setBufferSize(10);
+        
+        event = new LoggingEvent( null, Logger.getLogger( getClass() ), Level.ERROR, BUFFER_RESULT_SECOND, null );
+        appender.append(event);
+        result = FileUtil.readTextFile(new File(TEST_LOG_FILE_FIRST), null);
+        assertEquals(BUFFER_RESULT_FIRST, result);
+        
+        Thread.sleep(4000);
+        
+        result = FileUtil.readTextFile(new File(TEST_LOG_FILE_FIRST), null);
+        assertEquals(BUFFER_RESULT_FIRST + BUFFER_RESULT_SECOND, result);
+    }
+    
+    /**
+     * 
+     * TestCase for {@link FileAppender#append(LoggingEvent)}
+     * It tests NOOP_OUTPUT_STREAM
+     * 
+     * @author ho.namkoong (ho.namkoong@samsung.com)
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void test_append_noop() throws Exception {
+        File noopFile = new File(TEST_LOG_FILE_NOOP);
+        
+        File mockFile = mock(File.class);
+        when(mockFile.exists()).thenReturn(false);
+        when(mockFile.getAbsoluteFile()).thenReturn(mockFile);
+        when(mockFile.getParentFile()).thenReturn(mockFile);
+        when(mockFile.mkdirs()).thenReturn(true);
+        when(mockFile.createNewFile()).thenThrow(new IOException());
+        
+        whenNew(File.class).withArguments(TEST_LOG_FILE_NOOP).thenReturn(mockFile);
+        event = new LoggingEvent( null, Logger.getLogger( getClass() ), Level.ERROR, BUFFER_RESULT_FIRST, null );
+        appender.append(event);
+        assertFalse(noopFile.exists());
+        
+    }
+    
+    /**
+     * 
+     * Tears down the test
+     * 
+     * @author ho.namkoong (ho.namkoong@samsung.com)
+     * 
+     * @throws Exception
+     */
+    @After
+    public void tearDown() throws Exception {
+        File testFile = new File(TEST_LOG_FILE_FIRST);
+        if(testFile.exists()) {
+            testFile.delete();
+        }
+        
+        File testFile2 = new File(TEST_LOG_FILE_SECOND);
+        if(testFile2.exists()) {
+            testFile2.delete();
+        }
+        
+        TEST_LAYOUT.setConversionPattern("%m");
+        appender.FILE_OUTPUT_STREAM.close();
+        appender = null;
+    }
+    
+}
diff --git a/org.tizen.common/test/src/org/tizen/common/util/log/GoogleAnalyticAppenderTest.java b/org.tizen.common/test/src/org/tizen/common/util/log/GoogleAnalyticAppenderTest.java
new file mode 100644 (file)
index 0000000..f55adb8
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ *  Common
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * BonYong Lee <bonyong.lee@samsung.com>
+ * Ho Namkoong <ho.namkoong@samsung.com>
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.common.util.log;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+import static junit.framework.Assert.*;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.spi.LoggingEvent;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.slf4j.LoggerFactory;
+import org.tizen.common.util.log.UserLogger.Event;
+import org.tizen.common.util.log.UserLogger.Page;
+import org.tizen.common.util.log.UserLogger.PerformanceInfo;
+
+import static org.powermock.api.mockito.PowerMockito.*;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({GoogleAnalyticAppender.class})
+@PowerMockIgnore(value = {"org.slf4j.*", "org.apache.log4j.*"})
+public class GoogleAnalyticAppenderTest
+{
+    private org.slf4j.Logger logger = LoggerFactory.getLogger(this.getClass());
+    private boolean connected = true;
+    
+    /**
+     * Sets up the test
+     * 
+     * @throws Exception
+     */
+    @Before
+    public void setUp() throws Exception {
+        final URL u = new URL( GoogleAnalyticAppender.URL_GOOGLE_ANALYTIC );
+        HttpURLConnection con = null;
+        try {
+            con = (HttpURLConnection) u.openConnection();
+            con.setDoOutput(true);
+            con.getOutputStream();
+        } catch (IOException e) {
+            connected = false;
+        }
+        finally {
+            if(con != null) {
+            con.disconnect();
+            }
+        }
+    }
+
+    /**
+     * 
+     * TestCase for {@link GoogleAnalyticAppender#append(LoggingEvent)}
+     * 
+     * @author ho.namkoong (ho.namkoong@samsung.com)
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void test_append() throws Exception
+    {
+        if(!connected) {
+            logger.error("Network to the google analytics is not connected");
+            URL mockUrl = mock(URL.class);
+            HttpURLConnection mockCon = mock(HttpURLConnection.class);
+            OutputStream mockOutputStream = mock(OutputStream.class);
+            when(mockCon.getOutputStream()).thenReturn(mockOutputStream);
+            when(mockCon.getResponseCode()).thenReturn(200);
+            when(mockUrl.openConnection()).thenReturn(mockCon);
+            whenNew(URL.class).withArguments(GoogleAnalyticAppender.URL_GOOGLE_ANALYTIC).thenReturn(mockUrl);
+            OutputStreamWriter mockWriter = mock(OutputStreamWriter.class);
+            whenNew(OutputStreamWriter.class).withAnyArguments().thenReturn(mockWriter);
+        }
+        
+        final GoogleAnalyticAppender appender = new GoogleAnalyticAppender(true, true);
+        Logger logger = Logger.getLogger(this.getClass());
+        LoggingEvent event = new LoggingEvent( null, logger, Level.ERROR, "TI", null );
+        appender.append(event);
+        assertTrue(appender.rc >= 200 && appender.rc < 300);
+        
+        event = new LoggingEvent(null, logger, Level.PAGE, new Page("Page category"), null);
+        appender.append(event);
+        assertTrue(appender.rc >= 200 && appender.rc < 300);
+        appender.rc = 0;
+        
+        event = new LoggingEvent(null, logger, Level.EVENT, new Event("Event Category", "Event Action"), null);
+        appender.append(event);
+        assertTrue(appender.rc >= 200 && appender.rc < 300);
+        appender.rc = 0;
+        
+        long start = System.currentTimeMillis();
+        event = new LoggingEvent(null, logger, Level.PERFORM_START, new PerformanceInfo("Performance category", start, 0, "Performance variable"), null);
+        appender.append(event);
+        assertTrue(appender.rc >= 200 && appender.rc < 300);
+        appender.rc = 0;
+        
+        long end = System.currentTimeMillis();
+        event = new LoggingEvent(null, logger, Level.PERFORM_END, new PerformanceInfo("Performance category", start, end, "Performance variable"), null);
+        appender.append(event);
+        assertTrue(appender.rc >= 200 && appender.rc < 300);
+        appender.rc = 0;
+        
+        try {
+            makeException(5);
+        }
+        catch (IllegalStateException e) {
+            event = new LoggingEvent(null, logger, Level.ERROR, "Test Exception", e);
+            appender.append(event);
+            assertTrue(appender.rc >= 200 && appender.rc < 300);
+            appender.rc = 0;
+        }
+    }
+
+    private void makeException(int i) {
+        if(i < 1) {
+            throw new IllegalStateException("Test Exception");
+        }
+        makeException(i-1);
+    }
+    
+    
+
+}
\ No newline at end of file
diff --git a/package/addingFiles/documents/shortcuts.pdf b/package/addingFiles/documents/shortcuts.pdf
new file mode 100644 (file)
index 0000000..b672489
Binary files /dev/null and b/package/addingFiles/documents/shortcuts.pdf differ
index 9dfcc8a..a34168e 100644 (file)
@@ -1,3 +1,56 @@
+* 2.1.30
+- Fixed bug that cannot print "error message:" and added to check whether app is RO app
+- Added web app error messages
+- Changed default pull/push timeout from 5000 ms to 30000 ms
+- Fixed sonar violations
+== kh5325.kim <kh5325.kim@samsung.com> 2013-04-16
+* 2.1.29
+- Fix logger bug.
+== gune.kim <gune.kim@samsung.com> 2013-04-15 19:17
+* 2.1.28
+- Added SdbCommand#getResultLineStrings() method.
+== gune.kim <gune.kim@samsung.com> 2013-04-15 17:39
+* 2.1.27
+- Update icon.png
+== changhyun1.lee <changhyun1.lee@samsung.com> 2013-04-15 13:34
+* 2.1.26
+- Added a menu that has a link to Tizen web site
+- Improved the UX of error messages occurred when you delete or rename file
+- Modified pkgcmd's output message
+== kh5325.kim <kh5325.kim@samsung.com> 2013-04-13
+* 2.1.25
+- updated tizen web ui fw to 0.2.23
+== jihoon80.song <jihoon80.song@samsung.com> 2013-04-11 14:25
+* 2.1.24
+- Added Help content base url
+== changhyun1.lee <changhyun1.lee@samsung.com> 2013-04-10 20:43
+* 2.1.23
+- Fixed RDS to sdbd developer permission
+- Fixed password checker exception rule for sign
+- Added Tizen IDE shortcuts pdf file and menu
+- Updated Tizen Web UI Framework to 0.2.22
+- Supports root command
+== kh5325.kim <ho.namkoong@samsung.com> 2013-04-10
+* 2.1.22
+- fix to get device type
+== hyunsik.noh <hyunsik.noh@samsung.com> 2013-04-08 12:19
+* 2.1.16
+- Fixed template attribute (data-inline)
+== changhyun1.lee <changhyun1.lee@samsung.com> 2013-04-07 20:32
+* 2.1.15
+- Updated tizen web ui fw to 0.2.21
+- Refactoring signing password validation check logic
+- Fixed warning of Basic Template
+- Fixed to use /usr/bin/dlogutil
+== kh5325.kim <kh5325.kim@samsung.com> 2013-04-06
+* 2.1.14
+- Restored RDS's installation directory and RDS's installation command.
+== gune.kim <gune.kim@samsung.com> 2013-04-04 20:59
+* 2.1.13
+- Changed the default required version in config.xml's tizen:application tag attribute
+- Fixed NPE about the removeFile method in EclipseFileHandler
+- Fixed HashSigner bugs
+== jihoon80.song <jihoon80.song@samsung.com> 2013-04-03
 * 2.1.12
 - Added context help ids and HelpToolTip
 == donghyuk yang <donghyuk.yang@samsung.com> 2013-04-02
index 248b6c6..7e2317d 100644 (file)
@@ -1,4 +1,4 @@
-Version:2.1.12
+Version:2.1.30
 Source:common-eplugin
 Maintainer:kangho kim <kh5325.kim@samsung.com>, yoonki park <yoonki.park@samsung.com>, hyunsik non <hyunsik.noh@samsung.com>, taeyoung son <taeyoung2.son@samsung.com>, gune Kim <gune.kim@samsung.com>, ho namkoong <ho.namkoong@samsung.com>, hyeongseok heo <hyeong-seok.heo@samsung.com>, gyeongseok seo <gyeongseok.seo@samsung.com>, jihoon song <jihoon80.song@samsung.com>, changhyun lee <changhyun1.lee@samsung.com>, bonyong lee <bonyong.lee@samsung.com>