Added remote-input feature 26/77926/14
authorWonkeun Oh <wonkeun.oh@samsung.com>
Thu, 9 Apr 2015 04:41:33 +0000 (13:41 +0900)
committerInHong Han <inhong1.han@samsung.com>
Thu, 11 Aug 2016 02:42:20 +0000 (19:42 -0700)
Change-Id: Ib606d71d09b9bc8e69244ea7dee5296e67f13f8b

135 files changed:
configure.ac
ism/configs/global
ism/data/Makefile.am
ism/data/remote-input/Makefile.am [new file with mode: 0644]
ism/data/remote-input/air.htm [new file with mode: 0644]
ism/data/remote-input/airinput.htm [new file with mode: 0644]
ism/data/remote-input/airsetting.htm [new file with mode: 0644]
ism/data/remote-input/ajax-loader.gif [new file with mode: 0644]
ism/data/remote-input/ajaxCaller.js [new file with mode: 0644]
ism/data/remote-input/avahi.htm [new file with mode: 0644]
ism/data/remote-input/custom3.css [new file with mode: 0644]
ism/data/remote-input/game_mode.htm [new file with mode: 0644]
ism/data/remote-input/imgs/a_bt.png [new file with mode: 0644]
ism/data/remote-input/imgs/a_bt_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/air_bt.png [new file with mode: 0644]
ism/data/remote-input/imgs/air_bt_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/air_click_bt.png [new file with mode: 0644]
ism/data/remote-input/imgs/air_click_bt_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/air_panel_bg.png [new file with mode: 0644]
ism/data/remote-input/imgs/apps.png [new file with mode: 0644]
ism/data/remote-input/imgs/apps_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/b_bt.png [new file with mode: 0644]
ism/data/remote-input/imgs/b_bt_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/back.png [new file with mode: 0644]
ism/data/remote-input/imgs/back_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/c_bt.png [new file with mode: 0644]
ism/data/remote-input/imgs/c_bt_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/channel.png [new file with mode: 0644]
ism/data/remote-input/imgs/channel_down.png [new file with mode: 0644]
ism/data/remote-input/imgs/channel_down_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/channel_up.png [new file with mode: 0644]
ism/data/remote-input/imgs/channel_up_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/chlist.png [new file with mode: 0644]
ism/data/remote-input/imgs/chlist_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/exit.png [new file with mode: 0644]
ism/data/remote-input/imgs/exit_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/favicon.ico [new file with mode: 0644]
ism/data/remote-input/imgs/game_a.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_a_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_air.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_air_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_b.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_b_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_background.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_c.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_c_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_d.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_d_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_down.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_down_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_exit.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_exit_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_left.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_left_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_logo.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_menu.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_menu_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_right.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_right_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_select.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_select_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_set.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_set_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_title.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_up.png [new file with mode: 0644]
ism/data/remote-input/imgs/game_up_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/info.png [new file with mode: 0644]
ism/data/remote-input/imgs/info_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/menu.png [new file with mode: 0644]
ism/data/remote-input/imgs/menu_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/modeswitcher.png [new file with mode: 0644]
ism/data/remote-input/imgs/modeswitcher_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/modeswitcher_to_mouse.png [new file with mode: 0644]
ism/data/remote-input/imgs/modeswitcher_to_tv.png [new file with mode: 0644]
ism/data/remote-input/imgs/mouse_panel_bg.png [new file with mode: 0644]
ism/data/remote-input/imgs/mute.png [new file with mode: 0644]
ism/data/remote-input/imgs/mute_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/power.png [new file with mode: 0644]
ism/data/remote-input/imgs/power_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/remote_keyboard_logo.png [new file with mode: 0644]
ism/data/remote-input/imgs/remotekeyboard_bg.png [new file with mode: 0644]
ism/data/remote-input/imgs/remotekeyboard_remocon_bg.png [new file with mode: 0644]
ism/data/remote-input/imgs/remotekeyboard_remocon_bg3.png [new file with mode: 0644]
ism/data/remote-input/imgs/reset_bt.png [new file with mode: 0644]
ism/data/remote-input/imgs/reset_bt_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/return.png [new file with mode: 0644]
ism/data/remote-input/imgs/return_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/scrollbar.png [new file with mode: 0644]
ism/data/remote-input/imgs/source.png [new file with mode: 0644]
ism/data/remote-input/imgs/source_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/volume.png [new file with mode: 0644]
ism/data/remote-input/imgs/volume_down.png [new file with mode: 0644]
ism/data/remote-input/imgs/volume_down_pressed.png [new file with mode: 0644]
ism/data/remote-input/imgs/volume_up.png [new file with mode: 0644]
ism/data/remote-input/imgs/volume_up_pressed.png [new file with mode: 0644]
ism/data/remote-input/index.htm [new file with mode: 0644]
ism/data/remote-input/ise-default.help [new file with mode: 0644]
ism/data/remote-input/jquery-2.0.2.min.js [new file with mode: 0644]
ism/data/remote-input/jquery.mobile-1.3.1.css [new file with mode: 0644]
ism/data/remote-input/jquery.mobile-1.3.1.min.css [new file with mode: 0644]
ism/data/remote-input/jquery.mobile-1.3.1.min.js [new file with mode: 0644]
ism/data/remote-input/jquery.mobile-1.3.1_custom.css [new file with mode: 0644]
ism/data/remote-input/jquery.mobile.structure-1.3.1.css [new file with mode: 0644]
ism/data/remote-input/key_mode.htm [new file with mode: 0644]
ism/data/remote-input/mouse.htm [new file with mode: 0644]
ism/data/remote-input/remote_input.css [new file with mode: 0644]
ism/data/remote-input/remote_input.js [new file with mode: 0644]
ism/data/remote-input/shortcut_icon.png [new file with mode: 0644]
ism/data/remote-input/test.htm [new file with mode: 0644]
ism/data/remote-input/testpage.htm [new file with mode: 0644]
ism/data/remote-input/tv.htm [new file with mode: 0644]
ism/data/remote-input/tv2.htm [new file with mode: 0644]
ism/data/remote-input/tv_mode.htm [new file with mode: 0644]
ism/data/remote-input/tv_mode.js [new file with mode: 0644]
ism/data/remote-input/util.js [new file with mode: 0644]
ism/data/remote-input/web-helper-client.js [new file with mode: 0644]
ism/extras/efl_panel/Makefile.am
ism/extras/efl_panel/MotionDataType.h [new file with mode: 0644]
ism/extras/efl_panel/isf_panel_efl.cpp
ism/extras/efl_panel/motion_input.cpp [new file with mode: 0644]
ism/extras/efl_panel/motion_input.h [new file with mode: 0644]
ism/extras/efl_panel/remote_input.cpp [new file with mode: 0644]
ism/extras/efl_panel/remote_input.h [new file with mode: 0644]
ism/extras/efl_panel/websocketserver.cpp [new file with mode: 0644]
ism/extras/efl_panel/websocketserver.h [new file with mode: 0644]
ism/modules/panelagent/ecoresocket/ecore_socket_panel_agent_module.cpp [changed mode: 0644->0755]
ism/src/isf_control.cpp
ism/src/isf_control.h
ism/src/isf_imcontrol_client.cpp
ism/src/isf_imcontrol_client.h
ism/src/isf_info_manager.cpp
ism/src/isf_info_manager.h
ism/src/scim_config_path.h
ism/src/scim_trans_commands.h
packaging/isf.spec

index 4d7dc7b..a5faff7 100644 (file)
@@ -333,6 +333,12 @@ PKG_CHECK_MODULES(APP_CONTROL, [capi-appfw-app-control])
 # Check appfw library
 PKG_CHECK_MODULES(APPFW, [capi-appfw-application])
 
+# Check package manager
+PKG_CHECK_MODULES(OPENCV, [opencv])
+
+# Check package manager
+PKG_CHECK_MODULES(LIBWEBSOCKETS, [libwebsockets])
+
 # Check core package manager
 PKG_CHECK_MODULES(PKGMGR_INFO, [pkgmgr-info],
                   [ISF_HAS_PKGMGR_INFO=yes],
index 0b2a688..bd675f4 100755 (executable)
@@ -18,3 +18,4 @@
 /SupportHWKeyboardMode = true
 /DefaultKbdModeChangerProgram = org.tizen.isf-kbd-mode-changer
 /LockScreenClassName = LOCK_SCREEN, hub-idlescreen
+/LaunchRemoteInput = true
index 8ce9648..ef8edce 100644 (file)
@@ -22,3 +22,36 @@ SUBDIRS                      = icons pixmaps
 
 isfshelldir    = /etc/profile.d/
 isfshell_DATA  = isf.sh
+
+webdir = /usr/share/scim/remote-input
+web_DATA =  remote-input/air.htm \
+            remote-input/airinput.htm \
+            remote-input/airsetting.htm \
+            remote-input/ajax-loader.gif \
+            remote-input/ajaxCaller.js \
+            remote-input/custom3.css \
+            remote-input/game_mode.htm \
+            remote-input/index.htm \
+            remote-input/test.htm \
+            remote-input/testpage.htm \
+            remote-input/avahi.htm \
+            remote-input/jquery-2.0.2.min.js \
+            remote-input/jquery.mobile-1.3.1.css \
+            remote-input/jquery.mobile-1.3.1.min.css \
+            remote-input/jquery.mobile-1.3.1.min.js \
+            remote-input/jquery.mobile-1.3.1_custom.css \
+            remote-input/jquery.mobile.structure-1.3.1.css \
+            remote-input/key_mode.htm \
+            remote-input/mouse.htm \
+            remote-input/remote_input.css \
+            remote-input/remote_input.js \
+            remote-input/shortcut_icon.png \
+            remote-input/tv.htm \
+            remote-input/tv2.htm \
+            remote-input/tv_mode.htm \
+            remote-input/tv_mode.js \
+            remote-input/util.js \
+            remote-input/web-helper-client.js
+
+webimgsdir = /usr/share/scim/remote-input/imgs
+webimgs_DATA = remote-input/imgs/*
diff --git a/ism/data/remote-input/Makefile.am b/ism/data/remote-input/Makefile.am
new file mode 100644 (file)
index 0000000..e04c26e
--- /dev/null
@@ -0,0 +1,66 @@
+## Makefile.am -- Process this file with automake to produce Makefile.in
+## Copyright (C) 2008 SAMSUNG
+##
+
+MAINTAINERCLEANFILES   = Makefile.in
+CLEANFILES              = *.bak
+
+SUBDIRS                        =
+
+icondir                        = @ISF_ICONDIR@
+icon_DATA              = @ISE_NAME@.png
+
+
+helpdir                        = @ISF_MODULEDIR@/Helper
+help_DATA               = @ISE_NAME@.help
+
+
+
+webdir = /usr/share/scim/remote-input
+web_DATA = index.htm\
+            ajaxCaller.js\
+            util.js\
+            mouse.htm\
+            key_mode.htm\
+            tv_mode.htm\
+            tv.htm\
+            game_mode.htm\
+            ajax-loader.gif\
+            icons-18-black.png\
+            icons-18-white.png\
+            icons-36-black.png\
+            icons-36-white.png\
+            ise-wifi-keyboard.png\
+            jquery.mobile-1.3.1.min.css\
+            jquery.mobile-1.3.1.css\
+            remote_input.css\
+            remote_input.js\
+            custom3.css\
+            jquery.mobile-1.3.1.min.js\
+            jquery-2.0.2.min.js\
+            tizenbrand.png\
+            mouse_pad.png\
+            remotekeyboard_03.png\
+            remotekeyboard_07.png\
+            remotekeyboard_11.png\
+            remotekeyboard_12.png\
+            remotekeyboard_14.png\
+            remotekeyboard_16.png\
+            remotekeyboard_19.png\
+            remotekeyboard_22.png\
+            remotekeyboard_24.png\
+            remotekeyboard_25.png\
+            remotekeyboard_27.png\
+            remotekeyboard_31.png\
+            remotekeyboard_32.png\
+            remotekeyboard_33.png\
+            remotekeyboard_37.png\
+            remotekeyboard_38.png\
+            remotekeyboard_39.png\
+            remotekeyboard_bg.png\
+            remotekeyboard_remocon_bg.png\
+            remocon.png\
+            mouse.png\
+            keyboard.png\
+            scrollbar.png\
+            wifikeyboard.png
diff --git a/ism/data/remote-input/air.htm b/ism/data/remote-input/air.htm
new file mode 100644 (file)
index 0000000..0be44b2
--- /dev/null
@@ -0,0 +1,215 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Tizen Remote Input</title>
+    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
+    <link rel="icon" href="/favicon.ico" type="image/x-icon">
+    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"/>
+     <script src="ajaxCaller.js" type="text/javascript"> </script>
+    <link rel="stylesheet" href="remote_input.css" type="text/css"/>
+     <script src="util.js" type="text/javascript"> </script>
+    <script src="jquery-2.0.2.min.js"></script>
+
+
+
+</head>
+
+<body id="by">
+<script>
+
+
+        // Callback incremental index
+        var id_num = 0;
+        var ori;
+        var MOUSE_CLICK = 555;
+        var KEY_MENU = 10001;
+        var KEY_HOME = 10002;
+        var KEY_BACK = 10003;
+        var scroll_pre_x = 0;
+        var scroll_pre_y = 0;
+        var cur_air_mode = 0;
+
+        function cbAjax(text, headers, callingContext){
+            id_num++;
+            return true;
+        }
+        function sendKeyEvent(keyCode){
+            var bodyVars = {id:id_num, key:'event', value:keyCode}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+        function sendMouse_KeyEvent(mouseCode) {
+            var bodyVars = {id:id_num, key:'mouse_key', value:mouseCode}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendMouse_MoveEvent(coordinate) {
+            var bodyVars = {id:id_num, key:'mouse_move', value:coordinate}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendWheel_MoveEvent(coordinate) {
+            var bodyVars = {id:id_num, key:'wheel_move', value:coordinate}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendAir_Input(coordinate) {
+            var bodyVars = {id:id_num, key:'air_input', value:coordinate}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function airModeChanged(to) {
+                event.preventDefault();
+                var air_input_bt = document.getElementById('air_input_mode');
+                air_input_bt.style.background = "url(imgs/" + to + ")";
+                air_input_bt.style.backgroundRepeat = "no-repeat";
+                air_input_bt.style.backgroundSize = "auto 100%";
+                air_input_bt.style.backgroundPosition = "center";
+            }
+        function gyro_event_listener(event) {
+
+                    var x = event.accelerationIncludingGravity.x;
+                    var y = event.accelerationIncludingGravity.y;
+                    var z = event.accelerationIncludingGravity.z;
+                    var r = event.rotationRate;
+                    var data;
+
+
+
+
+                    if(x!=null || y!=null || z!=null || r!=null) {
+
+                        var gyro_a = r.alpha;
+                        var gyro_b = r.beta;
+                        var gyro_g = r.gamma;
+
+                        var UserAgent = navigator.userAgent.toLowerCase();
+                        if(UserAgent.indexOf("android") != -1 ) {
+                            gyro_a *=100;
+                            gyro_b *=100;
+                            gyro_g *=100;
+                        }
+                        tb_gyro.innerHTML ="Acceleration</br> x:0.01,y:-0.05,z:10</br>"+"x: " + x + " ,</br>y: " + y + " ,</br>z: " + z +"</br></br>Rotation Rate</br>a:-4, b:0.8, g:-0.2 </br>"+ "a: " + gyro_a + " ,</br>b: " + gyro_b + " ,</br>g: " +gyro_g;
+
+                        //var x_offset = (- x_sin * gyro_a - z_sin * gyro_g);
+                        //var y_offset = (x_sin * gyro_g - z_sin * gyro_a);
+                        //data = parseInt(x_offset).toString() + "," + parseInt(y_offset).toString();
+                        //tb_gyro.innerHTML = data;
+                       // sendAir_Input(data);
+                    }
+        }
+
+        function sendevent(form){
+            if (form == "sys_btn_home2"){
+                sendKeyEvent(KEY_HOME);
+            }
+            else if (form == "sys_btn_back2"){
+                sendKeyEvent(KEY_BACK);
+            }
+            else if (form == "bt_air_click"){
+                sendMouse_KeyEvent(MOUSE_CLICK);
+            }
+            else if (form == "air_input_mode"){
+                if (cur_air_mode == 0 ) {
+                    airModeChanged("air_bt.png");
+                    cur_air_mode = 1;
+                    if(window.DeviceMotionEvent) {
+                        window.addEventListener('devicemotion', gyro_event_listener);
+                    }
+                }
+                else{
+                    airModeChanged("air_bt_pressed.png");
+                    cur_air_mode = 0;
+                    if(window.DeviceMotionEvent) {
+                        window.removeEventListener('devicemotion', gyro_event_listener);
+                    }
+                }
+            }
+
+        }
+        function home_icon_add(title){
+            var home_page_uri = "http://moakey.com/tizen_tv/list.php";
+            var home_icon_uri = "http://" + document.domain +":8182/shortcut_icon.png";
+
+            var naver_UrlScheme= "intent://addshortcut?url="+home_page_uri+"%3F"+"&icon="+home_icon_uri+"&title="+title+"&oq="+title+"&serviceCode=nstore&version=7#Intent;scheme=naversearchapp;action=android.intent.action.VIEW;category=android.intent.category.BROWSABLE;package=com.nhn.android.search;end";
+            var UserAgent = navigator.userAgent.toLowerCase();
+
+            if(UserAgent.indexOf("iphone") == -1 && UserAgent.indexOf("ipad") == -1 && UserAgent.indexOf("tizen") == -1) {
+                alert('Add the ' + title +'shortCut icon');
+                var home_icon_add_frame=document.getElementById("home_icon_add_frame");
+                    home_icon_add_frame.src=naver_UrlScheme;
+            }else{
+                alert("Not surpport in iOS, Tizen ");
+            }
+        }
+
+        $(document).ready(function() {
+
+            var obj = document.getElementById('by');
+            obj.style.height =  $(document).height() + "px";
+
+        });
+
+</script>
+    <!-- MOUSE MODE -->
+    <div id="keymode"  data-role="page" data-fullscreen="true" class ="visible">
+       <table class="tb1" >
+        <!-- Header -->
+            <tr>
+                <td class="t_cell t_cell_header cell_width33 cell_height7 logo" onclick="home_icon_add('Tizen_Input')"></td>
+                <td class="t_cell cell_width33 "></td>
+                <td id ="air_input_mode" class="t_cell cell_width33 air_input_mode" onclick="javascript:sendevent(this.id)"></td>
+            </tr>
+            <tr>
+                <td  class="t_cell" colspan="3">
+                        <!-- Content -->
+                        <table class="tb1">
+                                <!-- Content_space-top -->
+                                <tr>
+                                    <td class="t_cell cell_height15 t_cell_vertical_align_bottom" >
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <td>
+                                        <table id="air_panel" class="tb1_thin_border air_panel ">
+                                            <tr>
+                                                <td class="t_cell_thin_border cell_height25" colspan="3">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td class="t_cell_thin_border cell_width15">
+                                                </td>
+                                                <td id="bt_air_click" class="t_cell_thin_border air_bt" ontouchstart="javascript:sendevent(this.id)">
+                                                </td>
+                                                <td class="t_cell_thin_border cell_width15">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td class="t_cell_thin_border ">
+                                                </td>
+                                                <td id ="tb_gyro" class="t_cell_thin_border">
+                                                </td>
+                                                <td class="t_cell_thin_border">
+                                                </td>
+                                            </tr>
+                                        </table>
+                                    </td>
+                                </tr>
+                                <!-- Content_space-bottom -->
+                        </table>
+                </td>
+            </tr>
+        <!-- Footer -->
+            <tr>
+                <td id="sys_btn_home2" class="t_cell_footer apps" ontouchstart="javascript:sendevent(this.id)"></td>
+                <td id="sys_btn_modechange2" class="t_cell_footer modeswitcher_to_tv" ></td>
+                <td id="sys_btn_back2" class="t_cell_footer back" ontouchstart="sendevent(this.id)"></td>
+            </tr>
+
+        </table>
+    </div>
+<iframe id="home_icon_add_frame" style="display:none;width:0px;height:0px;"></iframe>
+<!-- end page 2 -->
+</body>
+</html>
+
+
diff --git a/ism/data/remote-input/airinput.htm b/ism/data/remote-input/airinput.htm
new file mode 100644 (file)
index 0000000..69ed490
--- /dev/null
@@ -0,0 +1,383 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Tizen Remote Input</title>
+    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
+    <link rel="icon" href="/favicon.ico" type="image/x-icon">
+    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"/>
+     <script src="ajaxCaller.js" type="text/javascript"> </script>
+    <link rel="stylesheet" href="remote_input.css" type="text/css"/>
+     <script src="util.js" type="text/javascript"> </script>
+    <script src="jquery-2.0.2.min.js"></script>
+
+
+
+</head>
+
+<body id="by">
+<script>
+
+
+        // Callback incremental index
+        var id_num = 0;
+        var ori;
+        var CAL_FLUSH_TIMEOUT = 3000;
+
+        var MOUSE_CLICK = 555;
+        var KEY_MENU = 10001;
+        var KEY_HOME = 10002;
+        var KEY_BACK = 10003;
+        var scroll_pre_x = 0;
+        var scroll_pre_y = 0;
+        var cur_air_mode = 0;
+        var cur_reset_mode = 0;
+        var gry_basic_a = 0;
+        var gry_basic_b = 0;
+        var gry_basic_g = 0;
+        var gry_sum_a = 0;
+        var gry_sum_b = 0;
+        var gry_sum_g = 0;
+        var gry_sum_count = 0;
+        var progress = ["",".","..","...","...."];
+        var progress_count=0;
+
+        function cbAjax(text, headers, callingContext){
+            id_num++;
+            return true;
+        }
+        function sendKeyEvent(keyCode){
+            var bodyVars = {id:id_num, key:'event', value:keyCode}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+        function sendMouse_KeyEvent(mouseCode) {
+            var bodyVars = {id:id_num, key:'mouse_key', value:mouseCode}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendMouse_MoveEvent(coordinate) {
+            var bodyVars = {id:id_num, key:'mouse_move', value:coordinate}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendWheel_MoveEvent(coordinate) {
+            var bodyVars = {id:id_num, key:'wheel_move', value:coordinate}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendAir_Input(coordinate) {
+            var bodyVars = {id:id_num, key:'air_raw', value:coordinate}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+        function sendAir_Set(coordinate) {
+            var bodyVars = {id:id_num, key:'air_set', value:coordinate}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+           alert("Set the new config value");
+
+        }
+
+        function airModeChanged(to) {
+                event.preventDefault();
+                var air_input_bt = document.getElementById('air_input_mode');
+                air_input_bt.style.background = "url(imgs/" + to + ")";
+                air_input_bt.style.backgroundRepeat = "no-repeat";
+                air_input_bt.style.backgroundSize = "auto 100%";
+                air_input_bt.style.backgroundPosition = "center";
+            }
+        function make_calibration(gry_a, gry_b, gry_g) {
+            gry_sum_a +=gry_a;
+            gry_sum_b +=gry_b;
+            gry_sum_g +=gry_g;
+            gry_sum_count++;
+            gry_basic_a = (gry_sum_a/gry_sum_count).toFixed(3);
+            gry_basic_b = (gry_sum_b/gry_sum_count).toFixed(3);
+            gry_basic_g = (gry_sum_g/gry_sum_count).toFixed(3);
+
+            if (gry_sum_count%4==0){
+                //tb_gyro.innerHTML="Calibrating" + progress[progress_count];
+                progress_count++;
+                if(progress_count >= 5){
+                    progress_count = 0;
+                }
+            }
+           // air_click_area.innerHTML="a:"+gry_basic_a + " ,b: " + gry_basic_b + ", g:" + gry_basic_g;
+        }
+
+        function get_gyro_calibration(event) {
+            event.preventDefault();
+            var r = event.rotationRate;
+            if(r!=null) {
+                make_calibration(r.alpha, r.beta, r.gamma);
+            }
+        }
+        function gyro_event_listener(event) {
+
+                    var x = event.accelerationIncludingGravity.x;
+                    var y = event.accelerationIncludingGravity.y;
+                    var z = event.accelerationIncludingGravity.z;
+                    var r = event.rotationRate;
+                    var data;
+
+                    var acc_basic_x = 16.00;
+                    var acc_basic_y = -3.0;
+                    var acc_basic_z = 65.00;
+
+                    if(x!=null || y!=null || z!=null || r!=null) {
+//                        tb_gyro.innerHTML ="Acceleration</br> x:0.01,y:-0.05,z:10</br>"+"x: " + x + " ,</br>y: " + y + " ,</br>z: " + z +"</br></br>Rotation Rate</br>a:-4, b:0.8, g:-0.2 </br>"+ "a: " + r.alpha*100 + " ,</br>b: " + r.beta*100 + " ,</br>g: " + r.gamma*100;
+
+                        var gyro_a = r.alpha - gry_basic_a;
+                        var gyro_b = r.beta - gry_basic_b;
+                        var gyro_g = r.gamma - gry_basic_g;
+/*
+                        var acc_x = x;
+                        var acc_y = y;
+                        var acc_z = z;
+*/
+                        var acc_x = x*10;
+                        var acc_y = y*10;
+                        var acc_z = z*10;
+                        /*
+                        var acc_x = x + acc_basic_x;
+                        var acc_y = y + acc_basic_y;
+                        var acc_z = z + acc_basic_z;
+*/
+                        var UserAgent = navigator.userAgent.toLowerCase();
+                        if(UserAgent.indexOf("android") != -1 ) {
+                            gyro_a *=100;
+                            gyro_b *=100;
+                            gyro_g *=100;
+                        }
+                        data = acc_x.toFixed(4) + "," + acc_y.toFixed(4) + "," + acc_z.toFixed(4) + "," + gyro_a.toFixed(4) + "," + gyro_b.toFixed(4) + "," + gyro_g.toFixed(4) + ",";
+
+                        sendAir_Input(data);
+
+                        //var x_offset = (- x_sin * gyro_a - z_sin * gyro_g);
+                        //var y_offset = (x_sin * gyro_g - z_sin * gyro_a);
+                        //data = parseInt(x_offset).toString() + "," + parseInt(y_offset).toString();
+                        //tb_gyro.innerHTML = data;
+                       // sendAir_Input(data);
+                    }
+        }
+        function imageModeChanged(image, object) {
+            //event.preventDefault();
+            var bt = document.getElementById(object);
+            bt.style.background = "url(imgs/" + image + ")";
+            bt.style.backgroundRepeat = "no-repeat";
+            bt.style.backgroundSize = "auto 100%";
+            bt.style.backgroundPosition = "center top";
+        }
+        function Enable_calibration(checker){
+            if (checker == true){
+                imageModeChanged("reset_bt.png","reset_bt");
+                cur_reset_mode = 1;
+                window.addEventListener('devicemotion', get_gyro_calibration);
+            }
+            else{
+                imageModeChanged("reset_bt_pressed.png","reset_bt");
+                window.removeEventListener('devicemotion', get_gyro_calibration);
+                cur_reset_mode = 0;
+                //tb_gyro.innerHTML=""
+            }
+        }
+        function sendevent(form){
+            if (form == "sys_btn_home2"){
+                sendKeyEvent(KEY_HOME);
+            }
+            else if (form == "sys_btn_back2"){
+                sendKeyEvent(KEY_BACK);
+            }
+            else if (form == "bt_air_click"){
+                sendMouse_KeyEvent(MOUSE_CLICK);
+            }
+            else if (form == "reset_bt" || form == "reset_bt2"){
+                    Enable_calibration(true);
+                    cal_flush_timeout = window.setTimeout(function(){
+                        alert("Finished Gyro Calibration.");
+                        Enable_calibration(false);}, CAL_FLUSH_TIMEOUT);
+            }
+            else if (form == "air_input_mode"){
+                if (cur_air_mode == 0 ) {
+                    airModeChanged("air_bt.png");
+                    cur_air_mode = 1;
+                    if(window.DeviceMotionEvent) {
+                        window.addEventListener('devicemotion', gyro_event_listener);
+                    }
+                }
+                else{
+                    airModeChanged("air_bt_pressed.png");
+                    cur_air_mode = 0;
+                    if(window.DeviceMotionEvent) {
+                        window.removeEventListener('devicemotion', gyro_event_listener);
+                    }
+                }
+            }
+
+        }
+        function home_icon_add(title){
+            var home_page_uri = document.domain;
+
+            var home_icon_uri = "/shortcut_icon.png";
+            var naver_UrlScheme= "intent://addshortcut?url="+home_page_uri+"%3F"+"&icon="+home_icon_uri+"&title="+title+"&oq="+title+"&serviceCode=nstore&version=7#Intent;scheme=naversearchapp;action=android.intent.action.VIEW;category=android.intent.category.BROWSABLE;package=com.nhn.android.search;end";
+            var UserAgent = navigator.userAgent.toLowerCase();
+
+            if(UserAgent.indexOf("iphone") == -1 && UserAgent.indexOf("ipad") == -1 && UserAgent.indexOf("tizen") == -1) {
+                alert('Add the ' + title +'shortCut icon');
+                var home_icon_add_frame=document.getElementById("home_icon_add_frame");
+                    home_icon_add_frame.src=naver_UrlScheme;
+            }else{
+                alert("Not surpport in iOS, Tizen ");
+            }
+        }
+
+        function send_setting(){
+
+            var data = document.getElementById("ACC_FW_GAIN").value + "," + document.getElementById("GYRO_FW_GAIN").value + ","
+                        + document.getElementById("FACTOR_WEIGHT").value + "," + document.getElementById("MIN_MOVING_DELTA").value + ","
+                        + document.getElementById("max_tremor_speed").value + "," + document.getElementById("sensor_speed").value + "," + document.getElementById("set_max_tremor").value + ","
+                        + document.getElementById("set_cursor_acceleration").value + "," + document.getElementById("set_cursor_gain").value + ","
+                        + document.getElementById("set_gyro_max_noise").value + "," + document.getElementById("set_filtering_level").value+ ",";
+            sendAir_Set(data);
+        }
+
+        function reset_sliderbar (){
+
+            document.getElementById("ACC_FW_GAIN").value = 0.000244140625;
+            document.getElementById("GYRO_FW_GAIN").value = 0.00106422515;
+            document.getElementById("FACTOR_WEIGHT").value = 0.1;
+            document.getElementById("MIN_MOVING_DELTA").value = 1;
+            document.getElementById("max_tremor_speed").value = 3;
+            document.getElementById("sensor_speed").value = 1;
+            document.getElementById("set_max_tremor").value = -1.0;
+            document.getElementById("set_cursor_acceleration").value = 2.85;
+            document.getElementById("set_cursor_gain").value = 0.70;
+            document.getElementById("set_gyro_max_noise").value = 0.05;
+            document.getElementById("set_filtering_level").value = 0;
+
+            showValue("ACC_FW_GAIN", 0.000244140625);
+            showValue("GYRO_FW_GAIN", 0.00106422515);
+            showValue("FACTOR_WEIGHT", 0.1);
+            showValue("MIN_MOVING_DELTA", 1);
+            showValue("max_tremor_speed", 3);
+            showValue("sensor_speed", 1);
+            showValue("set_max_tremor", -1.0);
+            showValue("set_cursor_acceleration", 2.85);
+            showValue("set_cursor_gain", 0.70);
+            showValue("set_gyro_max_noise", 0.05);
+            showValue("set_filtering_level", 0);
+
+
+        }
+
+        function showValue(obj, newValue)
+        {
+            document.getElementById((obj+"1")).innerHTML=newValue;
+        }
+
+
+        $(document).ready(function() {
+
+            var obj = document.getElementById('by');
+            obj.style.height =  $(document).height() + "px";
+
+            reset_sliderbar();
+            /*
+            showValue("ACC_FW_GAIN", 0.000244140625);
+            showValue("GYRO_FW_GAIN", 0.00106422515);
+            showValue("FACTOR_WEIGHT", 0.1);
+            showValue("MIN_MOVING_DELTA", 1);
+            showValue("max_tremor_speed", 2);
+            showValue("set_max_tremor", 1.0);
+            showValue("set_cursor_acceleration", 1.0);
+            showValue("set_cursor_gain", 1.65);
+            showValue("set_gyro_max_noise", 0.05);
+            */
+        });
+
+</script>
+    <!-- MOUSE MODE -->
+    <div id="keymode"  data-role="page" data-fullscreen="true" class ="visible">
+       <table class="tb1" >
+        <!-- Header -->
+            <tr>
+                <td class="t_cell t_cell_header cell_width33 cell_height7 logo" onclick="home_icon_add('Tizen_Input')"></td>
+                <td id="reset_bt" class="t_cell cell_width33 reset_bt " ontouchstart="javascript:sendevent(this.id)"></td>
+                <td id ="air_input_mode" class="t_cell cell_width33 air_input_mode" onclick="javascript:sendevent(this.id)"></td>
+            </tr>
+            <tr>
+                <td  class="t_cell" colspan="3">
+                        <!-- Content -->
+                        <table class="tb1">
+                                <!-- Content_space-top -->
+                                <tr>
+                                    <td class="t_cell cell_height5 t_cell_vertical_align_bottom" >
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <td>
+                                        <table id="air_panel" class="tb1_thin_border air_panel ">
+                                            <tr>
+                                                <td class="t_cell_thin_border cell_height5" colspan="3">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td class="t_cell_thin_border cell_width5">
+                                                </td>
+                                                <td id="bt_air_click" class="t_cell_thin_border air_bt" ontouchstart="javascript:sendevent(this.id)">
+                                                </td>
+                                                <td class="t_cell_thin_border cell_width5">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td class="t_cell_thin_border ">
+                                                </td>
+                                                <td id ="tb_gyro" class="t_cell_thin_border" style="text-align:left; font-size:10px;">
+                                                ACC_FW_GAIN (0.000244140625)</br>
+                                                <input id="ACC_FW_GAIN" type="range" min="-0.05" style="width:200px"  step="0.001" max="0.05" onchange="showValue(this.id,this.value)" /> <span id="ACC_FW_GAIN1"></span></br>
+                                                GYRO_FW_GAIN (0.00106422515)</br>
+                                                <input id="GYRO_FW_GAIN" type="range" min="-0.05" style="width:200px" step="0.001" max="0.05" onchange="showValue(this.id,this.value)" /> <span id="GYRO_FW_GAIN1"></span></br>
+                                                FACTOR_WEIGHT (0.1f)</br>
+                                                <input id="FACTOR_WEIGHT" type="range" min="0" style="width:200px" max="0.5" step="0.001" onchange="showValue(this.id,this.value)" /> <span id="FACTOR_WEIGHT1"></span></br>
+                                                MIN_MOVING_DELTA (1)</br>
+                                                <input id="MIN_MOVING_DELTA" type="range" min="0" max="10.0" style="width:200px" step="0.01" onchange="showValue(this.id,this.value)" /> <span id="MIN_MOVING_DELTA1"></span></br>
+                                                max_tremor_speed (2)</br>
+                                                <input id="max_tremor_speed" type="range" min="0" max="10.0" style="width:200px" step="0.01" onchange="showValue(this.id,this.value)" /> <span id="max_tremor_speed1"></span></br>
+                                                sensor_speed (1 Slo-Nor-Fas)</br>
+                                                <input id="sensor_speed" type="range" min="0" max="2" style="width:200px" step="1" onchange="showValue(this.id,this.value)" /> <span id="sensor_speed1"></span></br>
+                                                set_max_tremor(-1.0)</br>
+                                                <input id="set_max_tremor" type="range" min="-1" max="2" style="width:200px" step="0.01" onchange="showValue(this.id,this.value)" /> <span id="set_max_tremor1"></span></br>
+                                                set_cursor_acceleration(2.85)</br>
+                                                <input id="set_cursor_acceleration" type="range" min="1" max="4" style="width:200px" step="0.01" onchange="showValue(this.id,this.value)" /> <span id="set_cursor_acceleration1"></span></br>
+                                                set_cursor_gain(0.70)</br>
+                                                <input id="set_cursor_gain" type="range" min="0.01" max="5" style="width:200px" step="0.0001" onchange="showValue(this.id,this.value)" /> <span id="set_cursor_gain1"></span></br>
+                                                set_gyro_max_noise(0.05)</br>
+                                                <input id="set_gyro_max_noise" type="range" min="0.0001" max="10" style="width:200px" step="0.0001" onchange="showValue(this.id,this.value)" /> <span id="set_gyro_max_noise1"></span></br>
+                                                set_filtering_level (0 Nor-Low-No)</br>
+                                                <input id="set_filtering_level" type="range" min="0" max="2" style="width:200px" step="1" onchange="showValue(this.id,this.value)" /> <span id="set_filtering_level1"></span></br>
+
+                                                </br><input id="send_setting" type="button" value="send setting" onclick="send_setting()"/>
+                                                <input id="reset_setting" type="button" value="reset setting" onclick="reset_sliderbar()"/>
+                                                </td>
+                                                <td class="t_cell_thin_border">
+                                                </td>
+                                            </tr>
+                                        </table>
+                                    </td>
+                                </tr>
+                                <!-- Content_space-bottom -->
+                        </table>
+                </td>
+            </tr>
+        <!-- Footer -->
+            <tr>
+                <td id="sys_btn_home2" class="t_cell_footer apps" ontouchstart="javascript:sendevent(this.id)"></td>
+                <td id="sys_btn_modechange2" class="t_cell_footer modeswitcher_to_tv" ></td>
+                <td id="sys_btn_back2" class="t_cell_footer back" ontouchstart="sendevent(this.id)"></td>
+            </tr>
+
+        </table>
+    </div>
+<iframe id="home_icon_add_frame" style="display:none;width:0px;height:0px;"></iframe>
+<!-- end page 2 -->
+</body>
+</html>
+
+
diff --git a/ism/data/remote-input/airsetting.htm b/ism/data/remote-input/airsetting.htm
new file mode 100644 (file)
index 0000000..8d68889
--- /dev/null
@@ -0,0 +1,361 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Tizen Remote Input</title>
+    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
+    <link rel="icon" href="/favicon.ico" type="image/x-icon">
+    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"/>
+     <script src="ajaxCaller.js" type="text/javascript"> </script>
+    <link rel="stylesheet" href="remote_input.css" type="text/css"/>
+     <script src="util.js" type="text/javascript"> </script>
+    <script src="jquery-2.0.2.min.js"></script>
+<script type="text/javascript" src="web-helper-client.js"></script>
+
+
+
+</head>
+
+<body id="by">
+<script>
+
+
+        // Callback incremental index
+        var id_num = 0;
+        var ori;
+        var CAL_FLUSH_TIMEOUT = 3000;
+
+        var MOUSE_CLICK = 555;
+        var KEY_MENU = 10001;
+        var KEY_HOME = 10002;
+        var KEY_BACK = 10003;
+        var scroll_pre_x = 0;
+        var scroll_pre_y = 0;
+        var cur_air_mode = 0;
+        var cur_reset_mode = 0;
+        var gry_basic_a = 0;
+        var gry_basic_b = 0;
+        var gry_basic_g = 0;
+        var gry_sum_a = 0;
+        var gry_sum_b = 0;
+        var gry_sum_g = 0;
+        var gry_sum_count = 0;
+        var progress = ["",".","..","...","...."];
+        var progress_count=0;
+
+
+        var WebHelperClientHandler = {
+            onInit : function () {
+                WebHelperClient.log("ON INIT");
+            }
+        };
+
+        WebHelperClient.initialize(WebHelperClientHandler);
+
+
+        function cbAjax(text, headers, callingContext){
+            id_num++;
+            return true;
+        }
+        function sendKeyEvent(keyCode){
+            event.preventDefault();
+                WebHelperClient.sendKeyEvent(keyCode);
+        }
+        function sendMouse_KeyEvent(mouseCode) {
+            event.preventDefault();
+            if (event.touches.length < 2) {
+                WebHelperClient.sendMouse_KeyEvent(mouseCode);
+            }
+        }
+        function sendMouse_MoveEvent(coordinate) {
+            event.preventDefault();
+            if (event.touches.length < 2) {
+                WebHelperClient.sendMouse_MoveEvent(coordinate);
+            }
+        }
+
+        function sendWheel_MoveEvent(coordinate) {
+            event.preventDefault();
+            if (event.touches.length < 2) {
+                WebHelperClient.sendWheel_MoveEvent(coordinate);
+            }
+        }
+        function sendAir_Input(coordinate) {
+            event.preventDefault();
+            //if (event.touches.length < 2) {
+                WebHelperClient.sendAir_Input(coordinate);
+            //}
+        }
+        function sendAir_Setting(coordinate) {
+            event.preventDefault();
+            //if (event.touches.length < 2) {
+                WebHelperClient.sendAir_Setting(coordinate);
+            //}
+        }
+
+        function airModeChanged(to) {
+                event.preventDefault();
+                var air_input_bt = document.getElementById('air_input_mode');
+                air_input_bt.style.background = "url(imgs/" + to + ")";
+                air_input_bt.style.backgroundRepeat = "no-repeat";
+                air_input_bt.style.backgroundSize = "auto 100%";
+                air_input_bt.style.backgroundPosition = "center";
+            }
+        function make_calibration(gry_a, gry_b, gry_g) {
+            gry_sum_a +=gry_a;
+            gry_sum_b +=gry_b;
+            gry_sum_g +=gry_g;
+            gry_sum_count++;
+            gry_basic_a = (gry_sum_a/gry_sum_count).toFixed(3);
+            gry_basic_b = (gry_sum_b/gry_sum_count).toFixed(3);
+            gry_basic_g = (gry_sum_g/gry_sum_count).toFixed(3);
+
+            if (gry_sum_count%4==0){
+                //tb_gyro.innerHTML="Calibrating" + progress[progress_count];
+                progress_count++;
+                if(progress_count >= 5){
+                    progress_count = 0;
+                }
+            }
+           // air_click_area.innerHTML="a:"+gry_basic_a + " ,b: " + gry_basic_b + ", g:" + gry_basic_g;
+        }
+
+        function get_gyro_calibration(event) {
+            event.preventDefault();
+            var r = event.rotationRate;
+            if(r!=null) {
+                make_calibration(r.alpha, r.beta, r.gamma);
+            }
+        }
+        function gyro_event_listener(event) {
+
+            event.preventDefault();
+            var x = event.accelerationIncludingGravity.x;
+            var y = event.accelerationIncludingGravity.y;
+            var z = event.accelerationIncludingGravity.z;
+            var r = event.rotationRate;
+            var data;
+
+
+                var gyro_a = r.alpha - gry_basic_a;
+                var gyro_b = r.beta - gry_basic_b;
+                var gyro_g = r.gamma - gry_basic_g;
+
+
+                var UserAgent = navigator.userAgent.toLowerCase();
+                if(UserAgent.indexOf("android") != -1 ) {
+                    gyro_a *=100;
+                    gyro_b *=100;
+                    gyro_g *=100;
+                }
+
+            if((x!=null || y!=null || z!=null || r!=null)) {
+
+                data = x.toFixed(3).toString() + "," + y.toFixed(3).toString() + "," + z.toFixed(3).toString() + "," + gyro_a.toFixed(3).toString() + "," + gyro_b.toFixed(3).toString() + "," + gyro_g.toFixed(3).toString() + ",";
+                sendAir_Input(data);
+
+            }
+        }
+        function imageModeChanged(image, object) {
+            //event.preventDefault();
+            var bt = document.getElementById(object);
+            bt.style.background = "url(imgs/" + image + ")";
+            bt.style.backgroundRepeat = "no-repeat";
+            bt.style.backgroundSize = "auto 100%";
+            bt.style.backgroundPosition = "center top";
+        }
+        function Enable_calibration(checker){
+            if (checker == true){
+                imageModeChanged("reset_bt.png","reset_bt");
+                cur_reset_mode = 1;
+                window.addEventListener('devicemotion', get_gyro_calibration);
+            }
+            else{
+                imageModeChanged("reset_bt_pressed.png","reset_bt");
+                window.removeEventListener('devicemotion', get_gyro_calibration);
+                cur_reset_mode = 0;
+                //tb_gyro.innerHTML=""
+            }
+        }
+        function sendevent(form){
+            if (form == "sys_btn_home2"){
+                sendKeyEvent(KEY_HOME);
+            }
+            else if (form == "sys_btn_back2"){
+                sendKeyEvent(KEY_BACK);
+            }
+            else if (form == "bt_air_click"){
+                sendMouse_KeyEvent(MOUSE_CLICK);
+            }
+            else if (form == "reset_bt" || form == "reset_bt2"){
+                    Enable_calibration(true);
+                    cal_flush_timeout = window.setTimeout(function(){
+                        alert("Finished Gyro Calibration.");
+                        Enable_calibration(false);}, CAL_FLUSH_TIMEOUT);
+            }
+            else if (form == "air_input_mode"){
+                if (cur_air_mode == 0 ) {
+                    airModeChanged("air_bt.png");
+                    cur_air_mode = 1;
+                    if(window.DeviceMotionEvent) {
+                        window.addEventListener('devicemotion', gyro_event_listener);
+                    }
+                }
+                else{
+                    airModeChanged("air_bt_pressed.png");
+                    cur_air_mode = 0;
+                    if(window.DeviceMotionEvent) {
+                        window.removeEventListener('devicemotion', gyro_event_listener);
+                    }
+                }
+            }
+
+        }
+        function home_icon_add(title){
+            var home_page_uri = document.domain;
+
+            var home_icon_uri = "/shortcut_icon.png";
+            var naver_UrlScheme= "intent://addshortcut?url="+home_page_uri+"%3F"+"&icon="+home_icon_uri+"&title="+title+"&oq="+title+"&serviceCode=nstore&version=7#Intent;scheme=naversearchapp;action=android.intent.action.VIEW;category=android.intent.category.BROWSABLE;package=com.nhn.android.search;end";
+            var UserAgent = navigator.userAgent.toLowerCase();
+
+            if(UserAgent.indexOf("iphone") == -1 && UserAgent.indexOf("ipad") == -1 && UserAgent.indexOf("tizen") == -1) {
+                alert('Add the ' + title +'shortCut icon');
+                var home_icon_add_frame=document.getElementById("home_icon_add_frame");
+                    home_icon_add_frame.src=naver_UrlScheme;
+            }else{
+                alert("Not surpport in iOS, Tizen ");
+            }
+        }
+
+        function send_setting(){
+
+            var data = document.getElementById("CUR_MOVE_ACC").value + ","
+                        + document.getElementById("CUR_MOVE_GAIN").value + ","
+                        + document.getElementById("CUR_MOVE_SMOOTH").value + ","
+                        + document.getElementById("CUR_MOVE_SPEED").value + ","
+                        + document.getElementById("FILTER_NUMBER").value + ",";
+
+            sendAir_Setting(data);
+            alert("Set New value");
+
+        }
+
+        function reset_sliderbar (){
+
+
+            document.getElementById("CUR_MOVE_ACC").value = 1.0;
+            document.getElementById("CUR_MOVE_GAIN").value = 1.0;
+            document.getElementById("CUR_MOVE_SMOOTH").value = 20;
+            document.getElementById("CUR_MOVE_SPEED").value = 1.0;
+            document.getElementById("FILTER_NUMBER").value = 20;
+
+            showValue("CUR_MOVE_ACC", 1.0);
+            showValue("CUR_MOVE_GAIN", 1.0);
+            showValue("CUR_MOVE_SMOOTH", 20);
+            showValue("CUR_MOVE_SPEED", 1.0);
+            showValue("FILTER_NUMBER", 20);
+
+        }
+
+        function showValue(obj, newValue)
+        {
+            document.getElementById((obj+"1")).innerHTML=newValue;
+        }
+
+
+        $(document).ready(function() {
+
+            var obj = document.getElementById('by');
+            obj.style.height =  $(document).height() + "px";
+
+            reset_sliderbar();
+            /*
+            showValue("ACC_FW_GAIN", 0.000244140625);
+            showValue("GYRO_FW_GAIN", 0.00106422515);
+            showValue("FACTOR_WEIGHT", 0.1);
+            showValue("MIN_MOVING_DELTA", 1);
+            showValue("max_tremor_speed", 2);
+            showValue("set_max_tremor", 1.0);
+            showValue("set_cursor_acceleration", 1.0);
+            showValue("set_cursor_gain", 1.65);
+            showValue("set_gyro_max_noise", 0.05);
+            */
+        });
+
+</script>
+    <!-- MOUSE MODE -->
+    <div id="keymode"  data-role="page" data-fullscreen="true" class ="visible">
+       <table class="tb1" >
+        <!-- Header -->
+            <tr>
+                <td class="t_cell t_cell_header cell_width33 cell_height7 logo" onclick="home_icon_add('Tizen_Input')"></td>
+                <td id="reset_bt" class="t_cell cell_width33 reset_bt " ontouchstart="javascript:sendevent(this.id)"></td>
+                <td id ="air_input_mode" class="t_cell cell_width33 air_input_mode" onclick="javascript:sendevent(this.id)"></td>
+            </tr>
+            <tr>
+                <td  class="t_cell" colspan="3">
+                        <!-- Content -->
+                        <table class="tb1">
+                                <!-- Content_space-top -->
+                                <tr>
+                                    <td class="t_cell cell_height5 t_cell_vertical_align_bottom" >
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <td>
+                                        <table id="air_panel" class="tb1_thin_border air_panel ">
+                                            <tr>
+                                                <td class="t_cell_thin_border cell_height5" colspan="3">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td class="t_cell_thin_border cell_width5">
+                                                </td>
+                                                <td id="bt_air_click" class="t_cell_thin_border air_bt" ontouchstart="javascript:sendevent(this.id)">
+                                                </td>
+                                                <td class="t_cell_thin_border cell_width5">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <td class="t_cell_thin_border ">
+                                                </td>
+                                                <td id ="tb_gyro" class="t_cell_thin_border" style="text-align:left; font-size:10px;">
+                                                CUR_MOVE_ACC (1.0)</br>
+                                                <input id="CUR_MOVE_ACC" type="range" min="0.1" style="width:250px; height:30px"  step="0.5" max="10.0" onchange="showValue(this.id,this.value)" /> <span id="CUR_MOVE_ACC1"></span></br>
+                                                </br>CUR_MOVE_GAIN (1.0)</br>
+                                                <input id="CUR_MOVE_GAIN" type="range" min="0.1" style="width:250px; height:30px" step="0.1" max="3.0" onchange="showValue(this.id,this.value)" /> <span id="CUR_MOVE_GAIN1"></span></br>
+                                                </br>CUR_MOVE_SMOOTH (20)</br>
+                                                <input id="CUR_MOVE_SMOOTH" type="range" min="0" style="width:250px; height:30px" max="80" step="5" onchange="showValue(this.id,this.value)" /> <span id="CUR_MOVE_SMOOTH1"></span></br>
+                                                </br>CUR_MOVE_SPEED (1.0)</br>
+                                                <input id="CUR_MOVE_SPEED" type="range" min="0.1" max="3.0" style="width:250px; height:30px" step="0.1" onchange="showValue(this.id,this.value)" /> <span id="CUR_MOVE_SPEED1"></span></br>
+                                                </br>FILTER_NUMBER (20)</br>
+                                                <input id="FILTER_NUMBER" type="range" min="5" max="60" style="width:250px; height:30px" step="5" onchange="showValue(this.id,this.value)" /> <span id="FILTER_NUMBER1"></span></br>
+
+
+                                                </br><input id="send_setting" type="button" value="send setting" onclick="send_setting()"/>
+                                                <input id="reset_setting" type="button" value="reset setting" onclick="reset_sliderbar()"/>
+                                                </td>
+                                                <td class="t_cell_thin_border">
+                                                </td>
+                                            </tr>
+                                        </table>
+                                    </td>
+                                </tr>
+                                <!-- Content_space-bottom -->
+                        </table>
+                </td>
+            </tr>
+        <!-- Footer -->
+            <tr>
+                <td id="sys_btn_home2" class="t_cell_footer apps" ontouchstart="javascript:sendevent(this.id)"></td>
+                <td id="sys_btn_modechange2" class="t_cell_footer modeswitcher_to_tv" ></td>
+                <td id="sys_btn_back2" class="t_cell_footer back" ontouchstart="sendevent(this.id)"></td>
+            </tr>
+
+        </table>
+    </div>
+<iframe id="home_icon_add_frame" style="display:none;width:0px;height:0px;"></iframe>
+<!-- end page 2 -->
+</body>
+</html>
+
+
diff --git a/ism/data/remote-input/ajax-loader.gif b/ism/data/remote-input/ajax-loader.gif
new file mode 100644 (file)
index 0000000..fd1a189
Binary files /dev/null and b/ism/data/remote-input/ajax-loader.gif differ
diff --git a/ism/data/remote-input/ajaxCaller.js b/ism/data/remote-input/ajaxCaller.js
new file mode 100644 (file)
index 0000000..b83a695
--- /dev/null
@@ -0,0 +1,261 @@
+var ajaxCaller = {
+
+  shouldDebug: false,
+  shouldEscapeVars: false,
+  shouldMakeHeaderMap: true,
+
+  calls : new Array(),
+  pendingResponseCount : 0,
+
+   /**************************************************************************
+      PUBLIC METHODS
+   *************************************************************************/
+
+  getXML: function(url, callbackFunction) {
+    this.get(url, null, callbackFunction, true, null);
+  },
+
+  getPlainText: function(url, callbackFunction) {
+    this.get(url, null, callbackFunction, false, null);
+  },
+
+  postForPlainText: function(url, vars, callbackFunction) {
+    this.postVars(url, vars, null, callbackFunction, false,
+                    null, "POST", null, null, null);
+  },
+
+  postForXML: function(url, vars, callbackFunction) {
+    this.postVars(url, vars, null, callbackFunction, true,
+                    null, "POST", null, null, null);
+  },
+
+  get: function(url, urlVars, callbackFunction, expectingXML, callingContext) {
+    this._callServer(url, urlVars, callbackFunction, expectingXML,
+                    callingContext, "GET", null, null, null);
+  },
+
+  postVars:
+    function(url, bodyVars, optionalURLVars, callbackFunction, expectingXML,
+             callingContext) {
+      this._callServer(url, optionalURLVars, callbackFunction, expectingXML,
+                      callingContext, "POST", bodyVars, null, null);
+  },
+
+  postBody:
+    function(url, optionalURLVars, callbackFunction, expectingXML,
+             callingContext, bodyType, body) {
+      this._callServer(url, optionalURLVars, callbackFunction, expectingXML,
+                      callingContext, "POST", null, bodyType, body);
+  },
+
+  putBody:
+    function(url, optionalURLVars, callbackFunction, expectingXML,
+             callingContext, bodyType, body) {
+      this._callServer(url, optionalURLVars, callbackFunction, expectingXML,
+                      callingContext, "PUT", null, bodyType, body);
+  },
+
+  options:
+    function(url, optionalURLVars, callbackFunction, expectingXML,
+             callingContext, bodyType, body) {
+      this._callServer(url, optionalURLVars, callbackFunction, expectingXML,
+                      callingContext, "OPTIONS", null, bodyType, body);
+  },
+
+  trace:
+    function(url, optionalURLVars, callbackFunction, expectingXML,
+             callingContext, bodyType, body) {
+      this._debug("trace");
+      this._callServer(url, optionalURLVars, callbackFunction, expectingXML,
+                      callingContext, "TRACE", null, bodyType, body);
+  },
+
+  deleteIt: function(url, urlVars, callbackFunction,
+                     expectingXML, callingContext) {
+    this._callServer(url, urlVars, callbackFunction, expectingXML,
+                    callingContext, "DELETE", null, null, null);
+  },
+
+  head: function(url, urlVars, callbackFunction, expectingXML, callingContext)
+  {
+    this._callServer(url, urlVars, callbackFunction, expectingXML,
+                    callingContext, "HEAD", null, null, null);
+  },
+
+  /**************************************************************************
+     PRIVATE METHODS
+  *************************************************************************/
+
+  _callServer: function(url, urlVars, callbackFunction, expectingXML,
+                       callingContext, requestMethod, bodyVars,
+                       explicitBodyType, explicitBody) {
+
+    if (urlVars==null) {
+      urlVars = new Array();
+    }
+
+    this._debug("_callServer() called. About to request URL\n"
+                + "call key: [" + this.calls.length + "]\n"
+                + "url: [" + url + "]\n"
+                + "callback function: [" + callbackFunction + "]\n"
+                + "treat response as xml?: [" + expectingXML + "]\n"
+                + "Request method?: [" + requestMethod + "]\n"
+                + "calling context: [" + callingContext + "]\n"
+                + "explicit body type: [" + explicitBodyType + "]\n"
+                + "explicit body: [" + explicitBody + "]\n"
+                + "urlVars: [" + util.describe(urlVars) + "]\n"
+                + "bodyVars: [" + util.describe(bodyVars) + "]"
+              );
+
+
+    var xReq = this._createXMLHttpRequest();
+    xReq.onreadystatechange = function() {
+      ajaxCaller._onResponseStateChange(call);
+    }
+
+    var call = {xReq: xReq,
+                callbackFunction: callbackFunction,
+                expectingXML: expectingXML,
+                callingContext: callingContext,
+                url: url};
+
+    if (urlVars!=null) {
+      var urlVarsString = this._createHTTPVarSpec(urlVars);
+      if (urlVarsString.length > 0) { // TODO check if appending with & instead
+        url += "?" + urlVarsString;
+      }
+    }
+
+    xReq.open(requestMethod, url, true);
+
+    if (   requestMethod=="GET"
+        || requestMethod=="HEAD"
+        || requestMethod=="DELETE") {
+      this._debug("Body-less request to URL " + url);
+      xReq.send(null);
+      return;
+    }
+
+    if (   requestMethod=="POST"
+        || requestMethod=="PUT"
+        || requestMethod=="OPTIONS"
+        || requestMethod=="TRACE") {
+      bodyType = null;
+      body = null;
+      if (explicitBodyType==null) { // It's a form
+        bodyType = 'application/x-www-form-urlencoded; charset=UTF-8';
+        body = this._createHTTPVarSpec(bodyVars);
+      } else {
+        bodyType = explicitBodyType;
+        body = explicitBody;
+      }
+      this._debug("Content-Type: [" + bodyType + "]\nBody: [" + body + "].");
+      xReq.setRequestHeader('Content-Type',  bodyType);
+      xReq.send(body);
+      return;
+    }
+
+    this._debug("ERROR: Unknown Request Method: " + requestMethod);
+
+
+  },
+
+  // The callback of xmlHttpRequest is a dynamically-generated function which
+  // immediately calls this function.
+  _onResponseStateChange: function(call) {
+
+    xReq = call.xReq;
+
+    if (xReq.readyState < 4) { //Still waiting
+      return;
+    }
+
+    if (xReq.readyState == 4) { //Transmit to actual callback
+
+
+      this._debug("Call " + util.describe(call)
+                + " with context [" + call.callingContext+"]"
+                + " to " + call.url + " has returned.");
+      callbackFunction = call.callbackFunction;
+      if (!callbackFunction) { // Maybe still loading, e.g. in another JS file
+        setTimeout(function() {
+          _onResponseStateChange(call);
+        }, 100);
+      }
+      var content = call.expectingXML ? xReq.responseXML : xReq.responseText;
+      responseHeaders = xReq.getAllResponseHeaders();
+      headersForCaller = this.shouldMakeHeaderMap ?
+        this._createHeaderMap(responseHeaders) : responseHeaders;
+      callbackFunction(content, headersForCaller, call.callingContext);
+
+        var responseString = new String(xReq.responseText);
+        //printLog("ajax:"+responseString+responseString.indexOf("KEYPAD")+xReq.status);
+
+      if ((responseString.indexOf("KEYPAD") ==0) && (xReq.status == 200)) {
+          setTimeout("show_keypad()",300);
+      }
+    }
+
+    call = null; // Technically the responsibility of GC
+    this.pendingResponseCount--;
+
+  },
+
+  // Browser-agnostic factory function
+  _createXMLHttpRequest: function() {
+    if (window.XMLHttpRequest) {
+      return new XMLHttpRequest();
+    } else if (window.ActiveXObject) {
+      return new ActiveXObject('Microsoft.XMLHTTP')
+    } else {
+      _error("Could not create XMLHttpRequest on this browser");
+      return null;
+    }
+  },
+
+  _createHTTPVarSpec: function(vars) {
+      var varsString = "";
+      for( key in vars ) {
+        var value = vars[key];
+        if (this.shouldEscapeVars) {
+          escapePlusRE =  new RegExp("\\\+");
+          value = value.replace(escapePlusRE, "%2B");
+        }
+        varsString += '&' + key + '=' + value;
+      }
+      if (varsString.length > 0) {
+        varsString = varsString.substring(1); // chomp initial '&'
+      }
+      this._debug("Built var String: " + varsString)
+      return varsString;
+   },
+
+  /* Creates associative array from header type to header */
+  _createHeaderMap: function(headersText) {
+    extractedHeaders = headersText.split("\n");
+    delete extractedHeaders[extractedHeaders.length]; // Del blank line at end
+    headerMap = new Array();
+    for (i=0; i<extractedHeaders.length-2; i++) {
+      head = extractedHeaders[i];
+      fieldNameEnding = head.indexOf(":");
+      field = head.substring(0, fieldNameEnding);
+      value = head.substring(fieldNameEnding + 2, head.length);
+      value = value.replace(/\s$/, "");
+      headerMap[field] = value;
+    }
+    return headerMap;
+  },
+
+  _debug: function(message) {
+      if (this.shouldDebug) {
+        alert("AjaxJS Message:\n\n" + message);
+      }
+  },
+
+  _error: function(message) {
+      if (this.shouldDebug) {
+        alert("AjaxJS ERROR:\n\n" + message);
+      }
+  }
+
+};
diff --git a/ism/data/remote-input/avahi.htm b/ism/data/remote-input/avahi.htm
new file mode 100644 (file)
index 0000000..b463869
--- /dev/null
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Tizen Remote Input</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable = no">
+<link rel="stylesheet" href="jquery.mobile-1.3.1.min.css" type="text/css"/>
+<script src="ajaxCaller.js" type="text/javascript"> </script>
+<script src="util.js" type="text/javascript"> </script>
+<script src="jquery-2.0.2.min.js"></script>
+<script src="jquery.mobile-1.3.1.min.js"></script>
+</head>
+
+<body>
+
+
+<input type="button" value="Start" onclick="start()" id="startBtn"/>
+<div id="debugconsole"></div>
+
+<script>
+ var startBtn = document.getElementById('startBtn'),
+     debug = document.getElementById('debugconsole');
+
+ function start() {
+   if(navigator.getNetworkServices) {
+      navigator.getNetworkServices('zeroconf:_xbmc-jsonrpc._tcp', gotXBMCService, error);
+      startBtn.disabled = true;
+   } else {
+      debug.innerHTML += "<br>Service Discovery not supported!";
+   }
+ }
+
+ function gotXBMCService(services) {
+
+// Listen for service disconnect messages
+
+   services[0].addEventListener('serviceoffline', function ( e ) {
+       debug.innerHTML += "<br>" + services[0].name + " disconnected.";
+       startBtn.disabled = false;
+   }, false);
+
+// Send a service message to get albums list (and process the service response)
+
+   var svcXhr = new XMLHttpRequest();
+   svcXhr.open("POST", services[0].url + "/getAlbums"); // services[0].url and its sub-resources have been
+                                                        // whitelisted for cross-site XHR use in this
+                                                        // current browsing context.
+
+   svcXhr.setRequestHeader('Content-Type', 'application/json-rpc');
+
+   svcXhr.addEventListener('readystatechange', function ( response ) {
+     if( response.readyState != 4 || response.status != 200 )
+        return;
+     debug.innerHTML += "<br>" + services[0].name + " response received: ";
+     debug.textContent += JSON.parse(response.responseText);
+   }, false);
+
+   var svcMsg = [
+     { "jsonrpc": "2.0", "method": "AudioLibrary.GetAlbums", "params": { "genreid": -1,
+         "artistid": -1, "start": -1, "end": -1 }, "id": "1" }
+   ];
+
+   svcXhr.send(JSON.stringify(svcMsg));
+   debug.innerHTML += "<br>" + services[0].name + " request sent: ";
+   debug.textContent += JSON.stringify(svcMsg);
+
+ }
+
+ function error( err ) {
+   debug.innerHTML += "<br>An error occurred obtaining a local network service.";
+   startBtn.disabled = false;
+ }
+</script>
+</body>
+</html>
+
+
diff --git a/ism/data/remote-input/custom3.css b/ism/data/remote-input/custom3.css
new file mode 100644 (file)
index 0000000..3a62ce6
--- /dev/null
@@ -0,0 +1,1610 @@
+/*
+* jQuery Mobile 1.3.1
+* Git HEAD hash: 74b4bec049fd93e4fe40205e6157de16eb64eb46 <> Date: Mon Apr 8 2013 19:41:28 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2013 jQuery Foundation, Inc. and other contributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+/* Swatches */
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-a {
+    border: 1px solid #333333 /*{a-bar-border}*/;
+    background: #111111 /*{a-bar-background-color}*/;
+    color: #ffffff /*{a-bar-color}*/;
+    font-weight: bold;
+    text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 0 /*{a-bar-shadow-radius}*/ #000000 /*{a-bar-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111111 /*{a-bar-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111111 /*{a-bar-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111111 /*{a-bar-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111111 /*{a-bar-background-end}*/);
+}
+.ui-bar-a .ui-link-inherit {
+    color: #ffffff /*{a-bar-color}*/;
+}
+.ui-bar-a a.ui-link {
+    color: #7cc4e7 /*{a-bar-link-color}*/;
+    font-weight: bold;
+}
+.ui-bar-a a.ui-link:visited {
+    color: #2489ce /*{a-bar-link-visited}*/;
+}
+.ui-bar-a a.ui-link:hover {
+    color: #2489ce /*{a-bar-link-hover}*/;
+}
+.ui-bar-a a.ui-link:active {
+    color: #2489ce /*{a-bar-link-active}*/;
+}
+.ui-bar-a,
+.ui-bar-a input,
+.ui-bar-a select,
+.ui-bar-a textarea,
+.ui-bar-a button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-a,
+.ui-overlay-a {
+    border: 1px solid #444444 /*{a-body-border}*/;
+    color: #ffffff /*{a-body-color}*/;
+    text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ #111111 /*{a-body-shadow-color}*/;
+    background: #222222 /*{a-body-background-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #444444 /*{a-body-background-start}*/), to( #222222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #444444 /*{a-body-background-start}*/, #222222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #444444 /*{a-body-background-start}*/, #222222 /*{a-body-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #444444 /*{a-body-background-start}*/, #222222 /*{a-body-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #444444 /*{a-body-background-start}*/, #222222 /*{a-body-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #444444 /*{a-body-background-start}*/, #222222 /*{a-body-background-end}*/);
+}
+.ui-overlay-a {
+    background-image: none;
+    border-width: 0;
+}
+.ui-body-a,
+.ui-body-a input,
+.ui-body-a select,
+.ui-body-a textarea,
+.ui-body-a button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-a .ui-link-inherit {
+    color: #ffffff /*{a-body-color}*/;
+}
+.ui-body-a .ui-link {
+    color: #2489ce /*{a-body-link-color}*/;
+    font-weight: bold;
+}
+.ui-body-a .ui-link:visited {
+    color: #2489ce /*{a-body-link-visited}*/;
+}
+.ui-body-a .ui-link:hover {
+    color: #2489ce /*{a-body-link-hover}*/;
+}
+.ui-body-a .ui-link:active {
+    color: #2489ce /*{a-body-link-active}*/;
+}
+.ui-btn-up-a {
+    border: 1px solid #111111 /*{a-bup-border}*/;
+    background: #333333 /*{a-bup-background-color}*/;
+    color: #ffffff /*{a-bup-color}*/;
+    text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 0 /*{a-bup-shadow-radius}*/ #111111 /*{a-bup-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #444444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/);
+}
+.ui-btn-up-a:visited,
+.ui-btn-up-a a.ui-link-inherit {
+    color: #ffffff /*{a-bup-color}*/;
+}
+.ui-btn-hover-a {
+    border: 1px solid #000000 /*{a-bhover-border}*/;
+    background: #444444 /*{a-bhover-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{a-bhover-color}*/;
+    text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 0 /*{a-bhover-shadow-radius}*/ #111111 /*{a-bhover-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #555555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/);
+}
+.ui-btn-hover-a:visited,
+.ui-btn-hover-a:hover,
+.ui-btn-hover-a a.ui-link-inherit {
+    color: #ffffff /*{a-bhover-color}*/;
+}
+.ui-btn-down-a {
+    border: 1px solid #000000 /*{a-bdown-border}*/;
+    background: #222222 /*{a-bdown-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{a-bdown-color}*/;
+    text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 0 /*{a-bdown-shadow-radius}*/ #111111 /*{a-bdown-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/);
+}
+.ui-btn-down-a:visited,
+.ui-btn-down-a:hover,
+.ui-btn-down-a a.ui-link-inherit {
+    color: #ffffff /*{a-bdown-color}*/;
+}
+.ui-btn-up-a,
+.ui-btn-hover-a,
+.ui-btn-down-a {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+    text-decoration: none;
+}
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-b {
+    border: 1px solid #456f9a /*{b-bar-border}*/;
+    background: #5e87b0 /*{b-bar-background-color}*/;
+    color: #ffffff /*{b-bar-color}*/;
+    font-weight: bold;
+    text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 0 /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/);
+}
+.ui-bar-b .ui-link-inherit {
+    color: #ffffff /*{b-bar-color}*/;
+}
+.ui-bar-b a.ui-link {
+    color: #ddf0f8 /*{b-bar-link-color}*/;
+    font-weight: bold;
+}
+.ui-bar-b a.ui-link:visited {
+    color: #ddf0f8 /*{b-bar-link-visited}*/;
+}
+.ui-bar-b a.ui-link:hover {
+    color: #ddf0f8 /*{b-bar-link-hover}*/;
+}
+.ui-bar-b a.ui-link:active {
+    color: #ddf0f8 /*{b-bar-link-active}*/;
+}
+.ui-bar-b,
+.ui-bar-b input,
+.ui-bar-b select,
+.ui-bar-b textarea,
+.ui-bar-b button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-b,
+.ui-overlay-b {
+    border: 1px solid #999999 /*{b-body-border}*/;
+    color: #333333 /*{b-body-color}*/;
+    text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #ffffff /*{b-body-shadow-color}*/;
+    background: #f3f3f3 /*{b-body-background-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #dddddd /*{b-body-background-start}*/), to( #cccccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #dddddd /*{b-body-background-start}*/, #cccccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #dddddd /*{b-body-background-start}*/, #cccccc /*{b-body-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #dddddd /*{b-body-background-start}*/, #cccccc /*{b-body-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #dddddd /*{b-body-background-start}*/, #cccccc /*{b-body-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #dddddd /*{b-body-background-start}*/, #cccccc /*{b-body-background-end}*/);
+}
+.ui-overlay-b {
+    background-image: none;
+    border-width: 0;
+}
+.ui-body-b,
+.ui-body-b input,
+.ui-body-b select,
+.ui-body-b textarea,
+.ui-body-b button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-b .ui-link-inherit {
+    color: #333333 /*{b-body-color}*/;
+}
+.ui-body-b .ui-link {
+    color: #2489ce /*{b-body-link-color}*/;
+    font-weight: bold;
+}
+.ui-body-b .ui-link:visited {
+    color: #2489ce /*{b-body-link-visited}*/;
+}
+.ui-body-b .ui-link:hover {
+    color: #2489ce /*{b-body-link-hover}*/;
+}
+.ui-body-b .ui-link:active {
+    color: #2489ce /*{b-body-link-active}*/;
+}
+.ui-btn-up-b {
+    border: 1px solid #044062 /*{b-bup-border}*/;
+    background: #396b9e /*{b-bup-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{b-bup-color}*/;
+    text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 0 /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/);
+}
+.ui-btn-up-b:visited,
+.ui-btn-up-b a.ui-link-inherit {
+    color: #ffffff /*{b-bup-color}*/;
+}
+.ui-btn-hover-b {
+    border: 1px solid #00415e /*{b-bhover-border}*/;
+    background: #4b88b6 /*{b-bhover-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{b-bhover-color}*/;
+    text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 0 /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/);
+}
+.ui-btn-hover-b:visited,
+.ui-btn-hover-b:hover,
+.ui-btn-hover-b a.ui-link-inherit {
+    color: #ffffff /*{b-bhover-color}*/;
+}
+.ui-btn-down-b {
+    border: 1px solid #225377 /*{b-bdown-border}*/;
+    background: #4e89c5 /*{b-bdown-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{b-bdown-color}*/;
+    text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 0 /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/);
+}
+.ui-btn-down-b:visited,
+.ui-btn-down-b:hover,
+.ui-btn-down-b a.ui-link-inherit {
+    color: #ffffff /*{b-bdown-color}*/;
+}
+.ui-btn-up-b,
+.ui-btn-hover-b,
+.ui-btn-down-b {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+    text-decoration: none;
+}
+
+
+/* C
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-c {
+    border: 1px solid #b3b3b3 /*{c-bar-border}*/;
+    background: #eeeeee /*{c-bar-background-color}*/;
+    color: #3e3e3e /*{c-bar-color}*/;
+    font-weight: bold;
+    text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 0 /*{c-bar-shadow-radius}*/ #ffffff /*{c-bar-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #dddddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #dddddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #dddddd /*{c-bar-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #dddddd /*{c-bar-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #dddddd /*{c-bar-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #dddddd /*{c-bar-background-end}*/);
+}
+.ui-bar-c .ui-link-inherit {
+    color: #3e3e3e /*{c-bar-color}*/;
+}
+.ui-bar-c a.ui-link {
+    color: #7cc4e7 /*{c-bar-link-color}*/;
+    font-weight: bold;
+}
+.ui-bar-c a.ui-link:visited {
+    color: #2489ce /*{c-bar-link-visited}*/;
+}
+.ui-bar-c a.ui-link:hover {
+    color: #2489ce /*{c-bar-link-hover}*/;
+}
+.ui-bar-c a.ui-link:active {
+    color: #2489ce /*{c-bar-link-active}*/;
+}
+.ui-bar-c,
+.ui-bar-c input,
+.ui-bar-c select,
+.ui-bar-c textarea,
+.ui-bar-c button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-c,
+.ui-overlay-c {
+    border: 1px solid #aaaaaa /*{c-body-border}*/;
+    color: #333333 /*{c-body-color}*/;
+    text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #ffffff /*{c-body-shadow-color}*/;
+    background: #f9f9f9 /*{c-body-background-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eeeeee /*{c-body-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/);
+}
+.ui-overlay-c {
+    background-image: none;
+    border-width: 0;
+}
+.ui-body-c,
+.ui-body-c input,
+.ui-body-c select,
+.ui-body-c textarea,
+.ui-body-c button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-c .ui-link-inherit {
+    color: #333333 /*{c-body-color}*/;
+}
+.ui-body-c .ui-link {
+    color: #2489ce /*{c-body-link-color}*/;
+    font-weight: bold;
+}
+.ui-body-c .ui-link:visited {
+    color: #2489ce /*{c-body-link-visited}*/;
+}
+.ui-body-c .ui-link:hover {
+    color: #2489ce /*{c-body-link-hover}*/;
+}
+.ui-body-c .ui-link:active {
+    color: #2489ce /*{c-body-link-active}*/;
+}
+.ui-btn-up-c {
+    border: 1px solid #cccccc /*{c-bup-border}*/;
+    background: #eeeeee /*{c-bup-background-color}*/;
+    font-weight: bold;
+    color: #2f3e46 /*{c-bup-color}*/;
+    text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #ffffff /*{c-bup-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #ffffff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/);
+}
+.ui-btn-up-c:visited,
+.ui-btn-up-c a.ui-link-inherit {
+    color: #2f3e46 /*{c-bup-color}*/;
+}
+.ui-btn-hover-c {
+    border: 1px solid #bbbbbb /*{c-bhover-border}*/;
+    background: #dfdfdf /*{c-bhover-background-color}*/;
+    font-weight: bold;
+    color: #2f3e46 /*{c-bhover-color}*/;
+    text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #ffffff /*{c-bhover-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/);
+}
+.ui-btn-hover-c:visited,
+.ui-btn-hover-c:hover,
+.ui-btn-hover-c a.ui-link-inherit {
+    color: #2f3e46 /*{c-bhover-color}*/;
+}
+.ui-btn-down-c {
+    border: 1px solid #bbbbbb /*{c-bdown-border}*/;
+    background: #d6d6d6 /*{c-bdown-background-color}*/;
+    font-weight: bold;
+    color: #2f3e46 /*{c-bdown-color}*/;
+    text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #ffffff /*{c-bdown-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/);
+}
+.ui-btn-down-c:visited,
+.ui-btn-down-c:hover,
+.ui-btn-down-c a.ui-link-inherit {
+    color: #2f3e46 /*{c-bdown-color}*/;
+}
+.ui-btn-up-c,
+.ui-btn-hover-c,
+.ui-btn-down-c {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+    text-decoration: none;
+}
+
+
+/* D
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-d {
+    border: 1px solid #bbbbbb /*{d-bar-border}*/;
+    background: #bbbbbb /*{d-bar-background-color}*/;
+    color: #333333 /*{d-bar-color}*/;
+    font-weight: bold;
+    text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eeeeee /*{d-bar-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #dddddd /*{d-bar-background-start}*/), to( #bbbbbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #dddddd /*{d-bar-background-start}*/, #bbbbbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #dddddd /*{d-bar-background-start}*/, #bbbbbb /*{d-bar-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #dddddd /*{d-bar-background-start}*/, #bbbbbb /*{d-bar-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #dddddd /*{d-bar-background-start}*/, #bbbbbb /*{d-bar-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #dddddd /*{d-bar-background-start}*/, #bbbbbb /*{d-bar-background-end}*/);
+}
+.ui-bar-d .ui-link-inherit {
+    color: #333333 /*{d-bar-color}*/;
+}
+.ui-bar-d a.ui-link {
+    color: #2489ce /*{d-bar-link-color}*/;
+    font-weight: bold;
+}
+.ui-bar-d a.ui-link:visited {
+    color: #2489ce /*{d-bar-link-visited}*/;
+}
+.ui-bar-d a.ui-link:hover {
+    color: #2489ce /*{d-bar-link-hover}*/;
+}
+.ui-bar-d a.ui-link:active {
+    color: #2489ce /*{d-bar-link-active}*/;
+}
+.ui-bar-d,
+.ui-bar-d input,
+.ui-bar-d select,
+.ui-bar-d textarea,
+.ui-bar-d button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-d,
+.ui-overlay-d {
+    border: 1px solid #bbbbbb /*{d-body-border}*/;
+    color: #333333 /*{d-body-color}*/;
+    text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/ #ffffff /*{d-body-shadow-color}*/;
+    background: #ffffff /*{d-body-background-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #ffffff /*{d-body-background-start}*/), to( #ffffff /*{d-body-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #ffffff /*{d-body-background-start}*/, #ffffff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #ffffff /*{d-body-background-start}*/, #ffffff /*{d-body-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #ffffff /*{d-body-background-start}*/, #ffffff /*{d-body-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #ffffff /*{d-body-background-start}*/, #ffffff /*{d-body-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #ffffff /*{d-body-background-start}*/, #ffffff /*{d-body-background-end}*/);
+}
+.ui-overlay-d {
+    background-image: none;
+    border-width: 0;
+}
+.ui-body-d,
+.ui-body-d input,
+.ui-body-d select,
+.ui-body-d textarea,
+.ui-body-d button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-d .ui-link-inherit {
+    color: #333333 /*{d-body-color}*/;
+}
+.ui-body-d .ui-link {
+    color: #2489ce /*{d-body-link-color}*/;
+    font-weight: bold;
+}
+.ui-body-d .ui-link:visited {
+    color: #2489ce /*{d-body-link-visited}*/;
+}
+.ui-body-d .ui-link:hover {
+    color: #2489ce /*{d-body-link-hover}*/;
+}
+.ui-body-d .ui-link:active {
+    color: #2489ce /*{d-body-link-active}*/;
+}
+.ui-btn-up-d {
+    border: 1px solid #bbbbbb /*{d-bup-border}*/;
+    background: #ffffff /*{d-bup-background-color}*/;
+    font-weight: bold;
+    color: #333333 /*{d-bup-color}*/;
+    text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #ffffff /*{d-bup-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa /*{d-bup-background-start}*/), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/);
+}
+.ui-btn-up-d:visited,
+.ui-btn-up-d a.ui-link-inherit {
+    color: #333333 /*{d-bup-color}*/;
+}
+.ui-btn-hover-d {
+    border: 1px solid #aaaaaa /*{d-bhover-border}*/;
+    background: #eeeeee /*{d-bhover-background-color}*/;
+    font-weight: bold;
+    color: #333333 /*{d-bhover-color}*/;
+    text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/ #ffffff /*{d-bhover-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #eeeeee /*{d-bhover-background-start}*/), to( #ffffff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #eeeeee /*{d-bhover-background-start}*/, #ffffff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #eeeeee /*{d-bhover-background-start}*/, #ffffff /*{d-bhover-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #eeeeee /*{d-bhover-background-start}*/, #ffffff /*{d-bhover-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #eeeeee /*{d-bhover-background-start}*/, #ffffff /*{d-bhover-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #eeeeee /*{d-bhover-background-start}*/, #ffffff /*{d-bhover-background-end}*/);
+}
+.ui-btn-hover-d:visited,
+.ui-btn-hover-d:hover,
+.ui-btn-hover-d a.ui-link-inherit {
+    color: #333333 /*{d-bhover-color}*/;
+}
+.ui-btn-down-d {
+    border: 1px solid #aaaaaa /*{d-bdown-border}*/;
+    background: #eeeeee /*{d-bdown-background-color}*/;
+    font-weight: bold;
+    color: #333333 /*{d-bdown-color}*/;
+    text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/ #ffffff /*{d-bdown-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/);
+}
+.ui-btn-down-d:visited,
+.ui-btn-down-d:hover,
+.ui-btn-down-d a.ui-link-inherit {
+    color: #333333 /*{d-bdown-color}*/;
+}
+.ui-btn-up-d,
+.ui-btn-hover-d,
+.ui-btn-down-d {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+    text-decoration: none;
+}
+
+
+/* E
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-e {
+    border: 1px solid #f7c942 /*{e-bar-border}*/;
+    background: #fadb4e /*{e-bar-background-color}*/;
+    color: #333333 /*{e-bar-color}*/;
+    font-weight: bold;
+    text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/ #ffffff /*{e-bar-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/);
+}
+.ui-bar-e .ui-link-inherit {
+    color: #333333 /*{e-bar-color}*/;
+}
+.ui-bar-e a.ui-link {
+    color: #2489ce /*{e-bar-link-color}*/;
+    font-weight: bold;
+}
+.ui-bar-e a.ui-link:visited {
+    color: #2489ce /*{e-bar-link-visited}*/;
+}
+.ui-bar-e a.ui-link:hover {
+    color: #2489ce /*{e-bar-link-hover}*/;
+}
+.ui-bar-e a.ui-link:active {
+    color: #2489ce /*{e-bar-link-active}*/;
+}
+.ui-bar-e,
+.ui-bar-e input,
+.ui-bar-e select,
+.ui-bar-e textarea,
+.ui-bar-e button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-e,
+.ui-overlay-e {
+    border: 1px solid #f7c942 /*{e-body-border}*/;
+    color: #222222 /*{e-body-color}*/;
+    text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/ #ffffff /*{e-body-shadow-color}*/;
+    background: #fff9df /*{e-body-background-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/);
+}
+.ui-overlay-e {
+    background-image: none;
+    border-width: 0;
+}
+.ui-body-e,
+.ui-body-e input,
+.ui-body-e select,
+.ui-body-e textarea,
+.ui-body-e button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-e .ui-link-inherit {
+    color: #222222 /*{e-body-color}*/;
+}
+.ui-body-e .ui-link {
+    color: #2489ce /*{e-body-link-color}*/;
+    font-weight: bold;
+}
+.ui-body-e .ui-link:visited {
+    color: #2489ce /*{e-body-link-visited}*/;
+}
+.ui-body-e .ui-link:hover {
+    color: #2489ce /*{e-body-link-hover}*/;
+}
+.ui-body-e .ui-link:active {
+    color: #2489ce /*{e-body-link-active}*/;
+}
+.ui-btn-up-e {
+    border: 1px solid #f4c63f /*{e-bup-border}*/;
+    background: #fadb4e /*{e-bup-background-color}*/;
+    font-weight: bold;
+    color: #222222 /*{e-bup-color}*/;
+    text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/ #ffffff /*{e-bup-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/);
+}
+.ui-btn-up-e:visited,
+.ui-btn-up-e a.ui-link-inherit {
+    color: #222222 /*{e-bup-color}*/;
+}
+.ui-btn-hover-e {
+    border: 1px solid #f2c43d /*{e-bhover-border}*/;
+    background: #fbe26f /*{e-bhover-background-color}*/;
+    font-weight: bold;
+    color: #333333 /*{e-bhover-color}*/;
+    text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/ #ffffff /*{e-bhover-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/);
+}
+.ui-btn-hover-e:visited,
+.ui-btn-hover-e:hover,
+.ui-btn-hover-e a.ui-link-inherit {
+    color: #333333 /*{e-bhover-color}*/;
+}
+.ui-btn-down-e {
+    border: 1px solid #f2c43d /*{e-bdown-border}*/;
+    background: #fceda7 /*{e-bdown-background-color}*/;
+    font-weight: bold;
+    color: #333333 /*{e-bdown-color}*/;
+    text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/ #ffffff /*{e-bdown-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/);
+}
+.ui-btn-down-e:visited,
+.ui-btn-down-e:hover,
+.ui-btn-down-e a.ui-link-inherit {
+    color: #333333 /*{e-bdown-color}*/;
+}
+.ui-btn-up-e,
+.ui-btn-hover-e,
+.ui-btn-down-e {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+    text-decoration: none;
+}
+
+
+/* F
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-f {
+    border: 1px solid #333333 /*{f-bar-border}*/;
+    background: #111111 /*{f-bar-background-color}*/;
+    color: #ffffff /*{f-bar-color}*/;
+    font-weight: bold;
+    text-shadow: 0 /*{f-bar-shadow-x}*/ -1px /*{f-bar-shadow-y}*/ 0 /*{f-bar-shadow-radius}*/ #000000 /*{f-bar-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{f-bar-background-start}*/), to( #111111 /*{f-bar-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #3c3c3c /*{f-bar-background-start}*/, #111111 /*{f-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #3c3c3c /*{f-bar-background-start}*/, #111111 /*{f-bar-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #3c3c3c /*{f-bar-background-start}*/, #111111 /*{f-bar-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #3c3c3c /*{f-bar-background-start}*/, #111111 /*{f-bar-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #3c3c3c /*{f-bar-background-start}*/, #111111 /*{f-bar-background-end}*/);
+}
+.ui-bar-f .ui-link-inherit {
+    color: #ffffff /*{f-bar-color}*/;
+}
+.ui-bar-f a.ui-link {
+    color: #7cc4e7 /*{f-bar-link-color}*/;
+    font-weight: bold;
+}
+.ui-bar-f a.ui-link:visited {
+    color: #2489ce /*{f-bar-link-visited}*/;
+}
+.ui-bar-f a.ui-link:hover {
+    color: #2489ce /*{f-bar-link-hover}*/;
+}
+.ui-bar-f a.ui-link:active {
+    color: #2489ce /*{f-bar-link-active}*/;
+}
+.ui-bar-f,
+.ui-bar-f input,
+.ui-bar-f select,
+.ui-bar-f textarea,
+.ui-bar-f button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-f,
+.ui-overlay-f {
+    border: 1px solid #444444 /*{f-body-border}*/;
+    color: #ffffff /*{f-body-color}*/;
+    text-shadow: 0 /*{f-body-shadow-x}*/ 1px /*{f-body-shadow-y}*/ 0 /*{f-body-shadow-radius}*/ #111111 /*{f-body-shadow-color}*/;
+    background: #222222 /*{f-body-background-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #444444 /*{f-body-background-start}*/), to( #222222 /*{f-body-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #444444 /*{f-body-background-start}*/, #222222 /*{f-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #444444 /*{f-body-background-start}*/, #222222 /*{f-body-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #444444 /*{f-body-background-start}*/, #222222 /*{f-body-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #444444 /*{f-body-background-start}*/, #222222 /*{f-body-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #444444 /*{f-body-background-start}*/, #222222 /*{f-body-background-end}*/);
+}
+.ui-overlay-f {
+    background-image: none;
+    border-width: 0;
+}
+.ui-body-f,
+.ui-body-f input,
+.ui-body-f select,
+.ui-body-f textarea,
+.ui-body-f button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-f .ui-link-inherit {
+    color: #ffffff /*{f-body-color}*/;
+}
+.ui-body-f .ui-link {
+    color: #2489ce /*{f-body-link-color}*/;
+    font-weight: bold;
+}
+.ui-body-f .ui-link:visited {
+    color: #2489ce /*{f-body-link-visited}*/;
+}
+.ui-body-f .ui-link:hover {
+    color: #2489ce /*{f-body-link-hover}*/;
+}
+.ui-body-f .ui-link:active {
+    color: #2489ce /*{f-body-link-active}*/;
+}
+.ui-btn-up-f {
+    border: 1px solid #313030 /*{f-bup-border}*/;
+    background: #3b3b3b /*{f-bup-background-color}*/;
+    color: #ffffff /*{f-bup-color}*/;
+    text-shadow: 0 /*{f-bup-shadow-x}*/ 1px /*{f-bup-shadow-y}*/ 0 /*{f-bup-shadow-radius}*/ #111111 /*{f-bup-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #3b3b3b /*{f-bup-background-start}*/), to( #3b3b3b /*{f-bup-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #3b3b3b /*{f-bup-background-start}*/, #3b3b3b /*{f-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #3b3b3b /*{f-bup-background-start}*/, #3b3b3b /*{f-bup-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #3b3b3b /*{f-bup-background-start}*/, #3b3b3b /*{f-bup-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #3b3b3b /*{f-bup-background-start}*/, #3b3b3b /*{f-bup-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #3b3b3b /*{f-bup-background-start}*/, #3b3b3b /*{f-bup-background-end}*/);
+}
+.ui-btn-up-f:visited,
+.ui-btn-up-f a.ui-link-inherit {
+    color: #ffffff /*{f-bup-color}*/;
+}
+.ui-btn-hover-f {
+    border: 1px solid #4f4f4f /*{f-bhover-border}*/;
+    background: #444444 /*{f-bhover-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{f-bhover-color}*/;
+    text-shadow: 0 /*{f-bhover-shadow-x}*/ 1px /*{f-bhover-shadow-y}*/ 0 /*{f-bhover-shadow-radius}*/ #111111 /*{f-bhover-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #444444 /*{f-bhover-background-start}*/), to( #444444 /*{f-bhover-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #444444 /*{f-bhover-background-start}*/, #444444 /*{f-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #444444 /*{f-bhover-background-start}*/, #444444 /*{f-bhover-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #444444 /*{f-bhover-background-start}*/, #444444 /*{f-bhover-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #444444 /*{f-bhover-background-start}*/, #444444 /*{f-bhover-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #444444 /*{f-bhover-background-start}*/, #444444 /*{f-bhover-background-end}*/);
+}
+.ui-btn-hover-f:visited,
+.ui-btn-hover-f:hover,
+.ui-btn-hover-f a.ui-link-inherit {
+    color: #ffffff /*{f-bhover-color}*/;
+}
+.ui-btn-down-f {
+    border: 1px solid #000000 /*{f-bdown-border}*/;
+    background: #222222 /*{f-bdown-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{f-bdown-color}*/;
+    text-shadow: 0 /*{f-bdown-shadow-x}*/ 1px /*{f-bdown-shadow-y}*/ 0 /*{f-bdown-shadow-radius}*/ #111111 /*{f-bdown-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{f-bdown-background-start}*/), to( #2c2c2c /*{f-bdown-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #202020 /*{f-bdown-background-start}*/, #2c2c2c /*{f-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #202020 /*{f-bdown-background-start}*/, #2c2c2c /*{f-bdown-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #202020 /*{f-bdown-background-start}*/, #2c2c2c /*{f-bdown-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #202020 /*{f-bdown-background-start}*/, #2c2c2c /*{f-bdown-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #202020 /*{f-bdown-background-start}*/, #2c2c2c /*{f-bdown-background-end}*/);
+}
+.ui-btn-down-f:visited,
+.ui-btn-down-f:hover,
+.ui-btn-down-f a.ui-link-inherit {
+    color: #ffffff /*{f-bdown-color}*/;
+}
+.ui-btn-up-f,
+.ui-btn-hover-f,
+.ui-btn-down-f {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+    text-decoration: none;
+}
+
+
+/* G
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-g {
+    border: 1px solid #456f9a /*{g-bar-border}*/;
+    background: #5e87b0 /*{g-bar-background-color}*/;
+    color: #ffffff /*{g-bar-color}*/;
+    font-weight: bold;
+    text-shadow: 0 /*{g-bar-shadow-x}*/ 1px /*{g-bar-shadow-y}*/ 0 /*{g-bar-shadow-radius}*/ #3e6790 /*{g-bar-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{g-bar-background-start}*/), to( #497bae /*{g-bar-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #6facd5 /*{g-bar-background-start}*/, #497bae /*{g-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #6facd5 /*{g-bar-background-start}*/, #497bae /*{g-bar-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #6facd5 /*{g-bar-background-start}*/, #497bae /*{g-bar-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #6facd5 /*{g-bar-background-start}*/, #497bae /*{g-bar-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #6facd5 /*{g-bar-background-start}*/, #497bae /*{g-bar-background-end}*/);
+}
+.ui-bar-g .ui-link-inherit {
+    color: #ffffff /*{g-bar-color}*/;
+}
+.ui-bar-g a.ui-link {
+    color: #ddf0f8 /*{g-bar-link-color}*/;
+    font-weight: bold;
+}
+.ui-bar-g a.ui-link:visited {
+    color: #ddf0f8 /*{g-bar-link-visited}*/;
+}
+.ui-bar-g a.ui-link:hover {
+    color: #ddf0f8 /*{g-bar-link-hover}*/;
+}
+.ui-bar-g a.ui-link:active {
+    color: #ddf0f8 /*{g-bar-link-active}*/;
+}
+.ui-bar-g,
+.ui-bar-g input,
+.ui-bar-g select,
+.ui-bar-g textarea,
+.ui-bar-g button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-g,
+.ui-overlay-g {
+    border: 1px solid #999999 /*{g-body-border}*/;
+    color: #333333 /*{g-body-color}*/;
+    text-shadow: 0 /*{g-body-shadow-x}*/ 1px /*{g-body-shadow-y}*/ 0 /*{g-body-shadow-radius}*/ #ffffff /*{g-body-shadow-color}*/;
+    background: #f3f3f3 /*{g-body-background-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #dddddd /*{g-body-background-start}*/), to( #cccccc /*{g-body-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #dddddd /*{g-body-background-start}*/, #cccccc /*{g-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #dddddd /*{g-body-background-start}*/, #cccccc /*{g-body-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #dddddd /*{g-body-background-start}*/, #cccccc /*{g-body-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #dddddd /*{g-body-background-start}*/, #cccccc /*{g-body-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #dddddd /*{g-body-background-start}*/, #cccccc /*{g-body-background-end}*/);
+}
+.ui-overlay-g {
+    background-image: none;
+    border-width: 0;
+}
+.ui-body-g,
+.ui-body-g input,
+.ui-body-g select,
+.ui-body-g textarea,
+.ui-body-g button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-g .ui-link-inherit {
+    color: #333333 /*{g-body-color}*/;
+}
+.ui-body-g .ui-link {
+    color: #2489ce /*{g-body-link-color}*/;
+    font-weight: bold;
+}
+.ui-body-g .ui-link:visited {
+    color: #2489ce /*{g-body-link-visited}*/;
+}
+.ui-body-g .ui-link:hover {
+    color: #2489ce /*{g-body-link-hover}*/;
+}
+.ui-body-g .ui-link:active {
+    color: #2489ce /*{g-body-link-active}*/;
+}
+.ui-btn-up-g {
+    border: 1px solid #23272a /*{g-bup-border}*/;
+    background: #313e49 /*{g-bup-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{g-bup-color}*/;
+    text-shadow: 0 /*{g-bup-shadow-x}*/ 1px /*{g-bup-shadow-y}*/ 0 /*{g-bup-shadow-radius}*/ #194b7e /*{g-bup-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #425463 /*{g-bup-background-start}*/), to( #1f272e /*{g-bup-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #425463 /*{g-bup-background-start}*/, #1f272e /*{g-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #425463 /*{g-bup-background-start}*/, #1f272e /*{g-bup-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #425463 /*{g-bup-background-start}*/, #1f272e /*{g-bup-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #425463 /*{g-bup-background-start}*/, #1f272e /*{g-bup-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #425463 /*{g-bup-background-start}*/, #1f272e /*{g-bup-background-end}*/);
+}
+.ui-btn-up-g:visited,
+.ui-btn-up-g a.ui-link-inherit {
+    color: #ffffff /*{g-bup-color}*/;
+}
+.ui-btn-hover-g {
+    border: 1px solid #00415e /*{g-bhover-border}*/;
+    background: #4b88b6 /*{g-bhover-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{g-bhover-color}*/;
+    text-shadow: 0 /*{g-bhover-shadow-x}*/ 1px /*{g-bhover-shadow-y}*/ 0 /*{g-bhover-shadow-radius}*/ #194b7e /*{g-bhover-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{g-bhover-background-start}*/), to( #4272a4 /*{g-bhover-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #6facd5 /*{g-bhover-background-start}*/, #4272a4 /*{g-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #6facd5 /*{g-bhover-background-start}*/, #4272a4 /*{g-bhover-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #6facd5 /*{g-bhover-background-start}*/, #4272a4 /*{g-bhover-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #6facd5 /*{g-bhover-background-start}*/, #4272a4 /*{g-bhover-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #6facd5 /*{g-bhover-background-start}*/, #4272a4 /*{g-bhover-background-end}*/);
+}
+.ui-btn-hover-g:visited,
+.ui-btn-hover-g:hover,
+.ui-btn-hover-g a.ui-link-inherit {
+    color: #ffffff /*{g-bhover-color}*/;
+}
+.ui-btn-down-g {
+    border: 1px solid #225377 /*{g-bdown-border}*/;
+    background: #4e89c5 /*{g-bdown-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{g-bdown-color}*/;
+    text-shadow: 0 /*{g-bdown-shadow-x}*/ 1px /*{g-bdown-shadow-y}*/ 0 /*{g-bdown-shadow-radius}*/ #194b7e /*{g-bdown-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{g-bdown-background-start}*/), to( #3e79b5 /*{g-bdown-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #295b8e /*{g-bdown-background-start}*/, #3e79b5 /*{g-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #295b8e /*{g-bdown-background-start}*/, #3e79b5 /*{g-bdown-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #295b8e /*{g-bdown-background-start}*/, #3e79b5 /*{g-bdown-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #295b8e /*{g-bdown-background-start}*/, #3e79b5 /*{g-bdown-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #295b8e /*{g-bdown-background-start}*/, #3e79b5 /*{g-bdown-background-end}*/);
+}
+.ui-btn-down-g:visited,
+.ui-btn-down-g:hover,
+.ui-btn-down-g a.ui-link-inherit {
+    color: #ffffff /*{g-bdown-color}*/;
+}
+.ui-btn-up-g,
+.ui-btn-hover-g,
+.ui-btn-down-g {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+    text-decoration: none;
+}
+
+
+/* H
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-h {
+    border: 1px solid #333333 /*{h-bar-border}*/;
+    background: #111111 /*{h-bar-background-color}*/;
+    color: #ffffff /*{h-bar-color}*/;
+    font-weight: bold;
+    text-shadow: 0 /*{h-bar-shadow-x}*/ -1px /*{h-bar-shadow-y}*/ 0 /*{h-bar-shadow-radius}*/ #000000 /*{h-bar-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{h-bar-background-start}*/), to( #111111 /*{h-bar-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #3c3c3c /*{h-bar-background-start}*/, #111111 /*{h-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #3c3c3c /*{h-bar-background-start}*/, #111111 /*{h-bar-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #3c3c3c /*{h-bar-background-start}*/, #111111 /*{h-bar-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #3c3c3c /*{h-bar-background-start}*/, #111111 /*{h-bar-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #3c3c3c /*{h-bar-background-start}*/, #111111 /*{h-bar-background-end}*/);
+}
+.ui-bar-h .ui-link-inherit {
+    color: #ffffff /*{h-bar-color}*/;
+}
+.ui-bar-h a.ui-link {
+    color: #7cc4e7 /*{h-bar-link-color}*/;
+    font-weight: bold;
+}
+.ui-bar-h a.ui-link:visited {
+    color: #2489ce /*{h-bar-link-visited}*/;
+}
+.ui-bar-h a.ui-link:hover {
+    color: #2489ce /*{h-bar-link-hover}*/;
+}
+.ui-bar-h a.ui-link:active {
+    color: #2489ce /*{h-bar-link-active}*/;
+}
+.ui-bar-h,
+.ui-bar-h input,
+.ui-bar-h select,
+.ui-bar-h textarea,
+.ui-bar-h button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-h,
+.ui-overlay-h {
+    border: 1px solid #444444 /*{h-body-border}*/;
+    color: #ffffff /*{h-body-color}*/;
+    text-shadow: 0 /*{h-body-shadow-x}*/ 1px /*{h-body-shadow-y}*/ 0 /*{h-body-shadow-radius}*/ #111111 /*{h-body-shadow-color}*/;
+    background: #222222 /*{h-body-background-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #444444 /*{h-body-background-start}*/), to( #222222 /*{h-body-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #444444 /*{h-body-background-start}*/, #222222 /*{h-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #444444 /*{h-body-background-start}*/, #222222 /*{h-body-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #444444 /*{h-body-background-start}*/, #222222 /*{h-body-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #444444 /*{h-body-background-start}*/, #222222 /*{h-body-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #444444 /*{h-body-background-start}*/, #222222 /*{h-body-background-end}*/);
+}
+.ui-overlay-h {
+    background-image: none;
+    border-width: 0;
+}
+.ui-body-h,
+.ui-body-h input,
+.ui-body-h select,
+.ui-body-h textarea,
+.ui-body-h button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-h .ui-link-inherit {
+    color: #ffffff /*{h-body-color}*/;
+}
+.ui-body-h .ui-link {
+    color: #2489ce /*{h-body-link-color}*/;
+    font-weight: bold;
+}
+.ui-body-h .ui-link:visited {
+    color: #2489ce /*{h-body-link-visited}*/;
+}
+.ui-body-h .ui-link:hover {
+    color: #2489ce /*{h-body-link-hover}*/;
+}
+.ui-body-h .ui-link:active {
+    color: #2489ce /*{h-body-link-active}*/;
+}
+.ui-btn-up-h {
+    border: 1px solid #000000 /*{h-bup-border}*/;
+    background: #323e49 /*{h-bup-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{h-bup-color}*/;
+    text-shadow: 0 /*{h-bup-shadow-x}*/ 1px /*{h-bup-shadow-y}*/ 0 /*{h-bup-shadow-radius}*/ #111111 /*{h-bup-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #425160 /*{h-bup-background-start}*/), to( #222a31 /*{h-bup-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #425160 /*{h-bup-background-start}*/, #222a31 /*{h-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #425160 /*{h-bup-background-start}*/, #222a31 /*{h-bup-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #425160 /*{h-bup-background-start}*/, #222a31 /*{h-bup-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #425160 /*{h-bup-background-start}*/, #222a31 /*{h-bup-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #425160 /*{h-bup-background-start}*/, #222a31 /*{h-bup-background-end}*/);
+}
+.ui-btn-up-h:visited,
+.ui-btn-up-h a.ui-link-inherit {
+    color: #ffffff /*{h-bup-color}*/;
+}
+.ui-btn-hover-h {
+    border: 1px solid #000000 /*{h-bhover-border}*/;
+    background: #41505e /*{h-bhover-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{h-bhover-color}*/;
+    text-shadow: 0 /*{h-bhover-shadow-x}*/ 1px /*{h-bhover-shadow-y}*/ 0 /*{h-bhover-shadow-radius}*/ #111111 /*{h-bhover-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #5b7083 /*{h-bhover-background-start}*/), to( #273038 /*{h-bhover-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #5b7083 /*{h-bhover-background-start}*/, #273038 /*{h-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #5b7083 /*{h-bhover-background-start}*/, #273038 /*{h-bhover-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #5b7083 /*{h-bhover-background-start}*/, #273038 /*{h-bhover-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #5b7083 /*{h-bhover-background-start}*/, #273038 /*{h-bhover-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #5b7083 /*{h-bhover-background-start}*/, #273038 /*{h-bhover-background-end}*/);
+}
+.ui-btn-hover-h:visited,
+.ui-btn-hover-h:hover,
+.ui-btn-hover-h a.ui-link-inherit {
+    color: #ffffff /*{h-bhover-color}*/;
+}
+.ui-btn-down-h {
+    border: 1px solid #000000 /*{h-bdown-border}*/;
+    background: #464f58 /*{h-bdown-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{h-bdown-color}*/;
+    text-shadow: 0 /*{h-bdown-shadow-x}*/ 1px /*{h-bdown-shadow-y}*/ 0 /*{h-bdown-shadow-radius}*/ #111111 /*{h-bdown-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #464f58 /*{h-bdown-background-start}*/), to( #464f58 /*{h-bdown-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #464f58 /*{h-bdown-background-start}*/, #464f58 /*{h-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #464f58 /*{h-bdown-background-start}*/, #464f58 /*{h-bdown-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #464f58 /*{h-bdown-background-start}*/, #464f58 /*{h-bdown-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #464f58 /*{h-bdown-background-start}*/, #464f58 /*{h-bdown-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #464f58 /*{h-bdown-background-start}*/, #464f58 /*{h-bdown-background-end}*/);
+}
+.ui-btn-down-h:visited,
+.ui-btn-down-h:hover,
+.ui-btn-down-h a.ui-link-inherit {
+    color: #ffffff /*{h-bdown-color}*/;
+}
+.ui-btn-up-h,
+.ui-btn-hover-h,
+.ui-btn-down-h {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+    text-decoration: none;
+}
+
+
+/* I
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-i {
+    border: 1px solid #333333 /*{i-bar-border}*/;
+    background: #111111 /*{i-bar-background-color}*/;
+    color: #ffffff /*{i-bar-color}*/;
+    font-weight: bold;
+    text-shadow: 0 /*{i-bar-shadow-x}*/ -1px /*{i-bar-shadow-y}*/ 0 /*{i-bar-shadow-radius}*/ #000000 /*{i-bar-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{i-bar-background-start}*/), to( #111111 /*{i-bar-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #3c3c3c /*{i-bar-background-start}*/, #111111 /*{i-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #3c3c3c /*{i-bar-background-start}*/, #111111 /*{i-bar-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #3c3c3c /*{i-bar-background-start}*/, #111111 /*{i-bar-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #3c3c3c /*{i-bar-background-start}*/, #111111 /*{i-bar-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #3c3c3c /*{i-bar-background-start}*/, #111111 /*{i-bar-background-end}*/);
+}
+.ui-bar-i .ui-link-inherit {
+    color: #ffffff /*{i-bar-color}*/;
+}
+.ui-bar-i a.ui-link {
+    color: #7cc4e7 /*{i-bar-link-color}*/;
+    font-weight: bold;
+}
+.ui-bar-i a.ui-link:visited {
+    color: #2489ce /*{i-bar-link-visited}*/;
+}
+.ui-bar-i a.ui-link:hover {
+    color: #2489ce /*{i-bar-link-hover}*/;
+}
+.ui-bar-i a.ui-link:active {
+    color: #2489ce /*{i-bar-link-active}*/;
+}
+.ui-bar-i,
+.ui-bar-i input,
+.ui-bar-i select,
+.ui-bar-i textarea,
+.ui-bar-i button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-i,
+.ui-overlay-i {
+    border: 1px solid #444444 /*{i-body-border}*/;
+    color: #ffffff /*{i-body-color}*/;
+    text-shadow: 0 /*{i-body-shadow-x}*/ 1px /*{i-body-shadow-y}*/ 0 /*{i-body-shadow-radius}*/ #111111 /*{i-body-shadow-color}*/;
+    background: #222222 /*{i-body-background-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #444444 /*{i-body-background-start}*/), to( #222222 /*{i-body-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #444444 /*{i-body-background-start}*/, #222222 /*{i-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #444444 /*{i-body-background-start}*/, #222222 /*{i-body-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #444444 /*{i-body-background-start}*/, #222222 /*{i-body-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #444444 /*{i-body-background-start}*/, #222222 /*{i-body-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #444444 /*{i-body-background-start}*/, #222222 /*{i-body-background-end}*/);
+}
+.ui-overlay-i {
+    background-image: none;
+    border-width: 0;
+}
+.ui-body-i,
+.ui-body-i input,
+.ui-body-i select,
+.ui-body-i textarea,
+.ui-body-i button {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-i .ui-link-inherit {
+    color: #ffffff /*{i-body-color}*/;
+}
+.ui-body-i .ui-link {
+    color: #2489ce /*{i-body-link-color}*/;
+    font-weight: bold;
+}
+.ui-body-i .ui-link:visited {
+    color: #2489ce /*{i-body-link-visited}*/;
+}
+.ui-body-i .ui-link:hover {
+    color: #2489ce /*{i-body-link-hover}*/;
+}
+.ui-body-i .ui-link:active {
+    color: #2489ce /*{i-body-link-active}*/;
+}
+.ui-btn-up-i {
+    border: 1px solid #250e0e /*{i-bup-border}*/;
+    background: #503f45 /*{i-bup-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{i-bup-color}*/;
+    text-shadow: 0 /*{i-bup-shadow-x}*/ 1px /*{i-bup-shadow-y}*/ 0 /*{i-bup-shadow-radius}*/ #111111 /*{i-bup-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #69535b /*{i-bup-background-start}*/), to( #362a2e /*{i-bup-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #69535b /*{i-bup-background-start}*/, #362a2e /*{i-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #69535b /*{i-bup-background-start}*/, #362a2e /*{i-bup-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #69535b /*{i-bup-background-start}*/, #362a2e /*{i-bup-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #69535b /*{i-bup-background-start}*/, #362a2e /*{i-bup-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #69535b /*{i-bup-background-start}*/, #362a2e /*{i-bup-background-end}*/);
+}
+.ui-btn-up-i:visited,
+.ui-btn-up-i a.ui-link-inherit {
+    color: #ffffff /*{i-bup-color}*/;
+}
+.ui-btn-hover-i {
+    border: 1px solid #250e0e /*{i-bhover-border}*/;
+    background: #5c4b51 /*{i-bhover-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{i-bhover-color}*/;
+    text-shadow: 0 /*{i-bhover-shadow-x}*/ 1px /*{i-bhover-shadow-y}*/ 0 /*{i-bhover-shadow-radius}*/ #111111 /*{i-bhover-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #7c656d /*{i-bhover-background-start}*/), to( #3b3034 /*{i-bhover-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #7c656d /*{i-bhover-background-start}*/, #3b3034 /*{i-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #7c656d /*{i-bhover-background-start}*/, #3b3034 /*{i-bhover-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #7c656d /*{i-bhover-background-start}*/, #3b3034 /*{i-bhover-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #7c656d /*{i-bhover-background-start}*/, #3b3034 /*{i-bhover-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #7c656d /*{i-bhover-background-start}*/, #3b3034 /*{i-bhover-background-end}*/);
+}
+.ui-btn-hover-i:visited,
+.ui-btn-hover-i:hover,
+.ui-btn-hover-i a.ui-link-inherit {
+    color: #ffffff /*{i-bhover-color}*/;
+}
+.ui-btn-down-i {
+    border: 1px solid #250e0e /*{i-bdown-border}*/;
+    background: #43373b /*{i-bdown-background-color}*/;
+    font-weight: bold;
+    color: #ffffff /*{i-bdown-color}*/;
+    text-shadow: 0 /*{i-bdown-shadow-x}*/ 1px /*{i-bdown-shadow-y}*/ 0 /*{i-bdown-shadow-radius}*/ #111111 /*{i-bdown-shadow-color}*/;
+    background-image: -webkit-gradient(linear, left top, left bottom, from( #43373b /*{i-bdown-background-start}*/), to( #43373b /*{i-bdown-background-end}*/)); /* Saf4+, Chrome */
+    background-image: -webkit-linear-gradient( #43373b /*{i-bdown-background-start}*/, #43373b /*{i-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+    background-image:    -moz-linear-gradient( #43373b /*{i-bdown-background-start}*/, #43373b /*{i-bdown-background-end}*/); /* FF3.6 */
+    background-image:     -ms-linear-gradient( #43373b /*{i-bdown-background-start}*/, #43373b /*{i-bdown-background-end}*/); /* IE10 */
+    background-image:      -o-linear-gradient( #43373b /*{i-bdown-background-start}*/, #43373b /*{i-bdown-background-end}*/); /* Opera 11.10+ */
+    background-image:         linear-gradient( #43373b /*{i-bdown-background-start}*/, #43373b /*{i-bdown-background-end}*/);
+}
+.ui-btn-down-i:visited,
+.ui-btn-down-i:hover,
+.ui-btn-down-i a.ui-link-inherit {
+    color: #ffffff /*{i-bdown-color}*/;
+}
+.ui-btn-up-i,
+.ui-btn-hover-i,
+.ui-btn-down-i {
+      font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+    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
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-btn-active:visited,
+.ui-btn-active:hover,
+.ui-btn-active a.ui-link-inherit {
+    color: #ffffff /*{global-active-color}*/;
+}
+/* button inner top highlight
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-inner {
+    border-top: 1px solid   #fff;
+    border-color:           rgba(255,255,255,.3);
+}
+/* corner rounding classes
+-----------------------------------------------------------------------------------------------------------*/
+.ui-corner-all {
+    -webkit-border-radius: .6em /*{global-radii-blocks}*/;
+    border-radius: .6em /*{global-radii-blocks}*/;
+}
+/* Form field separator
+-----------------------------------------------------------------------------------------------------------*/
+.ui-br {
+    border-color: rgb(130,130,130);
+    border-color: rgba(130,130,130,.3);
+    border-style: solid;
+}
+/* Interaction cues
+-----------------------------------------------------------------------------------------------------------*/
+.ui-disabled {
+    filter: Alpha(Opacity=30);
+    opacity: .3;
+    zoom: 1;
+}
+.ui-disabled,
+.ui-disabled a {
+    cursor: default !important;
+    pointer-events: none;
+}
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon,
+.ui-icon-searchfield:after {
+    background-image: url(images/icons-18-white.png) /*{global-icon-set}*/;
+    background-repeat: no-repeat;
+    -webkit-border-radius:              9px;
+    border-radius:                      9px;
+}
+/* Alt icon color
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon-alt .ui-icon,
+.ui-icon-alt .ui-icon-searchfield:after {
+    background-color:                       #fff;
+    background-color:                       rgba(255,255,255,.3);
+    background-image: url(images/icons-18-black.png);
+    background-repeat: no-repeat;
+}
+/* No disc
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon-nodisc .ui-icon,
+.ui-icon-nodisc .ui-icon-searchfield:after,
+.ui-icon-nodisc .ui-icon-alt .ui-icon,
+.ui-icon-nodisc .ui-icon-alt .ui-icon-searchfield:after {
+    background-color: transparent;
+}
+/* Icon sprite
+-----------------------------------------------------------------------------------------------------------*/
+/* plus minus */
+.ui-icon-plus {
+    background-position:    -1px -1px;
+}
+.ui-icon-minus {
+    background-position:    -37px -1px;
+}
+/* delete/close */
+.ui-icon-delete {
+    background-position:    -73px -1px;
+}
+/* arrows */
+.ui-icon-arrow-r {
+    background-position:    -108px -1px;
+}
+.ui-icon-arrow-l {
+    background-position:    -144px -1px;
+}
+.ui-icon-arrow-u {
+    background-position:    -180px -1px;
+}
+.ui-icon-arrow-d {
+    background-position:    -216px -1px;
+}
+/* misc */
+.ui-icon-check {
+    background-position:    -252px -1px;
+}
+.ui-icon-gear {
+    background-position:    -288px -1px;
+}
+.ui-icon-refresh {
+    background-position:    -323px -1px;
+}
+.ui-icon-forward {
+    background-position:    -360px -1px;
+}
+.ui-icon-back {
+    background-position:    -396px -1px;
+}
+.ui-icon-grid {
+    background-position:    -432px -1px;
+}
+.ui-icon-star {
+    background-position:    -467px -1px;
+}
+.ui-icon-alert {
+    background-position:    -503px -1px;
+}
+.ui-icon-info {
+    background-position:    -539px -1px;
+}
+.ui-icon-home {
+    background-position:    -575px -1px;
+}
+/* search */
+.ui-icon-search,
+.ui-icon-searchfield:after {
+    background-position:    -611px -1px;
+}
+/* checkbox radio */
+.ui-icon-checkbox-on {
+    background-position:    -647px -1px;
+}
+.ui-icon-checkbox-off {
+    background-position:    -683px -1px;
+}
+.ui-icon-radio-on {
+    background-position:    -718px -1px;
+}
+.ui-icon-radio-off {
+    background-position:    -754px -1px;
+}
+/* menu edit */
+.ui-icon-bars {
+    background-position:    -788px -1px;
+}
+.ui-icon-edit {
+    background-position:    -824px -1px;
+}
+/* HD/"retina" sprite
+-----------------------------------------------------------------------------------------------------------*/
+@media only screen and (-webkit-min-device-pixel-ratio: 1.3),
+       only screen and (min--moz-device-pixel-ratio: 1.3),
+       only screen and (min-resolution: 200dpi) {
+
+    .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r,
+    .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check,
+    .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back,
+    .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-bars, .ui-icon-edit,
+    .ui-icon-search, .ui-icon-searchfield:after,
+    .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on {
+        background-image: url(images/icons-36-white.png);
+        -moz-background-size: 864px 18px;
+        -o-background-size: 864px 18px;
+        -webkit-background-size: 864px 18px;
+        background-size: 864px 18px;
+    }
+    .ui-icon-alt .ui-icon {
+        background-image: url(images/icons-36-black.png);
+    }
+    .ui-icon-plus {
+        background-position:    0 50%;
+    }
+    .ui-icon-minus {
+        background-position:    -36px 50%;
+    }
+    .ui-icon-delete {
+        background-position:    -72px 50%;
+    }
+    .ui-icon-arrow-r {
+        background-position:    -108px 50%;
+    }
+    .ui-icon-arrow-l {
+        background-position:    -144px 50%;
+    }
+    .ui-icon-arrow-u {
+        background-position:    -179px 50%;
+    }
+    .ui-icon-arrow-d {
+        background-position:    -215px 50%;
+    }
+    .ui-icon-check {
+        background-position:    -252px 50%;
+    }
+    .ui-icon-gear {
+        background-position:    -287px 50%;
+    }
+    .ui-icon-refresh {
+        background-position:    -323px 50%;
+    }
+    .ui-icon-forward {
+        background-position:    -360px 50%;
+    }
+    .ui-icon-back {
+        background-position:    -395px 50%;
+    }
+    .ui-icon-grid {
+        background-position:    -431px 50%;
+    }
+    .ui-icon-star {
+        background-position:    -467px 50%;
+    }
+    .ui-icon-alert {
+        background-position:    -503px 50%;
+    }
+    .ui-icon-info {
+        background-position:    -538px 50%;
+    }
+    .ui-icon-home {
+        background-position:    -575px 50%;
+    }
+    .ui-icon-search,
+    .ui-icon-searchfield:after {
+        background-position:    -611px 50%;
+    }
+    .ui-icon-checkbox-on {
+        background-position:    -647px 50%;
+    }
+    .ui-icon-checkbox-off {
+        background-position:    -683px 50%;
+    }
+    .ui-icon-radio-on {
+        background-position:    -718px 50%;
+    }
+    .ui-icon-radio-off {
+        background-position:    -754px 50%;
+    }
+    .ui-icon-bars {
+        background-position:    -788px 50%;
+
+    }.ui-icon-edit {
+        background-position:    -824px 50%;
+    }
+}
+/* checks,radios */
+.ui-checkbox .ui-icon,
+.ui-selectmenu-list .ui-icon {
+    -webkit-border-radius: 3px;
+    border-radius: 3px;
+}
+.ui-icon-checkbox-off,
+.ui-icon-radio-off {
+    background-color: transparent;
+}
+.ui-checkbox-on .ui-icon,
+.ui-radio-on .ui-icon {
+    background-color: #387bbe /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */
+}
+/* loading icon */
+.ui-icon-loading {
+    background: url(images/ajax-loader.gif);
+    background-size: 46px 46px;
+}
+/* Button corner class
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-corner-all {
+    -webkit-border-radius: 1em /*{global-radii-buttons}*/;
+    border-radius: 1em /*{global-radii-buttons}*/;
+}
+/* radius clip workaround for cleaning up corner trapping */
+.ui-corner-all,
+.ui-btn-corner-all {
+    -webkit-background-clip: padding;
+    background-clip: padding-box;
+}
+/* Overlay / modal
+-----------------------------------------------------------------------------------------------------------*/
+.ui-overlay {
+    background: #666;
+    filter: Alpha(Opacity=50);
+    opacity: .5;
+    position: absolute;
+    width: 100%;
+    height: 100%;
+}
+.ui-overlay-shadow {
+    -moz-box-shadow: 0 0 12px           rgba(0,0,0,.6);
+    -webkit-box-shadow: 0 0 12px        rgba(0,0,0,.6);
+    box-shadow: 0 0 12px                rgba(0,0,0,.6);
+}
+.ui-shadow {
+    -moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+    -webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+    box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/
+}
+.ui-bar-a .ui-shadow,
+.ui-bar-b .ui-shadow ,
+.ui-bar-c .ui-shadow  {
+    -moz-box-shadow: 0 1px 0                rgba(255,255,255,.3);
+    -webkit-box-shadow: 0 1px 0             rgba(255,255,255,.3);
+    box-shadow: 0 1px 0                     rgba(255,255,255,.3);
+}
+.ui-shadow-inset {
+    -moz-box-shadow: inset 0 1px 4px        rgba(0,0,0,.2);
+    -webkit-box-shadow: inset 0 1px 4px     rgba(0,0,0,.2);
+    box-shadow: inset 0 1px 4px             rgba(0,0,0,.2);
+}
+.ui-icon-shadow {
+    -moz-box-shadow: 0 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+    -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+    box-shadow: 0 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+}
+/* Focus state - set here for specificity (note: these classes are added by JavaScript)
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn:focus, .ui-link-inherit:focus {
+    outline: 0;
+}
+.ui-btn.ui-focus {
+    z-index: 1;
+}
+.ui-focus,
+.ui-btn:focus {
+    -moz-box-shadow: inset 0 0 3px #387bbe /*{global-active-background-color}*/, 0 0 9px #387bbe /*{global-active-background-color}*/;
+    -webkit-box-shadow: inset 0 0 3px #387bbe /*{global-active-background-color}*/, 0 0 9px #387bbe /*{global-active-background-color}*/;
+    box-shadow: inset 0 0 3px #387bbe /*{global-active-background-color}*/, 0 0 9px #387bbe /*{global-active-background-color}*/;
+}
+.ui-input-text.ui-focus,
+.ui-input-search.ui-focus {
+    -moz-box-shadow: 0 0 12px #387bbe /*{global-active-background-color}*/;
+    -webkit-box-shadow: 0 0 12px #387bbe /*{global-active-background-color}*/;
+    box-shadow: 0 0 12px #387bbe /*{global-active-background-color}*/;
+}
+/* unset box shadow in browsers that don't do it right
+-----------------------------------------------------------------------------------------------------------*/
+.ui-mobile-nosupport-boxshadow * {
+    -moz-box-shadow: none !important;
+    -webkit-box-shadow: none !important;
+    box-shadow: none !important;
+}
+/* ...and bring back focus */
+.ui-mobile-nosupport-boxshadow .ui-focus,
+.ui-mobile-nosupport-boxshadow .ui-btn:focus,
+.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus {
+    outline-width: 1px;
+    outline-style: auto;
+}
diff --git a/ism/data/remote-input/game_mode.htm b/ism/data/remote-input/game_mode.htm
new file mode 100644 (file)
index 0000000..b8fa6ef
--- /dev/null
@@ -0,0 +1,299 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Tizen Remote Input</title>
+
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable = 0"/>
+    <link rel="stylesheet" href="custom3.css" type="text/css"/>
+    <link rel="stylesheet" href="jquery.mobile-1.3.1.css" type="text/css"/>
+    <script src="ajaxCaller.js" type="text/javascript"> </script>
+    <script src="util.js" type="text/javascript"> </script>
+    <script src="jquery-2.0.2.min.js"></script>
+    <script src="jquery.mobile-1.3.1.min.js"></script>
+    <style type="text/css">
+        #bt_circle_X, #bt_circle_Y, #bt_circle_A, #bt_circle_B{
+        width: 65x !important;
+        height: 65px !important;
+        border-radius: 50% !important;
+        }
+     </style>
+
+    <script>
+
+    </script>
+
+
+</head>
+
+<body>
+    <script>
+        // Callback incremental index
+        var id_num = 0;
+
+        var KEY_MENU = 10001;
+        var KEY_HOME = 10002;
+        var KEY_BACK = 10003;
+
+        var GAME_KEY_UP = 111;
+        var GAME_KEY_LEFT = 113;
+        var GAME_KEY_RIGHT = 114;
+        var GAME_KEY_DOWN = 116;
+        var GAME_A = 304;
+        var GAME_B = 305;
+        var GAME_X = 307;
+        var GAME_Y = 308;
+
+        var GAME_SELECT = 314;
+        var GAME_START = 315;
+
+        var multi_touched = 0;
+        var touch_started_x = 0;
+        var touch_started_y = 0;
+        var touch_contentarea_Pressed=0;
+        var touch_contentarea_Moved=0;
+        var touch_contentarea_pre_x=0;
+        var touch_contentarea_pre_y=0;
+
+        function cbAjax(text, headers, callingContext){
+            id_num++;
+            return true;
+        }
+        function sendKeyEvent(keyCode){
+            var bodyVars = {id:id_num, key:'event', value:keyCode}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+        function absorbEvent_(event) {
+
+            var e = event || window.event;
+            sendKeyEvent(GAME_KEY_UP);
+            e.preventDefault && e.preventDefault();
+            e.stopPropagation && e.stopPropagation();
+            e.cancelBubble = true;
+            e.returnValue = false;
+            return false;
+        }
+        function preventLongPressMenu(node) {
+            node.ontouchmove = node.ontouchstart;
+            //node.ontouchend = absorbEvent_;
+            //node.ontouchcancel = absorbEvent_;
+        }
+
+
+        function checkOrientation(){
+              var currMode = "";
+              alert(window.orientation);
+                console.log("check_orientation")
+              switch(window.orientation){
+                   case 0:
+                   currMode = "landscape";
+                   break;
+                   case -90:
+                   currMode = "landscape";
+                   break;
+                   case 90:
+                   currMode = "landscape";
+                   break;
+                   case 180:
+                   currMode = "landscape";
+                   break;
+             }
+             document.getElementsByTagName("body")[0].setAttribute("class", currMode);
+        }
+
+        $(document).ready(function() {
+
+         checkOrientation();
+
+          setTimeout(function(){
+            window.scrollTo(0, 1);
+            }, 0);
+            // Disable the long press window
+            preventLongPressMenu(document.getElementById('bt_up'));
+            preventLongPressMenu(document.getElementById('bt_left'));
+            preventLongPressMenu(document.getElementById('bt_right'));
+            preventLongPressMenu(document.getElementById('bt_down'));
+
+            // 3 system hw buttons
+            $("#sys_btn_menu").click(function(event) {
+                sendKeyEvent(KEY_MENU);
+            });
+            $("#sys_btn_home").click(function(event) {
+                sendKeyEvent(KEY_HOME);
+            });
+            $("#sys_btn_back").click(function(event) {
+                sendKeyEvent(KEY_BACK);
+            });
+            window.onorientationchange = function(){
+              checkOrientation();
+               }
+
+/*
+            // GamePAD control buttons
+            $("#bt_up").click(function(event) {
+                sendKeyEvent(GAME_KEY_UP);
+                //console.log("bt_up");
+            });
+            $("#bt_left").click(function(event) {
+                //console.log("bt_left");
+                sendKeyEvent(GAME_KEY_LEFT);
+            });
+            $("#bt_right").click(function(event) {
+                sendKeyEvent(GAME_KEY_RIGHT);
+            });
+            $("#bt_down").click(function(event) {
+                sendKeyEvent(GAME_KEY_DOWN);
+            });
+*/
+
+            $("#bt_circle_X").click(function(event) {
+                sendKeyEvent(GAME_X);
+            });
+            $("#bt_circle_Y").click(function(event) {
+                sendKeyEvent(GAME_Y);
+            });
+            $("#bt_circle_A").click(function(event) {
+                sendKeyEvent(GAME_A);
+            });
+            $("#bt_circle_B").click(function(event) {
+                sendKeyEvent(GAME_B);
+            });
+            $("#bt_select").click(function(event) {
+                sendKeyEvent(GAME_MODE);
+            });
+            $("#bt_start").click(function(event) {
+                sendKeyEvent(GAME_START);
+            });
+
+            bt_up.addEventListener("touchstart", function(event) {
+                var e = event || window.event;
+                sendKeyEvent(GAME_KEY_UP);
+                //e.preventDefault && e.preventDefault();
+                e.returnValue = false;
+                return false;
+            });
+            bt_down.addEventListener("touchstart", function(event) {
+                var e = event || window.event;
+                sendKeyEvent(GAME_KEY_DOWN);
+                //e.preventDefault && e.preventDefault();
+                e.returnValue = false;
+                return false;
+            });
+            bt_left.addEventListener("touchstart", function(event) {
+                var e = event || window.event;
+                sendKeyEvent(GAME_KEY_LEFT);
+                //e.preventDefault && e.preventDefault();
+                e.returnValue = false;
+                return false;
+            });
+            bt_right.addEventListener("touchstart", function(event) {
+                var e = event || window.event;
+                sendKeyEvent(GAME_KEY_RIGHT);
+                //e.preventDefault && e.preventDefault();
+                e.returnValue = false;
+                return false;
+            });
+            //multi touch drag action for change mode
+            content_div.addEventListener("touchstart", function(event) {
+                touch_started_x = event.touches[0].pageX;
+                touch_started_y = event.touches[0].pageY;
+                multi_touched = event.touches.length;
+                touch_contentarea_Pressed=1;
+                touch_contentarea_Moved=0;
+                touch_contentarea_pre_x = event.touches[0].pageX;
+                touch_contentarea_pre_y = event.touches[0].pageY;
+
+            });
+
+            content_div.addEventListener("touchmove", function(event) {
+                event.preventDefault();
+                touch_contentarea_Moved = 1;
+                touch_contentarea_pre_x = event.touches[0].pageX;
+                touch_contentarea_pre_y = event.touches[0].pageY;
+                event.preventDefault();
+            });
+            content_div.addEventListener("touchend", function(event) {
+                if(touch_contentarea_Moved==1 && touch_contentarea_Pressed==1 && multi_touched == 2){
+                    if(touch_contentarea_pre_x-touch_started_x == 0){
+                        return;
+                    }
+
+                    coordinate2= touch_contentarea_pre_x-touch_started_x;
+                    if (Math.abs(coordinate2) >=130){
+                        window.location='tv_mode.htm';
+                    }
+                }
+                touch_contentarea_Pressed=0;
+                touch_contentarea_Moved=0;
+            });
+        });
+
+    </script>
+
+    <div data-role="page" data-theme="a">
+
+        <div data-role="header">
+            <h1><table align=left border=0 width=100%><tr><td align=right><img width=35 src="wifikeyboard.png"></td><td align="center" >Tizen Remote Input</td><td align=left><a href="#" id="mode_change"><img width=35 onclick="window.location='key_mode.htm'" src="keyboard.png"></a></td></tr></table></h1>
+        </div> <!-- /header -->
+
+        <div id ="content_div" data-role="content" >
+
+            <div align="center" style="line-height:0em;" >
+                <table style="text-align: center;" border="0" cellpadding="0" cellspacing="0">
+                    <tr>
+                        <td></td>
+                        <td><a id="bt_up" href="#" data-role="button" data-icon="arrow-u" data-iconpos="top" data-theme="a" style= "height:65px; width:65px" ><font size="2" style="normal" ></font> </a></td>
+                        <td></td>
+                        <td colspan="5" rowspan="1"><font size="2" style="font-weight:bold" >TIZEN GAME PAD3</font></td>
+                        <td></td>
+                        <td style="vertical-align: middle;" align="center"><a id="bt_circle_Y" href="#" data-role="button" data-theme="h" style= "height:60px; width:60px" ><font size="2" style="normal" >Y</font></a></td>
+                        <td></td>
+                    </tr>
+                    <tr>
+                        <td><a id="bt_left" href="#" data-role="button" data-icon="arrow-l" data-iconpos="top" data-theme="a" style= "height:65px; width:65px" ><font size="1" style="normal" ></font> </a></td>
+                        <td></td>
+                        <td><a id="bt_right" href="#" data-role="button" data-icon="arrow-r" data-iconpos="right" data-theme="a"style= "height:65px; width:65px" ><font size="1" style="normal" ></font> </a></td>
+                        <td style="width:20px;"></td>
+                        <td style="width:40px;"></td>
+                        <td style="width:5px;"></td>
+                        <td style="width:40px;"></td>
+                        <td style="width:20px;"></td>
+                        <td style="vertical-align: middle;" align="center"><a id="bt_circle_X" href="#" data-role="button" data-theme="h"style= "height:60px; width:60px" ><font size="2" style="normal" >X</font> </a></td>
+                        <td></td>
+                        <td style="vertical-align: middle;" align="center"><a id="bt_circle_B" href="#" data-role="button" data-theme="i"style= "height:60px; width:60px" ><font size="2" style="normal" >B</font> </a></td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td><a id="bt_down" href="#" data-role="button" data-icon="arrow-d" data-iconpos="bottom" data-theme="a"style= "height:65px; width:65px" ><font size="2" style="normal" ></font> </a></td>
+                        <td></td>
+                        <td></td>
+                        <td valign="bottom"><a id="bt_select" href="#" data-role="button" data-theme="a" style= "height:10px; width:10px" ></a><font size="2" style="normal" ><p>select</font></td>
+                        <td></td>
+                        <td valign="bottom"><a id="bt_start" href="#" data-role="button" data-theme="i" style= "height:10px; width:10px" ></a><font size="2" style="normal" ><p>start</font></td>
+                        <td></td>
+                        <td></td>
+                        <td style="vertical-align: middle;" align="center"><a id="bt_circle_A" href="#" data-role="button" data-theme="i"style= "height:65px; width:65px" ><font size="2" style="normal" >A</font> </a></td>
+                        <td></td>
+                    </tr>
+                </table>
+            </div>
+        </div>
+        <!-- /content -->
+
+        <div data-role="footer" data-tap-toggle="false" data-position="fixed" style="height:40px">
+            <div data-role="navbar" data-grid="b">
+                <ul>
+                    <li ><a href="#" id="sys_btn_menu" data-icon="bars">Menu</a></li>
+                    <li ><a href="#" id="sys_btn_home" data-icon="home">home</a></li>
+                    <li><a href="#" id="sys_btn_back" data-icon="back">Back</a></li>
+                </ul>
+            </div>
+        </div>
+        <!-- /footer -->
+    </div>
+    <!-- /page -->
+
+</body>
+</html>
+
+
diff --git a/ism/data/remote-input/imgs/a_bt.png b/ism/data/remote-input/imgs/a_bt.png
new file mode 100644 (file)
index 0000000..2b34568
Binary files /dev/null and b/ism/data/remote-input/imgs/a_bt.png differ
diff --git a/ism/data/remote-input/imgs/a_bt_pressed.png b/ism/data/remote-input/imgs/a_bt_pressed.png
new file mode 100644 (file)
index 0000000..e8c7ca8
Binary files /dev/null and b/ism/data/remote-input/imgs/a_bt_pressed.png differ
diff --git a/ism/data/remote-input/imgs/air_bt.png b/ism/data/remote-input/imgs/air_bt.png
new file mode 100644 (file)
index 0000000..6b2ac41
Binary files /dev/null and b/ism/data/remote-input/imgs/air_bt.png differ
diff --git a/ism/data/remote-input/imgs/air_bt_pressed.png b/ism/data/remote-input/imgs/air_bt_pressed.png
new file mode 100644 (file)
index 0000000..6786783
Binary files /dev/null and b/ism/data/remote-input/imgs/air_bt_pressed.png differ
diff --git a/ism/data/remote-input/imgs/air_click_bt.png b/ism/data/remote-input/imgs/air_click_bt.png
new file mode 100644 (file)
index 0000000..a36d341
Binary files /dev/null and b/ism/data/remote-input/imgs/air_click_bt.png differ
diff --git a/ism/data/remote-input/imgs/air_click_bt_pressed.png b/ism/data/remote-input/imgs/air_click_bt_pressed.png
new file mode 100644 (file)
index 0000000..2f1e50a
Binary files /dev/null and b/ism/data/remote-input/imgs/air_click_bt_pressed.png differ
diff --git a/ism/data/remote-input/imgs/air_panel_bg.png b/ism/data/remote-input/imgs/air_panel_bg.png
new file mode 100644 (file)
index 0000000..19079d7
Binary files /dev/null and b/ism/data/remote-input/imgs/air_panel_bg.png differ
diff --git a/ism/data/remote-input/imgs/apps.png b/ism/data/remote-input/imgs/apps.png
new file mode 100644 (file)
index 0000000..474dd5d
Binary files /dev/null and b/ism/data/remote-input/imgs/apps.png differ
diff --git a/ism/data/remote-input/imgs/apps_pressed.png b/ism/data/remote-input/imgs/apps_pressed.png
new file mode 100644 (file)
index 0000000..fcc786e
Binary files /dev/null and b/ism/data/remote-input/imgs/apps_pressed.png differ
diff --git a/ism/data/remote-input/imgs/b_bt.png b/ism/data/remote-input/imgs/b_bt.png
new file mode 100644 (file)
index 0000000..4d6a62f
Binary files /dev/null and b/ism/data/remote-input/imgs/b_bt.png differ
diff --git a/ism/data/remote-input/imgs/b_bt_pressed.png b/ism/data/remote-input/imgs/b_bt_pressed.png
new file mode 100644 (file)
index 0000000..1716ead
Binary files /dev/null and b/ism/data/remote-input/imgs/b_bt_pressed.png differ
diff --git a/ism/data/remote-input/imgs/back.png b/ism/data/remote-input/imgs/back.png
new file mode 100644 (file)
index 0000000..fc1456b
Binary files /dev/null and b/ism/data/remote-input/imgs/back.png differ
diff --git a/ism/data/remote-input/imgs/back_pressed.png b/ism/data/remote-input/imgs/back_pressed.png
new file mode 100644 (file)
index 0000000..a68fd68
Binary files /dev/null and b/ism/data/remote-input/imgs/back_pressed.png differ
diff --git a/ism/data/remote-input/imgs/c_bt.png b/ism/data/remote-input/imgs/c_bt.png
new file mode 100644 (file)
index 0000000..19ecd50
Binary files /dev/null and b/ism/data/remote-input/imgs/c_bt.png differ
diff --git a/ism/data/remote-input/imgs/c_bt_pressed.png b/ism/data/remote-input/imgs/c_bt_pressed.png
new file mode 100644 (file)
index 0000000..5043bfd
Binary files /dev/null and b/ism/data/remote-input/imgs/c_bt_pressed.png differ
diff --git a/ism/data/remote-input/imgs/channel.png b/ism/data/remote-input/imgs/channel.png
new file mode 100644 (file)
index 0000000..ae70d36
Binary files /dev/null and b/ism/data/remote-input/imgs/channel.png differ
diff --git a/ism/data/remote-input/imgs/channel_down.png b/ism/data/remote-input/imgs/channel_down.png
new file mode 100644 (file)
index 0000000..788d010
Binary files /dev/null and b/ism/data/remote-input/imgs/channel_down.png differ
diff --git a/ism/data/remote-input/imgs/channel_down_pressed.png b/ism/data/remote-input/imgs/channel_down_pressed.png
new file mode 100644 (file)
index 0000000..df33919
Binary files /dev/null and b/ism/data/remote-input/imgs/channel_down_pressed.png differ
diff --git a/ism/data/remote-input/imgs/channel_up.png b/ism/data/remote-input/imgs/channel_up.png
new file mode 100644 (file)
index 0000000..bc6c963
Binary files /dev/null and b/ism/data/remote-input/imgs/channel_up.png differ
diff --git a/ism/data/remote-input/imgs/channel_up_pressed.png b/ism/data/remote-input/imgs/channel_up_pressed.png
new file mode 100644 (file)
index 0000000..3078e46
Binary files /dev/null and b/ism/data/remote-input/imgs/channel_up_pressed.png differ
diff --git a/ism/data/remote-input/imgs/chlist.png b/ism/data/remote-input/imgs/chlist.png
new file mode 100644 (file)
index 0000000..4de3092
Binary files /dev/null and b/ism/data/remote-input/imgs/chlist.png differ
diff --git a/ism/data/remote-input/imgs/chlist_pressed.png b/ism/data/remote-input/imgs/chlist_pressed.png
new file mode 100644 (file)
index 0000000..2e85bf2
Binary files /dev/null and b/ism/data/remote-input/imgs/chlist_pressed.png differ
diff --git a/ism/data/remote-input/imgs/exit.png b/ism/data/remote-input/imgs/exit.png
new file mode 100644 (file)
index 0000000..2b08714
Binary files /dev/null and b/ism/data/remote-input/imgs/exit.png differ
diff --git a/ism/data/remote-input/imgs/exit_pressed.png b/ism/data/remote-input/imgs/exit_pressed.png
new file mode 100644 (file)
index 0000000..d28b075
Binary files /dev/null and b/ism/data/remote-input/imgs/exit_pressed.png differ
diff --git a/ism/data/remote-input/imgs/favicon.ico b/ism/data/remote-input/imgs/favicon.ico
new file mode 100644 (file)
index 0000000..c0cc2e3
Binary files /dev/null and b/ism/data/remote-input/imgs/favicon.ico differ
diff --git a/ism/data/remote-input/imgs/game_a.png b/ism/data/remote-input/imgs/game_a.png
new file mode 100644 (file)
index 0000000..234c995
Binary files /dev/null and b/ism/data/remote-input/imgs/game_a.png differ
diff --git a/ism/data/remote-input/imgs/game_a_pressed.png b/ism/data/remote-input/imgs/game_a_pressed.png
new file mode 100644 (file)
index 0000000..c38d878
Binary files /dev/null and b/ism/data/remote-input/imgs/game_a_pressed.png differ
diff --git a/ism/data/remote-input/imgs/game_air.png b/ism/data/remote-input/imgs/game_air.png
new file mode 100644 (file)
index 0000000..05b769f
Binary files /dev/null and b/ism/data/remote-input/imgs/game_air.png differ
diff --git a/ism/data/remote-input/imgs/game_air_pressed.png b/ism/data/remote-input/imgs/game_air_pressed.png
new file mode 100644 (file)
index 0000000..d698d14
Binary files /dev/null and b/ism/data/remote-input/imgs/game_air_pressed.png differ
diff --git a/ism/data/remote-input/imgs/game_b.png b/ism/data/remote-input/imgs/game_b.png
new file mode 100644 (file)
index 0000000..557184c
Binary files /dev/null and b/ism/data/remote-input/imgs/game_b.png differ
diff --git a/ism/data/remote-input/imgs/game_b_pressed.png b/ism/data/remote-input/imgs/game_b_pressed.png
new file mode 100644 (file)
index 0000000..8545a66
Binary files /dev/null and b/ism/data/remote-input/imgs/game_b_pressed.png differ
diff --git a/ism/data/remote-input/imgs/game_background.png b/ism/data/remote-input/imgs/game_background.png
new file mode 100644 (file)
index 0000000..a051452
Binary files /dev/null and b/ism/data/remote-input/imgs/game_background.png differ
diff --git a/ism/data/remote-input/imgs/game_c.png b/ism/data/remote-input/imgs/game_c.png
new file mode 100644 (file)
index 0000000..ebada66
Binary files /dev/null and b/ism/data/remote-input/imgs/game_c.png differ
diff --git a/ism/data/remote-input/imgs/game_c_pressed.png b/ism/data/remote-input/imgs/game_c_pressed.png
new file mode 100644 (file)
index 0000000..addbc96
Binary files /dev/null and b/ism/data/remote-input/imgs/game_c_pressed.png differ
diff --git a/ism/data/remote-input/imgs/game_d.png b/ism/data/remote-input/imgs/game_d.png
new file mode 100644 (file)
index 0000000..db3c95e
Binary files /dev/null and b/ism/data/remote-input/imgs/game_d.png differ
diff --git a/ism/data/remote-input/imgs/game_d_pressed.png b/ism/data/remote-input/imgs/game_d_pressed.png
new file mode 100644 (file)
index 0000000..93e7728
Binary files /dev/null and b/ism/data/remote-input/imgs/game_d_pressed.png differ
diff --git a/ism/data/remote-input/imgs/game_down.png b/ism/data/remote-input/imgs/game_down.png
new file mode 100644 (file)
index 0000000..c106f59
Binary files /dev/null and b/ism/data/remote-input/imgs/game_down.png differ
diff --git a/ism/data/remote-input/imgs/game_down_pressed.png b/ism/data/remote-input/imgs/game_down_pressed.png
new file mode 100644 (file)
index 0000000..2fd313f
Binary files /dev/null and b/ism/data/remote-input/imgs/game_down_pressed.png differ
diff --git a/ism/data/remote-input/imgs/game_exit.png b/ism/data/remote-input/imgs/game_exit.png
new file mode 100644 (file)
index 0000000..ec55ab2
Binary files /dev/null and b/ism/data/remote-input/imgs/game_exit.png differ
diff --git a/ism/data/remote-input/imgs/game_exit_pressed.png b/ism/data/remote-input/imgs/game_exit_pressed.png
new file mode 100644 (file)
index 0000000..1a49c84
Binary files /dev/null and b/ism/data/remote-input/imgs/game_exit_pressed.png differ
diff --git a/ism/data/remote-input/imgs/game_left.png b/ism/data/remote-input/imgs/game_left.png
new file mode 100644 (file)
index 0000000..5f350f7
Binary files /dev/null and b/ism/data/remote-input/imgs/game_left.png differ
diff --git a/ism/data/remote-input/imgs/game_left_pressed.png b/ism/data/remote-input/imgs/game_left_pressed.png
new file mode 100644 (file)
index 0000000..3b3631c
Binary files /dev/null and b/ism/data/remote-input/imgs/game_left_pressed.png differ
diff --git a/ism/data/remote-input/imgs/game_logo.png b/ism/data/remote-input/imgs/game_logo.png
new file mode 100644 (file)
index 0000000..a406822
Binary files /dev/null and b/ism/data/remote-input/imgs/game_logo.png differ
diff --git a/ism/data/remote-input/imgs/game_menu.png b/ism/data/remote-input/imgs/game_menu.png
new file mode 100644 (file)
index 0000000..d34f2f2
Binary files /dev/null and b/ism/data/remote-input/imgs/game_menu.png differ
diff --git a/ism/data/remote-input/imgs/game_menu_pressed.png b/ism/data/remote-input/imgs/game_menu_pressed.png
new file mode 100644 (file)
index 0000000..144fccc
Binary files /dev/null and b/ism/data/remote-input/imgs/game_menu_pressed.png differ
diff --git a/ism/data/remote-input/imgs/game_right.png b/ism/data/remote-input/imgs/game_right.png
new file mode 100644 (file)
index 0000000..f3dbd26
Binary files /dev/null and b/ism/data/remote-input/imgs/game_right.png differ
diff --git a/ism/data/remote-input/imgs/game_right_pressed.png b/ism/data/remote-input/imgs/game_right_pressed.png
new file mode 100644 (file)
index 0000000..38fcd22
Binary files /dev/null and b/ism/data/remote-input/imgs/game_right_pressed.png differ
diff --git a/ism/data/remote-input/imgs/game_select.png b/ism/data/remote-input/imgs/game_select.png
new file mode 100644 (file)
index 0000000..8565dab
Binary files /dev/null and b/ism/data/remote-input/imgs/game_select.png differ
diff --git a/ism/data/remote-input/imgs/game_select_pressed.png b/ism/data/remote-input/imgs/game_select_pressed.png
new file mode 100644 (file)
index 0000000..9b94351
Binary files /dev/null and b/ism/data/remote-input/imgs/game_select_pressed.png differ
diff --git a/ism/data/remote-input/imgs/game_set.png b/ism/data/remote-input/imgs/game_set.png
new file mode 100644 (file)
index 0000000..de4fff8
Binary files /dev/null and b/ism/data/remote-input/imgs/game_set.png differ
diff --git a/ism/data/remote-input/imgs/game_set_pressed.png b/ism/data/remote-input/imgs/game_set_pressed.png
new file mode 100644 (file)
index 0000000..31791fe
Binary files /dev/null and b/ism/data/remote-input/imgs/game_set_pressed.png differ
diff --git a/ism/data/remote-input/imgs/game_title.png b/ism/data/remote-input/imgs/game_title.png
new file mode 100644 (file)
index 0000000..325ca28
Binary files /dev/null and b/ism/data/remote-input/imgs/game_title.png differ
diff --git a/ism/data/remote-input/imgs/game_up.png b/ism/data/remote-input/imgs/game_up.png
new file mode 100644 (file)
index 0000000..1c207fc
Binary files /dev/null and b/ism/data/remote-input/imgs/game_up.png differ
diff --git a/ism/data/remote-input/imgs/game_up_pressed.png b/ism/data/remote-input/imgs/game_up_pressed.png
new file mode 100644 (file)
index 0000000..c02c134
Binary files /dev/null and b/ism/data/remote-input/imgs/game_up_pressed.png differ
diff --git a/ism/data/remote-input/imgs/info.png b/ism/data/remote-input/imgs/info.png
new file mode 100644 (file)
index 0000000..aff1946
Binary files /dev/null and b/ism/data/remote-input/imgs/info.png differ
diff --git a/ism/data/remote-input/imgs/info_pressed.png b/ism/data/remote-input/imgs/info_pressed.png
new file mode 100644 (file)
index 0000000..8b0341d
Binary files /dev/null and b/ism/data/remote-input/imgs/info_pressed.png differ
diff --git a/ism/data/remote-input/imgs/menu.png b/ism/data/remote-input/imgs/menu.png
new file mode 100644 (file)
index 0000000..7ed858e
Binary files /dev/null and b/ism/data/remote-input/imgs/menu.png differ
diff --git a/ism/data/remote-input/imgs/menu_pressed.png b/ism/data/remote-input/imgs/menu_pressed.png
new file mode 100644 (file)
index 0000000..e9394b6
Binary files /dev/null and b/ism/data/remote-input/imgs/menu_pressed.png differ
diff --git a/ism/data/remote-input/imgs/modeswitcher.png b/ism/data/remote-input/imgs/modeswitcher.png
new file mode 100644 (file)
index 0000000..4321bd9
Binary files /dev/null and b/ism/data/remote-input/imgs/modeswitcher.png differ
diff --git a/ism/data/remote-input/imgs/modeswitcher_pressed.png b/ism/data/remote-input/imgs/modeswitcher_pressed.png
new file mode 100644 (file)
index 0000000..834a6bd
Binary files /dev/null and b/ism/data/remote-input/imgs/modeswitcher_pressed.png differ
diff --git a/ism/data/remote-input/imgs/modeswitcher_to_mouse.png b/ism/data/remote-input/imgs/modeswitcher_to_mouse.png
new file mode 100644 (file)
index 0000000..72eff3c
Binary files /dev/null and b/ism/data/remote-input/imgs/modeswitcher_to_mouse.png differ
diff --git a/ism/data/remote-input/imgs/modeswitcher_to_tv.png b/ism/data/remote-input/imgs/modeswitcher_to_tv.png
new file mode 100644 (file)
index 0000000..d283d9b
Binary files /dev/null and b/ism/data/remote-input/imgs/modeswitcher_to_tv.png differ
diff --git a/ism/data/remote-input/imgs/mouse_panel_bg.png b/ism/data/remote-input/imgs/mouse_panel_bg.png
new file mode 100644 (file)
index 0000000..98f529b
Binary files /dev/null and b/ism/data/remote-input/imgs/mouse_panel_bg.png differ
diff --git a/ism/data/remote-input/imgs/mute.png b/ism/data/remote-input/imgs/mute.png
new file mode 100644 (file)
index 0000000..1ac75a0
Binary files /dev/null and b/ism/data/remote-input/imgs/mute.png differ
diff --git a/ism/data/remote-input/imgs/mute_pressed.png b/ism/data/remote-input/imgs/mute_pressed.png
new file mode 100644 (file)
index 0000000..57b725a
Binary files /dev/null and b/ism/data/remote-input/imgs/mute_pressed.png differ
diff --git a/ism/data/remote-input/imgs/power.png b/ism/data/remote-input/imgs/power.png
new file mode 100644 (file)
index 0000000..26ec3d0
Binary files /dev/null and b/ism/data/remote-input/imgs/power.png differ
diff --git a/ism/data/remote-input/imgs/power_pressed.png b/ism/data/remote-input/imgs/power_pressed.png
new file mode 100644 (file)
index 0000000..1288ff8
Binary files /dev/null and b/ism/data/remote-input/imgs/power_pressed.png differ
diff --git a/ism/data/remote-input/imgs/remote_keyboard_logo.png b/ism/data/remote-input/imgs/remote_keyboard_logo.png
new file mode 100644 (file)
index 0000000..38ddc33
Binary files /dev/null and b/ism/data/remote-input/imgs/remote_keyboard_logo.png differ
diff --git a/ism/data/remote-input/imgs/remotekeyboard_bg.png b/ism/data/remote-input/imgs/remotekeyboard_bg.png
new file mode 100644 (file)
index 0000000..6999f2b
Binary files /dev/null and b/ism/data/remote-input/imgs/remotekeyboard_bg.png differ
diff --git a/ism/data/remote-input/imgs/remotekeyboard_remocon_bg.png b/ism/data/remote-input/imgs/remotekeyboard_remocon_bg.png
new file mode 100644 (file)
index 0000000..2961863
Binary files /dev/null and b/ism/data/remote-input/imgs/remotekeyboard_remocon_bg.png differ
diff --git a/ism/data/remote-input/imgs/remotekeyboard_remocon_bg3.png b/ism/data/remote-input/imgs/remotekeyboard_remocon_bg3.png
new file mode 100644 (file)
index 0000000..81706c7
Binary files /dev/null and b/ism/data/remote-input/imgs/remotekeyboard_remocon_bg3.png differ
diff --git a/ism/data/remote-input/imgs/reset_bt.png b/ism/data/remote-input/imgs/reset_bt.png
new file mode 100644 (file)
index 0000000..8d23b31
Binary files /dev/null and b/ism/data/remote-input/imgs/reset_bt.png differ
diff --git a/ism/data/remote-input/imgs/reset_bt_pressed.png b/ism/data/remote-input/imgs/reset_bt_pressed.png
new file mode 100644 (file)
index 0000000..94b3af9
Binary files /dev/null and b/ism/data/remote-input/imgs/reset_bt_pressed.png differ
diff --git a/ism/data/remote-input/imgs/return.png b/ism/data/remote-input/imgs/return.png
new file mode 100644 (file)
index 0000000..8d422fb
Binary files /dev/null and b/ism/data/remote-input/imgs/return.png differ
diff --git a/ism/data/remote-input/imgs/return_pressed.png b/ism/data/remote-input/imgs/return_pressed.png
new file mode 100644 (file)
index 0000000..5a1310f
Binary files /dev/null and b/ism/data/remote-input/imgs/return_pressed.png differ
diff --git a/ism/data/remote-input/imgs/scrollbar.png b/ism/data/remote-input/imgs/scrollbar.png
new file mode 100644 (file)
index 0000000..9962866
Binary files /dev/null and b/ism/data/remote-input/imgs/scrollbar.png differ
diff --git a/ism/data/remote-input/imgs/source.png b/ism/data/remote-input/imgs/source.png
new file mode 100644 (file)
index 0000000..adc83b4
Binary files /dev/null and b/ism/data/remote-input/imgs/source.png differ
diff --git a/ism/data/remote-input/imgs/source_pressed.png b/ism/data/remote-input/imgs/source_pressed.png
new file mode 100644 (file)
index 0000000..85f1144
Binary files /dev/null and b/ism/data/remote-input/imgs/source_pressed.png differ
diff --git a/ism/data/remote-input/imgs/volume.png b/ism/data/remote-input/imgs/volume.png
new file mode 100644 (file)
index 0000000..948fa8b
Binary files /dev/null and b/ism/data/remote-input/imgs/volume.png differ
diff --git a/ism/data/remote-input/imgs/volume_down.png b/ism/data/remote-input/imgs/volume_down.png
new file mode 100644 (file)
index 0000000..c1d5e84
Binary files /dev/null and b/ism/data/remote-input/imgs/volume_down.png differ
diff --git a/ism/data/remote-input/imgs/volume_down_pressed.png b/ism/data/remote-input/imgs/volume_down_pressed.png
new file mode 100644 (file)
index 0000000..4649962
Binary files /dev/null and b/ism/data/remote-input/imgs/volume_down_pressed.png differ
diff --git a/ism/data/remote-input/imgs/volume_up.png b/ism/data/remote-input/imgs/volume_up.png
new file mode 100644 (file)
index 0000000..364cc18
Binary files /dev/null and b/ism/data/remote-input/imgs/volume_up.png differ
diff --git a/ism/data/remote-input/imgs/volume_up_pressed.png b/ism/data/remote-input/imgs/volume_up_pressed.png
new file mode 100644 (file)
index 0000000..38f305b
Binary files /dev/null and b/ism/data/remote-input/imgs/volume_up_pressed.png differ
diff --git a/ism/data/remote-input/index.htm b/ism/data/remote-input/index.htm
new file mode 100644 (file)
index 0000000..f9f40d9
--- /dev/null
@@ -0,0 +1,343 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Tizen Remote Input</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable = no">
+<link rel="stylesheet" href="jquery.mobile-1.3.1.min.css" type="text/css"/>
+<script src="ajaxCaller.js" type="text/javascript"> </script>
+<script src="util.js" type="text/javascript"> </script>
+<script src="jquery-2.0.2.min.js"></script>
+<script src="jquery.mobile-1.3.1.min.js"></script>
+</head>
+
+<body>
+    <script>
+
+        // Key definition
+        var KEY_BACKSPACE = 8;
+        var KEY_ENTER = 13;
+        var KEY_SPACE = 32;
+        var KEY_ESCAPE = 27;
+
+        var KEY_LEFT = 37;
+        var KEY_RIGHT = 39;
+        var KEY_UP = 38;
+        var KEY_DOWN = 40;
+
+        var KEY_MENU = 10001;
+        var KEY_HOME = 10002;
+        var KEY_BACK = 10003;
+
+        // Callback incremental index
+        var id_num = 0;
+        var count = 0;
+
+        // Flush timer
+        var flush_timeout;
+        var FLUSH_TIMEOUT = 5000;
+        var FLUSH_ENTER_TIMEOUT = 50;
+
+        // Backup pre string
+        var pre_str = "";
+        var TMP_CHAR = " ";
+        var TMP_TIMESTAMP = 0;
+        var EMPTY_CHECKER_TIMEOUT = 10;
+        var latest_typed_timestamp = 0;
+
+        function cbAjax(text, headers, callingContext){
+            id_num++;
+            return true;
+        }
+
+        function sendKeyEvent(keyCode){
+            printLog("Send_Key_Event :("+ keyCode +")");
+            var bodyVars = {id:id_num, key:'event', value:keyCode}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function removeTmpChar(str){
+            if(TMP_CHAR.length < 1) return;
+            if(str.length >= TMP_CHAR.length){
+                str = str.substring(TMP_CHAR.length);
+            }
+            return str;
+        }
+
+        function sendPreeditStr(str){
+            if (!$("#send_preedit_checker").prop("checked")){
+                return;
+            }
+            str = removeTmpChar(str);
+            printLog("Send_Preedit string :("+ str+")");
+            var bodyVars = {id:id_num, key:'preedit', value:str}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendCommitStr(str){
+            str = removeTmpChar(str);
+            printLog("Send_Commit string :("+ str + ")");
+            var bodyVars = {id:id_num, key:'commit', value:str}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendFlushCurStr(){
+            var entry = document.getElementById( "entry" );
+            var str = entry.value;
+            if(str.length > 0){
+                entry.value = TMP_CHAR;
+                pre_str = "";
+                sendCommitStr(str)
+                window.clearInterval(flush_timeout);
+                entry.focus();
+            }
+        }
+
+        function printLog(str){
+            if (!$("#use_debug_checker").prop("checked")){
+                return;
+            }
+            log_box.value = log_box.value +"\n"+ str;
+            var psconsole = $('#log_box');
+            psconsole.scrollTop(
+                psconsole[0].scrollHeight - psconsole.height()
+            );
+        }
+
+        function clearLog(){
+            log_box.value = "";log_box.value +"\n"+ str;
+        }
+
+        function reArrangeCursorPos(){
+            if(latest_typed_timestamp == TMP_TIMESTAMP){
+                //printLog("reArrange Cursor Position");
+                entry.setSelectionRange(TMP_CHAR.length,TMP_CHAR.length);
+            }
+            window.clearInterval(empty_checker_timeout);
+        }
+
+        $(document).ready(function() {
+            var entry = document.getElementById( "entry" );
+            entry.focus();
+            entry.value = TMP_CHAR;
+
+            // 4 arrow keys
+            $("#arrow_left").click(function(event) {
+                //printLog("left btn is clicked");
+                sendFlushCurStr();
+                sendKeyEvent(KEY_LEFT);
+                entry.focus();
+            });
+
+            $("#arrow_right").click(function(event) {
+                //printLog("right btn is clicked");
+                sendFlushCurStr();
+                sendKeyEvent(KEY_RIGHT);
+                entry.focus();
+            });
+
+            $("#arrow_down").click(function(event) {
+                //printLog("down btn is clicked");
+                sendFlushCurStr();
+                sendKeyEvent(KEY_DOWN);
+                entry.focus();
+            });
+
+            $("#arrow_up").click(function(event) {
+                //printLog("up btn is clicked");
+                sendFlushCurStr();
+                sendKeyEvent(KEY_UP);
+                entry.focus();
+            });
+            // 3 system hw buttons
+            $("#sys_btn_menu").click(function(event) {
+                //printLog("menu btn is clicked");
+                sendFlushCurStr();
+                sendKeyEvent(KEY_MENU);
+                entry.focus();
+            });
+
+            $("#sys_btn_home").click(function(event) {
+                //printLog("home btn is clicked");
+                sendFlushCurStr();
+                sendKeyEvent(KEY_HOME);
+                entry.focus();
+            });
+
+            $("#sys_btn_back").click(function(event) {
+                //printLog("back btn is clicked");
+                sendFlushCurStr();
+                sendKeyEvent(KEY_BACK);
+                entry.focus();
+            });
+
+            // Always focus into entry
+            $("#entry").focusout(function(event) {
+                entry.focus();
+            });
+
+            // Firefox, Google Chrome, Opera, Safari, Internet Explorer from version 9
+            $("#entry").on("input", function(event) {
+                window.clearInterval(flush_timeout);
+                var cur_timestamp = (new Date).getTime();
+                latest_typed_timestamp = cur_timestamp;
+
+                //To prevent multiline field in textarea when the enter key is typed and send keyevent
+                if(this.value.substring(this.value.length - 1) == "\n"){
+                    //printLog("enter key is pressed");
+                    this.value = this.value.substring(0, this.value.length - 1);
+                    sendFlushCurStr();
+                    entry.value = TMP_CHAR;
+                    TMP_TIMESTAMP = cur_timestamp;
+                    empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                    sendKeyEvent(KEY_ENTER);
+                    return false;
+                }
+                //To prevent removing the first chartor(TMP_CHAR)
+                if(TMP_CHAR.substring(0, TMP_CHAR.length - 1) == this.value){
+                    //printLog("Current text field empty");
+                    entry.value = TMP_CHAR;
+                    TMP_TIMESTAMP = cur_timestamp;
+                    empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                    return false;
+                }
+                //To prevent duplicating preedit string error for Note2, S3 web browser
+                if(pre_str == this.value){
+                    //printLog("same string is occurd");
+                    return;
+                }
+                pre_str = this.value;
+                //printLog("oninput | value : (" + this.value+ ")");
+
+                if(this.value.substring(this.value.length - 1) == " "){
+                    var commitStr = this.value;
+                    sendFlushCurStr();
+                }else{
+                    if ($("#auto_flush_checker").prop("checked")){
+                        flush_timeout = window.setInterval("sendFlushCurStr()", FLUSH_TIMEOUT);
+                    }
+                    sendPreeditStr(this.value);
+                }
+            });
+
+            // Internet Explorer
+            $("#entry").on("propertychange", function(event) {
+
+                window.clearInterval(flush_timeout);
+                var cur_timestamp = (new Date).getTime();
+                latest_typed_timestamp = cur_timestamp;
+
+                //To prevent multiline field in textarea when the enter key is typed and send keyevent
+                if(this.value.substring(this.value.length - 1) == "\n"){
+                    //printLog("enter key is pressed");
+                    this.value = this.value.substring(0, this.value.length - 1);
+                    sendFlushCurStr();
+                    entry.value = TMP_CHAR;
+                    TMP_TIMESTAMP = cur_timestamp;
+                    empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                    sendKeyEvent(KEY_ENTER);
+                    return false;
+                }
+                //To prevent removing the first chartor(TMP_CHAR)
+                if(TMP_CHAR.substring(0, TMP_CHAR.length - 1) == this.value){
+                    //printLog("Current text field empty");
+                    entry.value = TMP_CHAR;
+                    TMP_TIMESTAMP = cur_timestamp;
+                    empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                    return false;
+                }
+                //To prevent duplicating preedit string error for Note2, S3 web browser
+                if(pre_str == this.value){
+                    //printLog("same string is occurd");
+                    return;
+                }
+                pre_str = this.value;
+                //printLog("oninput | value : (" + this.value+ ")");
+
+                if(this.value.substring(this.value.length - 1) == " "){
+                    var commitStr = this.value;
+                    sendFlushCurStr();
+                }else{
+                    if ($("#auto_flush_checker").prop("checked")){
+                        flush_timeout = window.setInterval("sendFlushCurStr()", FLUSH_TIMEOUT);
+                    }
+                    sendPreeditStr(this.value);
+                }
+
+            });
+
+            $("#entry").on("keydown", function(event) {
+                if(event.keyCode == 17 || event.keyCode == 67) return;
+                //printLog("onkeydown | event.keyCode : (" + event.keyCode + ")");
+
+                //To enable back space key continually, even there is no charactor for Note2, S3 web browser
+                if(this.value == TMP_CHAR && event.keyCode == KEY_BACKSPACE){
+                    sendKeyEvent(event.keyCode);
+
+                //To remove the last preedit charator, when tap the backspace key
+                }else if(this.value.length > TMP_CHAR.length &&
+                TMP_CHAR == this.value.substring(0, this.value.length - 1) &&
+                event.keyCode == KEY_BACKSPACE){
+                    sendKeyEvent(event.keyCode);
+                }
+            });
+
+        });
+    </script>
+
+    <div data-role="page" data-theme="a" data-fullscreen="true">
+
+        <div data-role="header">
+            <h1><table align=left border=0 width=100%><tr><td align=right><img width=35 src="wifikeyboard.png"></td><td align=left >Tizen Remote Input</td><td align=left><a href="#" id="mode_change"><img width=35 onclick="window.location='mouse.htm'" src="mouse.png"></a></td></tr></table></h1>
+        </div>
+        <!-- /header -->
+
+        <div data-role="content">
+                <label for="text-3"><font size ="2">Press "space" key after typing a desired word</font></label>
+            <textarea name="entry" wrap="off"  style="overflow:hidden;" rows="1" id="entry"></textarea>
+
+            <!--    <input type="text" data-theme="b" name="entry" id="entry" autofocus="true">-->
+
+                <label><input type="checkbox" id="auto_flush_checker" name="auto_flush_checker" checked> <font size ="2">Auto commit
+                    after <script>document.write(FLUSH_TIMEOUT/1000)</script> seconds</font></label>
+            <fieldset class="ui-grid-c">
+                <div class="ui-block-a">
+                    <button id="arrow_left" type="button" data-icon="arrow-l"
+                        data-iconpos="left" data-theme="c"><font size="1" style="nomal" weight="300">&nbsp;</font></button>
+                </div>
+                <div class="ui-block-b">
+                    <button id="arrow_right" type="button" data-icon="arrow-r"
+                        data-iconpos="left" data-theme="c"><font size="1" style="nomal" weight="300">&nbsp;</font></button>
+                </div>
+                <div class="ui-block-c">
+                    <button id="arrow_up" type="button" data-icon="arrow-u"
+                        data-iconpos="left" data-theme="b"><font size="1" style="nomal" weight="300">&nbsp;</font></button>
+                </div>
+                <div class="ui-block-d">
+                    <button id="arrow_down" type="button" data-icon="arrow-d"
+                        data-iconpos="left" data-theme="b"><font size="1" style="nomal" weight="300">&nbsp;</font></button>
+                </div>
+            </fieldset>
+        <textarea name="logbox" id="log_box" style="overflow:auto; height:120px;width:100%;letter-spacing:0; padding:8; border-style:dotted; font-size:12px" ></textarea>
+                <label><input type="checkbox" id="send_preedit_checker" name="send_preedit_checker" checked> <font size ="2">Sends composing string</font></input></label>
+                <label><input type="checkbox" id="use_debug_checker" name="use_debug_checker"> <font size ="2">Debug mode</font></input></label>
+
+        </div>
+        <!-- /content -->
+        <div data-role="footer" >
+            <div data-role="navbar" class="nav-glyphish-example" data-grid="b">
+                <ul>
+                    <li><a href="#" id="sys_btn_menu" data-icon="bars">Menu</a></li>
+                    <li><img onclick="javascript:clearLog();" width=100% src="tizenbrand.png"></li>
+                    <li><a href="#" id="sys_btn_back" data-icon="back">Back</a></li>
+                </ul>
+            </div>
+
+        </div>
+
+    </div>
+    <!-- /page -->
+
+</body>
+</html>
+
+
diff --git a/ism/data/remote-input/ise-default.help b/ism/data/remote-input/ise-default.help
new file mode 100644 (file)
index 0000000..3df8577
--- /dev/null
@@ -0,0 +1,3 @@
+Default ISE:
+    Default Input Service Engine.
+    By Samsung Mobile Platform Lab.
diff --git a/ism/data/remote-input/jquery-2.0.2.min.js b/ism/data/remote-input/jquery-2.0.2.min.js
new file mode 100644 (file)
index 0000000..73e5218
--- /dev/null
@@ -0,0 +1,6 @@
+/*! jQuery v2.0.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-2.0.2.min.map
+*/
+(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p="2.0.2",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v="sizzle"+-new Date,b=e.document,w=0,T=0,C=at(),k=at(),N=at(),E=!1,S=function(){return 0},j=typeof undefined,D=1<<31,A={}.hasOwnProperty,L=[],H=L.pop,q=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",W="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",$=W.replace("w","w#"),B="\\["+M+"*("+W+")"+M+"*(?:([*^$|!~]?=)"+M+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+$+")|)|)"+M+"*\\]",I=":("+W+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+B.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=RegExp("^"+M+"*,"+M+"*"),X=RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=RegExp(M+"*[+~]"),Y=RegExp("="+M+"*([^\\]'\"]*)"+M+"*\\]","g"),V=RegExp(I),G=RegExp("^"+$+"$"),J={ID:RegExp("^#("+W+")"),CLASS:RegExp("^\\.("+W+")"),TAG:RegExp("^("+W.replace("w","w*")+")"),ATTR:RegExp("^"+B),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\d$/i,tt=/'|\\/g,nt=RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),rt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){q.apply(e,F.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p&&c(t),t=t||p,r=r||[],!e||"string"!=typeof e)return r;if(1!==(u=t.nodeType)&&9!==u)return[];if(h&&!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(s=t.getElementById(a),!s||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(a))&&y(t,s)&&s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&(!d||!d.test(e))){if(m=g=v,x=t,w=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){f=vt(e),(g=t.getAttribute("id"))?m=g.replace(tt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=f.length;while(l--)f[l]=m+xt(f[l]);x=U.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute("id")}}}return St(e.replace(z,"$1"),t,r,i)}function st(e){return Q.test(e+"")}function at(){var e=[];function t(n,r){return e.push(n+=" ")>i.cacheLength&&delete t[e.shift()],t[n]=r}return t}function ut(e){return e[v]=!0,e}function lt(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t,n){e=e.split("|");var r,o=e.length,s=n?null:t;while(o--)(r=i.attrHandle[e[o]])&&r!==t||(i.attrHandle[e[o]]=s)}function pt(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:e[t]===!0?t.toLowerCase():null}function ft(e,t){return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function ht(e){return"input"===e.nodeName.toLowerCase()?e.defaultValue:undefined}function dt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function gt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function mt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function yt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}s=ot.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.parentWindow;return t!==p&&9===t.nodeType&&t.documentElement?(p=t,f=t.documentElement,h=!s(t),r&&r.frameElement&&r.attachEvent("onbeforeunload",function(){c()}),n.attributes=lt(function(e){return e.innerHTML="<a href='#'></a>",ct("type|href|height|width",ft,"#"===e.firstChild.getAttribute("href")),ct(R,pt,null==e.getAttribute("disabled")),e.className="i",!e.getAttribute("className")}),n.input=lt(function(e){return e.innerHTML="<input>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}),ct("value",ht,n.attributes&&n.input),n.getElementsByTagName=lt(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=lt(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),n.getById=lt(function(e){return f.appendChild(e).id=v,!t.getElementsByName||!t.getElementsByName(v).length}),n.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){return e.getAttribute("id")===t}}):(delete i.find.ID,i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=n.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&h?t.getElementsByClassName(e):undefined},g=[],d=[],(n.qsa=st(t.querySelectorAll))&&(lt(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll(":checked").length||d.push(":checked")}),lt(function(e){var n=t.createElement("input");n.setAttribute("type","hidden"),e.appendChild(n).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&d.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||d.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),d.push(",.*:")})),(n.matchesSelector=st(m=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&lt(function(e){n.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",I)}),d=d.length&&RegExp(d.join("|")),g=g.length&&RegExp(g.join("|")),y=st(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},n.sortDetached=lt(function(e){return 1&e.compareDocumentPosition(t.createElement("div"))}),S=f.compareDocumentPosition?function(e,r){if(e===r)return E=!0,0;var i=r.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(r);return i?1&i||!n.sortDetached&&r.compareDocumentPosition(e)===i?e===t||y(b,e)?-1:r===t||y(b,r)?1:l?P.call(l,e)-P.call(l,r):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],u=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:l?P.call(l,e)-P.call(l,n):0;if(o===s)return dt(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)u.unshift(r);while(a[i]===u[i])i++;return i?dt(a[i],u[i]):a[i]===b?-1:u[i]===b?1:0},t):p},ot.matches=function(e,t){return ot(e,null,null,t)},ot.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Y,"='$1']"),!(!n.matchesSelector||!h||g&&g.test(t)||d&&d.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return ot(t,p,null,[e]).length>0},ot.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},ot.attr=function(e,t){(e.ownerDocument||e)!==p&&c(e);var r=i.attrHandle[t.toLowerCase()],o=r&&A.call(i.attrHandle,t.toLowerCase())?r(e,t,!h):undefined;return o===undefined?n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null:o},ot.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ot.uniqueSort=function(e){var t,r=[],i=0,o=0;if(E=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),E){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return e},o=ot.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=ot.selectors={cacheLength:50,createPseudo:ut,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(nt,rt),e[3]=(e[4]||e[5]||"").replace(nt,rt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ot.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ot.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return J.CHILD.test(e[0])?null:(e[3]&&e[4]!==undefined?e[2]=e[4]:n&&V.test(n)&&(t=vt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(nt,rt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ot.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,y=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){while(g){p=t;while(p=p[g])if(a?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){c=m[v]||(m[v]={}),l=c[e]||[],h=l[0]===w&&l[1],f=l[0]===w&&l[2],p=h&&m.childNodes[h];while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[w,h,f];break}}else if(x&&(l=(t[v]||(t[v]={}))[e])&&l[0]===w)f=l[1];else while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if((a?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(x&&((p[v]||(p[v]={}))[e]=[w,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ot.error("unsupported pseudo: "+e);return r[v]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var i,o=r(e,t),s=o.length;while(s--)i=P.call(e,o[s]),e[i]=!(n[i]=o[s])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ut(function(e){var t=[],n=[],r=a(e.replace(z,"$1"));return r[v]?ut(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ut(function(e){return function(t){return ot(e,t).length>0}}),contains:ut(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ut(function(e){return G.test(e||"")||ot.error("unsupported lang: "+e),e=e.replace(nt,rt).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return et.test(e.nodeName)},input:function(e){return Z.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:yt(function(){return[0]}),last:yt(function(e,t){return[t-1]}),eq:yt(function(e,t,n){return[0>n?n+t:n]}),even:yt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:yt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:yt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:yt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=gt(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=mt(t);function vt(e,t){var n,r,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);a=e,u=[],l=i.preFilter;while(a){(!n||(r=_.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=X.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(z," ")}),a=a.slice(n.length));for(s in i.filter)!(r=J[s].exec(a))||l[s]&&!(r=l[s](r))||(n=r.shift(),o.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ot.error(e):k(e,u).slice(0)}function xt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function bt(e,t,n){var i=t.dir,o=n&&"parentNode"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,a){var u,l,c,p=w+" "+s;if(a){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[v]||(t[v]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,a)||r,l[1]===!0)return!0}}function wt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Tt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function Ct(e,t,n,r,i,o){return r&&!r[v]&&(r=Ct(r)),i&&!i[v]&&(i=Ct(i,o)),ut(function(o,s,a,u){var l,c,p,f=[],h=[],d=s.length,g=o||Et(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:Tt(g,f,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r){l=Tt(y,h),r(l,[],a,u),c=l.length;while(c--)(p=l[c])&&(y[h[c]]=!(m[h[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?P.call(o,p):f[c])>-1&&(o[l]=!(s[l]=p))}}else y=Tt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):O.apply(s,y)})}function kt(e){var t,n,r,o=e.length,s=i.relative[e[0].type],a=s||i.relative[" "],l=s?1:0,c=bt(function(e){return e===t},a,!0),p=bt(function(e){return P.call(t,e)>-1},a,!0),f=[function(e,n,r){return!s&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>l;l++)if(n=i.relative[e[l].type])f=[bt(wt(f),n)];else{if(n=i.filter[e[l].type].apply(null,e[l].matches),n[v]){for(r=++l;o>r;r++)if(i.relative[e[r].type])break;return Ct(l>1&&wt(f),l>1&&xt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&kt(e.slice(l,r)),o>r&&kt(e=e.slice(r)),o>r&&xt(e))}f.push(n)}return wt(f)}function Nt(e,t){var n=0,o=t.length>0,s=e.length>0,a=function(a,l,c,f,h){var d,g,m,y=[],v=0,x="0",b=a&&[],T=null!=h,C=u,k=a||s&&i.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(u=l!==p&&l,r=n);null!=(d=k[x]);x++){if(s&&d){g=0;while(m=e[g++])if(m(d,l,c)){f.push(d);break}T&&(w=N,r=++n)}o&&((d=!m&&d)&&v--,a&&b.push(d))}if(v+=x,o&&x!==v){g=0;while(m=t[g++])m(b,y,l,c);if(a){if(v>0)while(x--)b[x]||y[x]||(y[x]=H.call(f));y=Tt(y)}O.apply(f,y),T&&!a&&y.length>0&&v+t.length>1&&ot.uniqueSort(f)}return T&&(w=N,u=C),b};return o?ut(a):a}a=ot.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){t||(t=vt(e)),n=t.length;while(n--)o=kt(t[n]),o[v]?r.push(o):i.push(o);o=N(e,Nt(i,r))}return o};function Et(e,t,n){var r=0,i=t.length;for(;i>r;r++)ot(e,t[r],n);return n}function St(e,t,r,o){var s,u,l,c,p,f=vt(e);if(!o&&1===f.length){if(u=f[0]=f[0].slice(0),u.length>2&&"ID"===(l=u[0]).type&&n.getById&&9===t.nodeType&&h&&i.relative[u[1].type]){if(t=(i.find.ID(l.matches[0].replace(nt,rt),t)||[])[0],!t)return r;e=e.slice(u.shift().value.length)}s=J.needsContext.test(e)?0:u.length;while(s--){if(l=u[s],i.relative[c=l.type])break;if((p=i.find[c])&&(o=p(l.matches[0].replace(nt,rt),U.test(u[0].type)&&t.parentNode||t))){if(u.splice(s,1),e=o.length&&xt(u),!e)return O.apply(r,o),r;break}}}return a(e,f)(o,t,!h,r,U.test(e)),r}i.pseudos.nth=i.pseudos.eq;function jt(){}jt.prototype=i.filters=i.pseudos,i.setFilters=new jt,n.sortStable=v.split("").sort(S).join("")===v,c(),[0,0].sort(S),n.detectDuplicates=E,x.find=ot,x.expr=ot.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ot.uniqueSort,x.text=ot.getText,x.isXMLDoc=ot.isXML,x.contains=ot.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(p){for(t=e.memory&&p,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(a[s].apply(p[0],p[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))>-1)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!a||n&&!u||(r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,s="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,H,q=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))x.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){return t===undefined||t&&"string"==typeof t&&n===undefined?this.get(e,t):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(t===undefined)this.cache[o]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):(i=x.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(w)||[])),n=r.length;while(n--)delete s[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}},L=new F,H=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||H.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return H.access(e,t,n)},_removeData:function(e,t){H.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!H.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.slice(5)),P(i,r,s[r]));H.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:q.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=H.get(e,t),n&&(!r||x.isArray(n)?r=H.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()
+},_queueHooks:function(e,t){var n=t+"queueHooks";return H.get(e,n)||H.access(e,n,{empty:x.Callbacks("once memory").add(function(){H.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=undefined),e=e||"fx";while(s--)n=H.get(o[s],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n\f]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,i="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,s=0,a=x(this),u=t,l=e.match(w)||[];while(o=l[s++])u=i?u:!a.hasClass(o),a[u?"addClass":"removeClass"](o)}else(n===r||"boolean"===n)&&(this.className&&H.set(this,"__className__",this.className),this.className=this.className||e===!1?"":H.get(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,x(this).val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;for(;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.bool.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,p,f,h,d,g,m,y=H.get(e);if(y){n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(f=x.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=x.event.special[d]||{},p=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,f.setup&&f.setup.call(e,i,g,a)!==!1||e.addEventListener&&e.addEventListener(d,a,!1)),f.add&&(f.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,p):h.push(p),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,p,f,h,d,g,m=H.hasData(e)&&H.get(e);if(m&&(u=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){p=x.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;while(o--)c=f[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(e,c));s&&!f.length&&(p.teardown&&p.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,H.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,p,f,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),f=x.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!x.isWindow(r)){for(l=f.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])&&!t.isPropagationStopped())t.type=s>1?l:f.bindType||d,p=(H.get(a,"events")||{})[t.type]&&H.get(a,"handle"),p&&p.apply(a,n),p=c&&a[c],p&&x.acceptData(a)&&p.apply&&p.apply(a,n)===!1&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(H.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,s=e,a=this.fixHooks[i];a||(this.fixHooks[i]=a=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new x.Event(s),t=r.length;while(t--)n=r[t],e[n]=s[n];return e.target||(e.target=o),3===e.target.nodeType&&(e.target=e.target.parentNode),a.filter?a.filter(e,s):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=undefined),n===!1&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=/^(?:parents|prev(?:Until|All))/,Q=x.expr.match.needsContext,K={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(et(this,e||[],!0))},filter:function(e){return this.pushStack(et(this,e||[],!1))},is:function(e){return!!et(this,"string"==typeof e&&Q.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],s=Q.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function Z(e,t){while((e=e[t])&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return Z(e,"nextSibling")},prev:function(e){return Z(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return e.contentDocument||x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(K[e]||x.unique(i),J.test(e)&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function et(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}var tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,nt=/<([\w:]+)/,rt=/<|&#?\w+;/,it=/<(?:script|style|link)/i,ot=/^(?:checkbox|radio)$/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,at=/^$|\/(?:java|ecma)script/i,ut=/^true\/(.*)/,lt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ct={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ct.optgroup=ct.option,ct.tbody=ct.tfoot=ct.colgroup=ct.caption=ct.thead,ct.th=ct.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(mt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&dt(mt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(mt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!it.test(e)&&!ct[(nt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(tt,"<$1></$2>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(mt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=f.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,p=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&st.test(d))return this.each(function(r){var i=p.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(mt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,mt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,ht),l=0;s>l;l++)a=o[l],at.test(a.type||"")&&!H.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(lt,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=mt(a),o=mt(e),r=0,i=o.length;i>r;r++)yt(o[r],s[r]);if(t)if(n)for(o=o||mt(e),s=s||mt(a),r=0,i=o.length;i>r;r++)gt(o[r],s[r]);else gt(e,a);return s=mt(a,"script"),s.length>0&&dt(s,!u&&mt(e,"script")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,p=e.length,f=t.createDocumentFragment(),h=[];for(;p>c;c++)if(i=e[c],i||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(rt.test(i)){o=o||f.appendChild(t.createElement("div")),s=(nt.exec(i)||["",""])[1].toLowerCase(),a=ct[s]||ct._default,o.innerHTML=a[1]+i.replace(tt,"<$1></$2>")+a[2],l=a[0];while(l--)o=o.firstChild;x.merge(h,o.childNodes),o=f.firstChild,o.textContent=""}else h.push(t.createTextNode(i));f.textContent="",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=mt(f.appendChild(i),"script"),u&&dt(o),n)){l=0;while(i=o[l++])at.test(i.type||"")&&n.push(i)}return f},cleanData:function(e){var t,n,r,i,o,s,a=x.event.special,u=0;for(;(n=e[u])!==undefined;u++){if(F.accepts(n)&&(o=n[H.expando],o&&(t=H.cache[o]))){if(r=Object.keys(t.events||{}),r.length)for(s=0;(i=r[s])!==undefined;s++)a[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);H.cache[o]&&delete H.cache[o]}delete L.cache[n[L.expando]]}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}});function pt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ht(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function dt(e,t){var n=e.length,r=0;for(;n>r;r++)H.set(e[r],"globalEval",!t||H.get(t[r],"globalEval"))}function gt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(H.hasData(e)&&(o=H.access(e),s=H.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function mt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function yt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ot.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var vt,xt,bt=/^(none|table(?!-c[ea]).+)/,wt=/^margin/,Tt=RegExp("^("+b+")(.*)$","i"),Ct=RegExp("^("+b+")(?!px)[a-z%]+$","i"),kt=RegExp("^([+-])=("+b+")","i"),Nt={BODY:"block"},Et={position:"absolute",visibility:"hidden",display:"block"},St={letterSpacing:0,fontWeight:400},jt=["Top","Right","Bottom","Left"],Dt=["Webkit","O","Moz","ms"];function At(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Dt.length;while(i--)if(t=Dt[i]+n,t in e)return t;return r}function Lt(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function Ht(t){return e.getComputedStyle(t,null)}function qt(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a>s;s++)r=e[s],r.style&&(o[s]=H.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&Lt(r)&&(o[s]=H.access(r,"olddisplay",Rt(r.nodeName)))):o[s]||(i=Lt(r),(n&&"none"!==n||!i)&&H.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=Ht(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return qt(this,!0)},hide:function(){return qt(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:Lt(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=vt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=At(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=kt.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=At(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=vt(e,t,r)),"normal"===i&&t in St&&(i=St[t]),""===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),vt=function(e,t,n){var r,i,o,s=n||Ht(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Ct.test(a)&&wt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ot(e,t,n){var r=Tt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ft(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;for(;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+jt[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+jt[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+jt[o]+"Width",!0,i))):(s+=x.css(e,"padding"+jt[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+jt[o]+"Width",!0,i)));return s}function Pt(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Ht(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=vt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Ct.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ft(e,t,n||(s?"border":"content"),r,o)+"px"}function Rt(e){var t=o,n=Nt[e];return n||(n=Mt(e,t),"none"!==n&&n||(xt=(xt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(xt[0].contentWindow||xt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=Mt(e,t),xt.detach()),Nt[e]=n),n}function Mt(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,t){x.cssHooks[t]={get:function(e,n,r){return n?0===e.offsetWidth&&bt.test(x.css(e,"display"))?x.swap(e,Et,function(){return Pt(e,t,r)}):Pt(e,t,r):undefined},set:function(e,n,r){var i=r&&Ht(e);return Ot(e,n,r?Ft(e,t,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,t){return t?x.swap(e,{display:"inline-block"},vt,[e,"marginRight"]):undefined}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,t){x.cssHooks[t]={get:function(e,n){return n?(n=vt(e,t),Ct.test(n)?x(e).position()[t]+"px":n):undefined}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+jt[r]+t]=o[r]||o[r-2]||o[0];return i}},wt.test(e)||(x.cssHooks[e+t].set=Ot)});var Wt=/%20/g,$t=/\[\]$/,Bt=/\r?\n/g,It=/^(?:submit|button|image|reset|file)$/i,zt=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&zt.test(this.nodeName)&&!It.test(e)&&(this.checked||!ot.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(Bt,"\r\n")}}):{name:t.name,value:n.replace(Bt,"\r\n")}}).get()}}),x.param=function(e,t){var n,r=[],i=function(e,t){t=x.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(t===undefined&&(t=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){i(this.name,this.value)});else for(n in e)_t(n,e[n],t,i);return r.join("&").replace(Wt,"+")};function _t(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||$t.test(e)?r(e,i):_t(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)_t(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var Xt,Ut,Yt=x.now(),Vt=/\?/,Gt=/#.*$/,Jt=/([?&])_=[^&]*/,Qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Kt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Zt=/^(?:GET|HEAD)$/,en=/^\/\//,tn=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,nn=x.fn.load,rn={},on={},sn="*/".concat("*");
+try{Ut=i.href}catch(an){Ut=o.createElement("a"),Ut.href="",Ut=Ut.href}Xt=tn.exec(Ut.toLowerCase())||[];function un(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function ln(e,t,n,r){var i={},o=e===on;function s(a){var u;return i[a]=!0,x.each(e[a]||[],function(e,a){var l=a(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):undefined:(t.dataTypes.unshift(l),s(l),!1)}),u}return s(t.dataTypes[0])||!i["*"]&&s("*")}function cn(e,t){var n,r,i=x.ajaxSettings.flatOptions||{};for(n in t)t[n]!==undefined&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,t,n){if("string"!=typeof e&&nn)return nn.apply(this,arguments);var r,i,o,s=this,a=e.indexOf(" ");return a>=0&&(r=e.slice(a),e=e.slice(0,a)),x.isFunction(t)?(n=t,t=undefined):t&&"object"==typeof t&&(i="POST"),s.length>0&&x.ajax({url:e,type:i,dataType:"html",data:t}).done(function(e){o=arguments,s.html(r?x("<div>").append(x.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){s.each(n,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ut,type:"GET",isLocal:Kt.test(Xt[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":sn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?cn(cn(e,x.ajaxSettings),t):cn(x.ajaxSettings,e)},ajaxPrefilter:un(rn),ajaxTransport:un(on),ajax:function(e,t){"object"==typeof e&&(t=e,e=undefined),t=t||{};var n,r,i,o,s,a,u,l,c=x.ajaxSetup({},t),p=c.context||c,f=c.context&&(p.nodeType||p.jquery)?x(p):x.event,h=x.Deferred(),d=x.Callbacks("once memory"),g=c.statusCode||{},m={},y={},v=0,b="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===v){if(!o){o={};while(t=Qt.exec(i))o[t[1].toLowerCase()]=t[2]}t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===v?i:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return v||(e=y[n]=y[n]||e,m[e]=t),this},overrideMimeType:function(e){return v||(c.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>v)for(t in e)g[t]=[g[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||b;return n&&n.abort(t),k(0,t),this}};if(h.promise(T).complete=d.add,T.success=T.done,T.error=T.fail,c.url=((e||c.url||Ut)+"").replace(Gt,"").replace(en,Xt[1]+"//"),c.type=t.method||t.type||c.method||c.type,c.dataTypes=x.trim(c.dataType||"*").toLowerCase().match(w)||[""],null==c.crossDomain&&(a=tn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===Xt[1]&&a[2]===Xt[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(Xt[3]||("http:"===Xt[1]?"80":"443")))),c.data&&c.processData&&"string"!=typeof c.data&&(c.data=x.param(c.data,c.traditional)),ln(rn,c,t,T),2===v)return T;u=c.global,u&&0===x.active++&&x.event.trigger("ajaxStart"),c.type=c.type.toUpperCase(),c.hasContent=!Zt.test(c.type),r=c.url,c.hasContent||(c.data&&(r=c.url+=(Vt.test(r)?"&":"?")+c.data,delete c.data),c.cache===!1&&(c.url=Jt.test(r)?r.replace(Jt,"$1_="+Yt++):r+(Vt.test(r)?"&":"?")+"_="+Yt++)),c.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(c.data&&c.hasContent&&c.contentType!==!1||t.contentType)&&T.setRequestHeader("Content-Type",c.contentType),T.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+("*"!==c.dataTypes[0]?", "+sn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)T.setRequestHeader(l,c.headers[l]);if(c.beforeSend&&(c.beforeSend.call(p,T,c)===!1||2===v))return T.abort();b="abort";for(l in{success:1,error:1,complete:1})T[l](c[l]);if(n=ln(on,c,t,T)){T.readyState=1,u&&f.trigger("ajaxSend",[T,c]),c.async&&c.timeout>0&&(s=setTimeout(function(){T.abort("timeout")},c.timeout));try{v=1,n.send(m,k)}catch(C){if(!(2>v))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,t,o,a){var l,m,y,b,w,C=t;2!==v&&(v=2,s&&clearTimeout(s),n=undefined,i=a||"",T.readyState=e>0?4:0,l=e>=200&&300>e||304===e,o&&(b=pn(c,T,o)),b=fn(c,b,T,l),l?(c.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(x.lastModified[r]=w),w=T.getResponseHeader("etag"),w&&(x.etag[r]=w)),204===e||"HEAD"===c.type?C="nocontent":304===e?C="notmodified":(C=b.state,m=b.data,y=b.error,l=!y)):(y=C,(e||!C)&&(C="error",0>e&&(e=0))),T.status=e,T.statusText=(t||C)+"",l?h.resolveWith(p,[m,C,T]):h.rejectWith(p,[T,C,y]),T.statusCode(g),g=undefined,u&&f.trigger(l?"ajaxSuccess":"ajaxError",[T,c,l?m:y]),d.fireWith(p,[T,C]),u&&(f.trigger("ajaxComplete",[T,c]),--x.active||x.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,undefined,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,r,i){return x.isFunction(n)&&(i=i||r,r=n,n=undefined),x.ajax({url:e,type:t,dataType:i,data:n,success:r})}});function pn(e,t,n){var r,i,o,s,a=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),r===undefined&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):undefined}function fn(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(s=l[u+" "+o]||l["* "+o],!s)for(i in l)if(a=i.split(" "),a[1]===o&&(s=l[u+" "+a[0]]||l["* "+a[0]])){s===!0?s=l[i]:l[i]!==!0&&(o=a[0],c.unshift(a[1]));break}if(s!==!0)if(s&&e["throws"])t=s(t);else try{t=s(t)}catch(p){return{state:"parsererror",error:s?p:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===undefined&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=x("<script>").prop({async:!0,charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),o.head.appendChild(t[0])},abort:function(){n&&n()}}}});var hn=[],dn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=hn.pop()||x.expando+"_"+Yt++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,s,a=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");return a||"jsonp"===t.dataTypes[0]?(i=t.jsonpCallback=x.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(Vt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return s||x.error(i+" was not called"),s[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){s=arguments},r.always(function(){e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,hn.push(i)),s&&x.isFunction(o)&&o(s[0]),s=o=undefined}),"script"):undefined}),x.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var gn=x.ajaxSettings.xhr(),mn={0:200,1223:204},yn=0,vn={};e.ActiveXObject&&x(e).on("unload",function(){for(var e in vn)vn[e]();vn=undefined}),x.support.cors=!!gn&&"withCredentials"in gn,x.support.ajax=gn=!!gn,x.ajaxTransport(function(e){var t;return x.support.cors||gn&&!e.crossDomain?{send:function(n,r){var i,o,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)s[i]=e.xhrFields[i];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(i in n)s.setRequestHeader(i,n[i]);t=function(e){return function(){t&&(delete vn[o],t=s.onload=s.onerror=null,"abort"===e?s.abort():"error"===e?r(s.status||404,s.statusText):r(mn[s.status]||s.status,s.statusText,"string"==typeof s.responseText?{text:s.responseText}:undefined,s.getAllResponseHeaders()))}},s.onload=t(),s.onerror=t("error"),t=vn[o=yn++]=t("abort"),s.send(e.hasContent&&e.data||null)},abort:function(){t&&t()}}:undefined});var xn,bn,wn=/^(?:toggle|show|hide)$/,Tn=RegExp("^(?:([+-])=|)("+b+")([a-z%]*)$","i"),Cn=/queueHooks$/,kn=[An],Nn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Tn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),s=(x.cssNumber[e]||"px"!==o&&+r)&&Tn.exec(x.css(n.elem,e)),a=1,u=20;if(s&&s[3]!==o){o=o||s[3],i=i||[],s=+r||1;do a=a||".5",s/=a,x.style(n.elem,e,s+o);while(a!==(a=n.cur()/r)&&1!==a&&--u)}return i&&(s=n.start=+s||+r||0,n.unit=o,n.end=i[1]?s+(i[1]+1)*i[2]:+i[2]),n}]};function En(){return setTimeout(function(){xn=undefined}),xn=x.now()}function Sn(e,t,n){var r,i=(Nn[t]||[]).concat(Nn["*"]),o=0,s=i.length;for(;s>o;o++)if(r=i[o].call(n,t,e))return r}function jn(e,t,n){var r,i,o=0,s=kn.length,a=x.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=xn||En(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,s=0,u=l.tweens.length;for(;u>s;s++)l.tweens[s].run(o);return a.notifyWith(e,[l,o,n]),1>o&&u?n:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:xn||En(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?a.resolveWith(e,[l,t]):a.rejectWith(e,[l,t]),this}}),c=l.props;for(Dn(c,l.opts.specialEasing);s>o;o++)if(r=kn[o].call(l,e,c,l.opts))return r;return x.map(c,Sn,l),x.isFunction(l.opts.start)&&l.opts.start.call(e,l),x.fx.timer(x.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function Dn(e,t){var n,r,i,o,s;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),s=x.cssHooks[r],s&&"expand"in s){o=s.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(jn,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Nn[n]=Nn[n]||[],Nn[n].unshift(t)},prefilter:function(e,t){t?kn.unshift(e):kn.push(e)}});function An(e,t,n){var r,i,o,s,a,u,l=this,c={},p=e.style,f=e.nodeType&&Lt(e),h=H.get(e,"fxshow");n.queue||(a=x._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,u=a.empty.fire,a.empty.fire=function(){a.unqueued||u()}),a.unqueued++,l.always(function(){l.always(function(){a.unqueued--,x.queue(e,"fx").length||a.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(p.display="inline-block")),n.overflow&&(p.overflow="hidden",l.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],wn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show")){if("show"!==i||!h||h[r]===undefined)continue;f=!0}c[r]=h&&h[r]||x.style(e,r)}if(!x.isEmptyObject(c)){h?"hidden"in h&&(f=h.hidden):h=H.access(e,"fxshow",{}),o&&(h.hidden=!f),f?x(e).show():l.done(function(){x(e).hide()}),l.done(function(){var t;H.remove(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)s=Sn(f?h[r]:0,r,l),r in h||(h[r]=s.start,f&&(s.end=s.start,s.start="width"===r||"height"===r?1:0))}}function Ln(e,t,n,r,i){return new Ln.prototype.init(e,t,n,r,i)}x.Tween=Ln,Ln.prototype={constructor:Ln,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=Ln.propHooks[this.prop];return e&&e.get?e.get(this):Ln.propHooks._default.get(this)},run:function(e){var t,n=Ln.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ln.propHooks._default.set(this),this}},Ln.prototype.init.prototype=Ln.prototype,Ln.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Ln.propHooks.scrollTop=Ln.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(Hn(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Lt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),s=function(){var t=jn(this,x.extend({},e),o);(i||H.get(this,"finish"))&&t.stop(!0)};return s.finish=s,i||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=undefined),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=x.timers,s=H.get(this);if(i)s[i]&&s[i].stop&&r(s[i]);else for(i in s)s[i]&&s[i].stop&&Cn.test(i)&&r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));(t||!n)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=H.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,s=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function Hn(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=jt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:Hn("show"),slideUp:Hn("hide"),slideToggle:Hn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=Ln.prototype.init,x.fx.tick=function(){var e,t=x.timers,n=0;for(xn=x.now();t.length>n;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||x.fx.stop(),xn=undefined},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){bn||(bn=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(bn),bn=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===undefined?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,i=this[0],o={top:0,left:0},s=i&&i.ownerDocument;if(s)return t=s.documentElement,x.contains(t,i)?(typeof i.getBoundingClientRect!==r&&(o=i.getBoundingClientRect()),n=qn(s),{top:o.top+n.pageYOffset-t.clientTop,left:o.left+n.pageXOffset-t.clientLeft}):o},x.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l,c=x.css(e,"position"),p=x(e),f={};"static"===c&&(e.style.position="relative"),a=p.offset(),o=x.css(e,"top"),u=x.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1,l?(r=p.position(),s=r.top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),x.isFunction(t)&&(t=t.call(e,n,a)),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+i),"using"in t?t.using.call(e,f):p.css(f)}},x.fn.extend({position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===x.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(r=e.offset()),r.top+=x.css(e[0],"borderTopWidth",!0),r.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-r.top-x.css(n,"marginTop",!0),left:t.left-r.left-x.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,n){var r="pageYOffset"===n;x.fn[t]=function(i){return x.access(this,function(t,i,o){var s=qn(t);return o===undefined?s?s[n]:t[i]:(s?s.scrollTo(r?e.pageXOffset:o,r?o:e.pageYOffset):t[i]=o,undefined)},t,i,arguments.length,null)}});function qn(e){return x.isWindow(e)?e:9===e.nodeType&&e.defaultView}x.each({Height:"height",Width:"width"},function(e,t){x.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){x.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),s=n||(r===!0||i===!0?"margin":"border");return x.access(this,function(t,n,r){var i;return x.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):r===undefined?x.css(t,n,s):x.style(t,n,r,s)},t,o?r:undefined,o,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}),"object"==typeof e&&"object"==typeof e.document&&(e.jQuery=e.$=x)})(window);
diff --git a/ism/data/remote-input/jquery.mobile-1.3.1.css b/ism/data/remote-input/jquery.mobile-1.3.1.css
new file mode 100644 (file)
index 0000000..4a7be83
--- /dev/null
@@ -0,0 +1,3348 @@
+/*
+* jQuery Mobile 1.3.1
+* Git HEAD hash: 74b4bec049fd93e4fe40205e6157de16eb64eb46 <> Date: Wed Apr 10 2013 21:57:23 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2013 jQuery Foundation, Inc. and other contributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+/* Swatches */
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-a {
+       border: 1px solid               #333 /*{a-bar-border}*/;
+       background:                     #111 /*{a-bar-background-color}*/;
+       color:                                  #fff /*{a-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 0 /*{a-bar-shadow-radius}*/ #000 /*{a-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/);
+}
+.ui-bar-a,
+.ui-bar-a input,
+.ui-bar-a select,
+.ui-bar-a textarea,
+.ui-bar-a button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-a .ui-link-inherit {
+       color: #fff /*{a-bar-color}*/;
+}
+.ui-bar-a a.ui-link {
+       color: #7cc4e7 /*{a-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-a a.ui-link:visited {
+    color: #2489ce /*{a-bar-link-visited}*/;
+}
+.ui-bar-a a.ui-link:hover {
+       color: #2489ce /*{a-bar-link-hover}*/;
+}
+.ui-bar-a a.ui-link:active {
+       color: #2489ce /*{a-bar-link-active}*/;
+}
+.ui-body-a,
+.ui-overlay-a {
+       border: 1px solid               #444 /*{a-body-border}*/;
+       background:                     #222 /*{a-body-background-color}*/;
+       color:                                  #fff /*{a-body-color}*/;
+       text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/;
+       font-weight: normal;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/);
+}
+.ui-overlay-a {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-a,
+.ui-body-a input,
+.ui-body-a select,
+.ui-body-a textarea,
+.ui-body-a button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-a .ui-link-inherit {
+       color:  #fff /*{a-body-color}*/;
+}
+.ui-body-a .ui-link {
+       color: #2489ce /*{a-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-a .ui-link:visited {
+    color: #2489ce /*{a-body-link-visited}*/;
+}
+.ui-body-a .ui-link:hover {
+       color: #2489ce /*{a-body-link-hover}*/;
+}
+.ui-body-a .ui-link:active {
+       color: #2489ce /*{a-body-link-active}*/;
+}
+.ui-btn-up-a {
+       border: 1px solid               #111 /*{a-bup-border}*/;
+       background:                     #333 /*{a-bup-background-color}*/;
+       color:                                  #fff /*{a-bup-color}*/;
+       text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 0 /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/);
+}
+.ui-btn-up-a:visited,
+.ui-btn-up-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bup-color}*/;
+}
+.ui-btn-hover-a {
+       border: 1px solid               #000 /*{a-bhover-border}*/;
+       background:                     #444 /*{a-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bhover-color}*/;
+       text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 0 /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/);
+}
+.ui-btn-hover-a:visited,
+.ui-btn-hover-a:hover,
+.ui-btn-hover-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bhover-color}*/;
+}
+.ui-btn-down-a {
+       border: 1px solid               #000 /*{a-bdown-border}*/;
+       background:                     #222 /*{a-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bdown-color}*/;
+       text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 0 /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/);
+}
+.ui-btn-down-a:visited,
+.ui-btn-down-a:hover,
+.ui-btn-down-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bdown-color}*/;
+}
+.ui-btn-up-a,
+.ui-btn-hover-a,
+.ui-btn-down-a {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-b {
+       border: 1px solid               #456f9a /*{b-bar-border}*/;
+       background:                     #5e87b0 /*{b-bar-background-color}*/;
+       color:                                  #fff /*{b-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 0 /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/);
+}
+.ui-bar-b,
+.ui-bar-b input,
+.ui-bar-b select,
+.ui-bar-b textarea,
+.ui-bar-b button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-b .ui-link-inherit {
+       color:  #fff /*{b-bar-color}*/;
+}
+.ui-bar-b a.ui-link {
+       color: #ddf0f8 /*{b-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-b a.ui-link:visited {
+    color: #ddf0f8 /*{b-bar-link-visited}*/;
+}
+.ui-bar-b a.ui-link:hover {
+       color: #ddf0f8 /*{b-bar-link-hover}*/;
+}
+.ui-bar-b a.ui-link:active {
+       color: #ddf0f8 /*{b-bar-link-active}*/;
+}
+.ui-body-b,
+.ui-overlay-b {
+       border: 1px solid               #999 /*{b-body-border}*/;
+       background:                     #f3f3f3 /*{b-body-background-color}*/;
+       color:                                  #222 /*{b-body-color}*/;
+       text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/;
+       font-weight: normal;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/);
+}
+.ui-overlay-b {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-b,
+.ui-body-b input,
+.ui-body-b select,
+.ui-body-b textarea,
+.ui-body-b button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-b .ui-link-inherit {
+       color:  #333 /*{b-body-color}*/;
+}
+.ui-body-b .ui-link {
+       color: #2489ce /*{b-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-b .ui-link:visited {
+    color: #2489ce /*{b-body-link-visited}*/;
+}
+.ui-body-b .ui-link:hover {
+       color: #2489ce /*{b-body-link-hover}*/;
+}
+.ui-body-b .ui-link:active {
+       color: #2489ce /*{b-body-link-active}*/;
+}
+.ui-btn-up-b {
+       border: 1px solid               #044062 /*{b-bup-border}*/;
+       background:                     #396b9e /*{b-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bup-color}*/;
+       text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 0 /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/);
+}
+.ui-btn-up-b:visited,
+.ui-btn-up-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bup-color}*/;
+}
+.ui-btn-hover-b {
+       border: 1px solid               #00415e /*{b-bhover-border}*/;
+       background:                     #4b88b6 /*{b-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bhover-color}*/;
+       text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 0 /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/);
+}
+.ui-btn-hover-b:visited,
+.ui-btn-hover-b:hover,
+.ui-btn-hover-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bhover-color}*/;
+}
+.ui-btn-down-b {
+       border: 1px solid               #225377 /*{b-bdown-border}*/;
+       background:                     #4e89c5 /*{b-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bdown-color}*/;
+       text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 0 /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/);
+}
+.ui-btn-down-b:visited,
+.ui-btn-down-b:hover,
+.ui-btn-down-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bdown-color}*/;
+}
+.ui-btn-up-b,
+.ui-btn-hover-b,
+.ui-btn-down-b {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* C
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-c {
+       border: 1px solid               #b3b3b3 /*{c-bar-border}*/;
+       background:                     #eee /*{c-bar-background-color}*/;
+       color:                                  #3e3e3e /*{c-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 0 /*{c-bar-shadow-radius}*/        #fff /*{c-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/);
+}
+.ui-bar-c .ui-link-inherit {
+       color:  #3e3e3e /*{c-bar-color}*/;
+}
+.ui-bar-c a.ui-link {
+       color: #7cc4e7 /*{c-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-c a.ui-link:visited {
+    color: #2489ce /*{c-bar-link-visited}*/;
+}
+.ui-bar-c a.ui-link:hover {
+       color: #2489ce /*{c-bar-link-hover}*/;
+}
+.ui-bar-c a.ui-link:active {
+       color: #2489ce /*{c-bar-link-active}*/;
+}
+.ui-bar-c,
+.ui-bar-c input,
+.ui-bar-c select,
+.ui-bar-c textarea,
+.ui-bar-c button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-c,
+.ui-overlay-c {
+       border: 1px solid               #aaa /*{c-body-border}*/;
+       color:                                  #333 /*{c-body-color}*/;
+       text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/;
+       background:                     #f9f9f9 /*{c-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eee /*{c-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/);
+}
+.ui-overlay-c {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-c,
+.ui-body-c input,
+.ui-body-c select,
+.ui-body-c textarea,
+.ui-body-c button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-c .ui-link-inherit {
+       color:  #333 /*{c-body-color}*/;
+}
+.ui-body-c .ui-link {
+       color: #2489ce /*{c-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-c .ui-link:visited {
+    color: #2489ce /*{c-body-link-visited}*/;
+}
+.ui-body-c .ui-link:hover {
+       color: #2489ce /*{c-body-link-hover}*/;
+}
+.ui-body-c .ui-link:active {
+       color: #2489ce /*{c-body-link-active}*/;
+}
+.ui-btn-up-c {
+       border: 1px solid               #ccc /*{c-bup-border}*/;
+       background:                     #eee /*{c-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{c-bup-color}*/;
+       text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #fff /*{c-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/);
+}
+.ui-btn-up-c:visited,
+.ui-btn-up-c a.ui-link-inherit {
+       color:                                  #2f3e46 /*{c-bup-color}*/;
+}
+.ui-btn-hover-c {
+       border: 1px solid               #bbb /*{c-bhover-border}*/;
+       background:                     #dfdfdf /*{c-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{c-bhover-color}*/;
+       text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #fff /*{c-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/);
+}
+.ui-btn-hover-c:visited,
+.ui-btn-hover-c:hover,
+.ui-btn-hover-c a.ui-link-inherit {
+       color:                                  #2f3e46 /*{c-bhover-color}*/;
+}
+.ui-btn-down-c {
+       border: 1px solid               #bbb /*{c-bdown-border}*/;
+       background:                     #d6d6d6 /*{c-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{c-bdown-color}*/;
+       text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #fff /*{c-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/);
+}
+.ui-btn-down-c:visited,
+.ui-btn-down-c:hover,
+.ui-btn-down-c a.ui-link-inherit {
+       color:                                  #2f3e46 /*{c-bdown-color}*/;
+}
+.ui-btn-up-c,
+.ui-btn-hover-c,
+.ui-btn-down-c {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* D
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-d {
+       border: 1px solid               #bbb /*{d-bar-border}*/;
+       background:                     #bbb /*{d-bar-background-color}*/;
+       color:                                  #333 /*{d-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/);
+}
+.ui-bar-d,
+.ui-bar-d input,
+.ui-bar-d select,
+.ui-bar-d textarea,
+.ui-bar-d button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-d .ui-link-inherit {
+       color:  #333 /*{d-bar-color}*/;
+}
+.ui-bar-d a.ui-link {
+       color: #2489ce /*{d-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-d a.ui-link:visited {
+    color: #2489ce /*{d-bar-link-visited}*/;
+}
+.ui-bar-d a.ui-link:hover {
+       color: #2489ce /*{d-bar-link-hover}*/;
+}
+.ui-bar-d a.ui-link:active {
+       color: #2489ce /*{d-bar-link-active}*/;
+}
+.ui-body-d,
+.ui-overlay-d {
+       border: 1px solid               #bbb /*{d-body-border}*/;
+       color:                                  #333 /*{d-body-color}*/;
+       text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/     #fff /*{d-body-shadow-color}*/;
+       background:                     #fff /*{d-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{d-body-background-start}*/), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/);
+}
+.ui-overlay-d {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-d,
+.ui-body-d input,
+.ui-body-d select,
+.ui-body-d textarea,
+.ui-body-d button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-d .ui-link-inherit {
+       color:  #333 /*{d-body-color}*/;
+}
+.ui-body-d .ui-link {
+       color: #2489ce /*{d-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-d .ui-link:visited {
+    color: #2489ce /*{d-body-link-visited}*/;
+}
+.ui-body-d .ui-link:hover {
+       color: #2489ce /*{d-body-link-hover}*/;
+}
+.ui-body-d .ui-link:active {
+       color: #2489ce /*{d-body-link-active}*/;
+}
+.ui-btn-up-d {
+       border: 1px solid               #bbb /*{d-bup-border}*/;
+       background:                     #fff /*{d-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #333 /*{d-bup-color}*/;
+       text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa /*{d-bup-background-start}*/), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/);
+}
+.ui-btn-up-d:visited,
+.ui-btn-up-d a.ui-link-inherit {
+       color:                                  #333 /*{d-bup-color}*/;
+}
+.ui-btn-hover-d {
+       border: 1px solid               #aaa /*{d-bhover-border}*/;
+       background:                     #eee /*{d-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #333 /*{d-bhover-color}*/;
+       cursor: pointer;
+       text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/       #fff /*{d-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #eee /*{d-bhover-background-start}*/), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/);
+}
+.ui-btn-hover-d:visited,
+.ui-btn-hover-d:hover,
+.ui-btn-hover-d a.ui-link-inherit {
+       color:                                  #333 /*{d-bhover-color}*/;
+}
+.ui-btn-down-d {
+       border: 1px solid               #aaa /*{d-bdown-border}*/;
+       background:                     #eee /*{d-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #333 /*{d-bdown-color}*/;
+       text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/  #fff /*{d-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/);
+}
+.ui-btn-down-d:visited,
+.ui-btn-down-d:hover,
+.ui-btn-down-d a.ui-link-inherit {
+       color:                                  #333 /*{d-bdown-color}*/;
+}
+.ui-btn-up-d,
+.ui-btn-hover-d,
+.ui-btn-down-d {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* E
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-e {
+       border: 1px solid               #f7c942 /*{e-bar-border}*/;
+       background:                     #fadb4e /*{e-bar-background-color}*/;
+       color:                                  #333 /*{e-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/        #fff /*{e-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/);
+}
+.ui-bar-e,
+.ui-bar-e input,
+.ui-bar-e select,
+.ui-bar-e textarea,
+.ui-bar-e button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-e .ui-link-inherit {
+       color:  #333 /*{e-bar-color}*/;
+}
+.ui-bar-e a.ui-link {
+       color: #2489ce /*{e-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-e a.ui-link:visited {
+    color: #2489ce /*{e-bar-link-visited}*/;
+}
+.ui-bar-e a.ui-link:hover {
+       color: #2489ce /*{e-bar-link-hover}*/;
+}
+.ui-bar-e a.ui-link:active {
+       color: #2489ce /*{e-bar-link-active}*/;
+}
+.ui-body-e,
+.ui-overlay-e {
+       border: 1px solid               #f7c942 /*{e-body-border}*/;
+       color:                                  #222 /*{e-body-color}*/;
+       text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/     #fff /*{e-body-shadow-color}*/;
+       background:                     #fff9df /*{e-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/);
+}
+.ui-overlay-e {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-e,
+.ui-body-e input,
+.ui-body-e select,
+.ui-body-e textarea,
+.ui-body-e button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-e .ui-link-inherit {
+       color:  #222 /*{e-body-color}*/;
+}
+.ui-body-e .ui-link {
+       color: #2489ce /*{e-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-e .ui-link:visited {
+    color: #2489ce /*{e-body-link-visited}*/;
+}
+.ui-body-e .ui-link:hover {
+       color: #2489ce /*{e-body-link-hover}*/;
+}
+.ui-body-e .ui-link:active {
+       color: #2489ce /*{e-body-link-active}*/;
+}
+.ui-btn-up-e {
+       border: 1px solid               #f4c63f /*{e-bup-border}*/;
+       background:                     #fadb4e /*{e-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{e-bup-color}*/;
+       text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/        #fff /*{e-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/);
+}
+.ui-btn-up-e:visited,
+.ui-btn-up-e a.ui-link-inherit {
+       color:                                  #222 /*{e-bup-color}*/;
+}
+.ui-btn-hover-e {
+       border: 1px solid               #f2c43d /*{e-bhover-border}*/;
+       background:                     #fbe26f /*{e-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bhover-color}*/;
+       text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/       #fff /*{e-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/);
+}
+.ui-btn-hover-e:visited,
+.ui-btn-hover-e:hover,
+.ui-btn-hover-e a.ui-link-inherit {
+       color:                                  #333 /*{e-bhover-color}*/;
+}
+.ui-btn-down-e {
+       border: 1px solid               #f2c43d /*{e-bdown-border}*/;
+       background:                     #fceda7 /*{e-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bdown-color}*/;
+       text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/  #fff /*{e-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/);
+}
+.ui-btn-down-e:visited,
+.ui-btn-down-e:hover,
+.ui-btn-down-e a.ui-link-inherit {
+       color:                                  #333 /*{e-bdown-color}*/;
+}
+.ui-btn-up-e,
+.ui-btn-hover-e,
+.ui-btn-down-e {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       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
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-btn-active:visited,
+.ui-btn-active:hover,
+.ui-btn-active a.ui-link-inherit {
+       color:                                  #fff /*{global-active-color}*/;
+}
+/* button inner top highlight
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-inner {
+       border-top: 0px solid   #fff;
+       border-color:                   rgba(255,255,255,.3);
+}
+/* corner rounding classes
+-----------------------------------------------------------------------------------------------------------*/
+.ui-corner-all {
+       -webkit-border-radius:                          .6em /*{global-radii-blocks}*/;
+       border-radius:                                          .6em /*{global-radii-blocks}*/;
+}
+/* Form field separator
+-----------------------------------------------------------------------------------------------------------*/
+.ui-br {
+       border-color: rgb(130,130,130);
+       border-color: rgba(130,130,130,.3);
+       border-style: solid;
+}
+/* Interaction cues
+-----------------------------------------------------------------------------------------------------------*/
+.ui-disabled {
+       filter: Alpha(Opacity=30);
+       opacity: .3;
+       zoom: 1;
+}
+.ui-disabled,
+.ui-disabled a {
+       cursor: default !important;
+       pointer-events: none;
+}
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon,
+.ui-icon-searchfield:after {
+       background-image: url(icons-18-white.png) /*{global-icon-set}*/;
+       background-repeat: no-repeat;
+       -webkit-border-radius:                          9px;
+       border-radius:                                          9px;
+}
+/* Alt icon color
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon-alt .ui-icon,
+.ui-icon-alt .ui-icon-searchfield:after {
+       background-color:                                               #fff;
+       background-color:                                               rgba(255,255,255,.3);
+       background-image: url(icons-18-black.png);
+       background-repeat: no-repeat;
+}
+/* No disc
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon-nodisc .ui-icon,
+.ui-icon-nodisc .ui-icon-searchfield:after,
+.ui-icon-nodisc .ui-icon-alt .ui-icon,
+.ui-icon-nodisc .ui-icon-alt .ui-icon-searchfield:after {
+       background-color: transparent;
+}
+/* Icon sprite
+-----------------------------------------------------------------------------------------------------------*/
+/* plus minus */
+.ui-icon-plus {
+       background-position:    -1px -1px;
+}
+.ui-icon-minus {
+       background-position:    -37px -1px;
+}
+/* delete/close */
+.ui-icon-delete {
+       background-position:    -73px -1px;
+}
+/* arrows */
+.ui-icon-arrow-r {
+       background-position:    -108px -1px;
+}
+.ui-icon-arrow-l {
+       background-position:    -144px -1px;
+}
+.ui-icon-arrow-u {
+       background-position:    -180px -1px;
+}
+.ui-icon-arrow-d {
+       background-position:    -216px -1px;
+}
+/* misc */
+.ui-icon-check {
+       background-position:    -252px -1px;
+}
+.ui-icon-gear {
+       background-position:    -288px -1px;
+}
+.ui-icon-refresh {
+       background-position:    -323px -1px;
+}
+.ui-icon-forward {
+       background-position:    -360px -1px;
+}
+.ui-icon-back {
+       background-position:    -396px -1px;
+}
+.ui-icon-grid {
+       background-position:    -432px -1px;
+}
+.ui-icon-star {
+       background-position:    -467px -1px;
+}
+.ui-icon-alert {
+       background-position:    -503px -1px;
+}
+.ui-icon-info {
+       background-position:    -539px -1px;
+}
+.ui-icon-home {
+       background-position:    -575px -1px;
+}
+/* search */
+.ui-icon-search,
+.ui-icon-searchfield:after {
+       background-position:    -611px -1px;
+}
+/* checkbox radio */
+.ui-icon-checkbox-on {
+       background-position:    -647px -1px;
+}
+.ui-icon-checkbox-off {
+       background-position:    -683px -1px;
+}
+.ui-icon-radio-on {
+       background-position:    -718px -1px;
+}
+.ui-icon-radio-off {
+       background-position:    -754px -1px;
+}
+/* menu edit */
+.ui-icon-bars {
+       background-position:    -788px -1px;
+}
+.ui-icon-edit {
+       background-position:    -824px -1px;
+}
+/* HD/"retina" sprite
+-----------------------------------------------------------------------------------------------------------*/
+@media only screen and (-webkit-min-device-pixel-ratio: 1.3),
+       only screen and (min--moz-device-pixel-ratio: 1.3),
+       only screen and (min-resolution: 200dpi) {
+
+       .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r,
+       .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check,
+       .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back,
+       .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-bars, .ui-icon-edit,
+       .ui-icon-search, .ui-icon-searchfield:after,
+       .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on {
+               background-image: url(icons-36-white.png);
+               -moz-background-size: 864px 18px;
+               -o-background-size: 864px 18px;
+               -webkit-background-size: 864px 18px;
+               background-size: 864px 18px;
+       }
+       .ui-icon-alt .ui-icon {
+               background-image: url(icons-36-black.png);
+       }
+       .ui-icon-plus {
+               background-position:    0 50%;
+       }
+       .ui-icon-minus {
+               background-position:    -36px 50%;
+       }
+       .ui-icon-delete {
+               background-position:    -72px 50%;
+       }
+       .ui-icon-arrow-r {
+               background-position:    -108px 50%;
+       }
+       .ui-icon-arrow-l {
+               background-position:    -144px 50%;
+       }
+       .ui-icon-arrow-u {
+               background-position:    -179px 50%;
+       }
+       .ui-icon-arrow-d {
+               background-position:    -215px 50%;
+       }
+       .ui-icon-check {
+               background-position:    -252px 50%;
+       }
+       .ui-icon-gear {
+               background-position:    -287px 50%;
+       }
+       .ui-icon-refresh {
+               background-position:    -323px 50%;
+       }
+       .ui-icon-forward {
+               background-position:    -360px 50%;
+       }
+       .ui-icon-back {
+               background-position:    -395px 50%;
+       }
+       .ui-icon-grid {
+               background-position:    -431px 50%;
+       }
+       .ui-icon-star {
+               background-position:    -467px 50%;
+       }
+       .ui-icon-alert {
+               background-position:    -503px 50%;
+       }
+       .ui-icon-info {
+               background-position:    -538px 50%;
+       }
+       .ui-icon-home {
+               background-position:    -575px 50%;
+       }
+       .ui-icon-search,
+       .ui-icon-searchfield:after {
+               background-position:    -611px 50%;
+       }
+       .ui-icon-checkbox-on {
+               background-position:    -647px 50%;
+       }
+       .ui-icon-checkbox-off {
+               background-position:    -683px 50%;
+       }
+       .ui-icon-radio-on {
+               background-position:    -718px 50%;
+       }
+       .ui-icon-radio-off {
+               background-position:    -754px 50%;
+       }
+       .ui-icon-bars {
+               background-position:    -788px 50%;
+
+       }.ui-icon-edit {
+               background-position:    -824px 50%;
+       }
+}
+/* checks,radios */
+.ui-checkbox .ui-icon,
+.ui-selectmenu-list .ui-icon {
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+.ui-icon-checkbox-off,
+.ui-icon-radio-off {
+       background-color: transparent;
+}
+.ui-checkbox-on .ui-icon,
+.ui-radio-on .ui-icon {
+       background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */
+}
+/* loading icon */
+.ui-icon-loading {
+       background: url(ajax-loader.gif);
+       background-size: 46px 46px;
+}
+/* Button corner class
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-corner-all {
+       -webkit-border-radius:                          1em /*{global-radii-buttons}*/;
+       border-radius:                                          1em /*{global-radii-buttons}*/;
+}
+/* radius clip workaround for cleaning up corner trapping */
+.ui-corner-all,
+.ui-btn-corner-all {
+       -webkit-background-clip: padding;
+       background-clip: padding-box;
+}
+/* Overlay / modal
+-----------------------------------------------------------------------------------------------------------*/
+.ui-overlay {
+       background: #666;
+       filter: Alpha(Opacity=50);
+       opacity: .5;
+       position: absolute;
+       width: 100%;
+       height: 100%;
+}
+.ui-overlay-shadow {
+       -moz-box-shadow: 0 0 12px                       rgba(0,0,0,.6);
+       -webkit-box-shadow: 0 0 12px            rgba(0,0,0,.6);
+       box-shadow: 0 0 12px                            rgba(0,0,0,.6);
+}
+.ui-shadow {
+       -moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/                         rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+       -webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/              rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+       box-shadow: 0 1px 3px /*{global-box-shadow-size}*/                              rgba(0,0,0,.2) /*{global-box-shadow-color}*/
+}
+.ui-bar-a .ui-shadow,
+.ui-bar-b .ui-shadow ,
+.ui-bar-c .ui-shadow  {
+       -moz-box-shadow: 0 1px 0                                rgba(255,255,255,.3);
+       -webkit-box-shadow: 0 1px 0                     rgba(255,255,255,.3);
+       box-shadow: 0 1px 0                                     rgba(255,255,255,.3);
+}
+.ui-shadow-inset {
+       -moz-box-shadow: inset 0 1px 4px                rgba(0,0,0,.2);
+       -webkit-box-shadow: inset 0 1px 4px     rgba(0,0,0,.2);
+       box-shadow: inset 0 1px 4px                     rgba(0,0,0,.2);
+}
+.ui-icon-shadow {
+       -moz-box-shadow: 0 1px 0                                rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+       -webkit-box-shadow: 0 1px 0                     rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+       box-shadow: 0 1px 0                                     rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+}
+/* Focus state - set here for specificity (note: these classes are added by JavaScript)
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn:focus, .ui-link-inherit:focus {
+       outline: 0;
+}
+.ui-btn.ui-focus {
+       z-index: 1;
+}
+.ui-focus,
+.ui-btn:focus {
+       -moz-box-shadow: inset 0 0 3px          #387bbe /*{global-active-background-color}*/, 0 0 9px           #387bbe /*{global-active-background-color}*/;
+       -webkit-box-shadow: inset 0 0 3px       #387bbe /*{global-active-background-color}*/, 0 0 9px           #387bbe /*{global-active-background-color}*/;
+       box-shadow: inset 0 0 3px                       #387bbe /*{global-active-background-color}*/, 0 0 9px           #387bbe /*{global-active-background-color}*/;
+}
+.ui-input-text.ui-focus,
+.ui-input-search.ui-focus {
+       -moz-box-shadow: 0 0 12px                       #387bbe /*{global-active-background-color}*/;
+       -webkit-box-shadow: 0 0 12px            #387bbe /*{global-active-background-color}*/;
+       box-shadow: 0 0 12px                                    #387bbe /*{global-active-background-color}*/;
+}
+/* unset box shadow in browsers that don't do it right
+-----------------------------------------------------------------------------------------------------------*/
+.ui-mobile-nosupport-boxshadow * {
+       -moz-box-shadow: none !important;
+       -webkit-box-shadow: none !important;
+       box-shadow: none !important;
+}
+/* ...and bring back focus */
+.ui-mobile-nosupport-boxshadow .ui-focus,
+.ui-mobile-nosupport-boxshadow .ui-btn:focus,
+.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus {
+       outline-width: 1px;
+       outline-style: auto;
+}
+/* some unsets - more probably needed */
+.ui-mobile, .ui-mobile body { height: 99.9%; }
+.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; }
+.ui-mobile a img, .ui-mobile fieldset { border-width: 0; }
+/* responsive page widths */
+.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: 100%; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
+/* Issue #2066 */
+body.ui-mobile-viewport,
+div.ui-mobile-viewport { overflow-x: hidden; }
+/* "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%; min-height: 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; }
+/*orientations from js are available */
+@media screen and (orientation: portrait){
+.ui-mobile .ui-page { min-height: 420px; }
+}
+@media screen and (orientation: landscape){
+.ui-mobile .ui-page { min-height: 300px; }
+}
+/* loading screen */
+.ui-loading .ui-loader { display: block; }
+.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; left: 50%; border:0; }
+.ui-loader-default { background: none; filter: Alpha(Opacity=18); opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; }
+.ui-loader-verbose { width: 200px; filter: Alpha(Opacity=88); opacity: .88; box-shadow: 0 1px 1px -1px #fff; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; }
+.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; }
+.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; }
+.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; border-radius: 36px; }
+.ui-loader-verbose .ui-icon { margin: 0 auto 10px; filter: Alpha(Opacity=75); opacity: .75; }
+.ui-loader-textonly { padding: 15px; margin-left: -115px; }
+.ui-loader-textonly .ui-icon { display: none; }
+.ui-loader-fakefix { position: absolute; }
+/*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 { position: relative; zoom: 1; }
+.ui-mobile .ui-header, .ui-mobile .ui-footer { border-left-width: 0; border-right-width: 0; }
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right,
+.ui-footer .ui-btn-left,
+.ui-footer .ui-btn-right,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-left,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-right { position: absolute; top: 3px; }
+.ui-header-fixed .ui-btn-left,
+.ui-header-fixed .ui-btn-right { top: 4px;}
+.ui-header .ui-btn-left,
+.ui-footer .ui-btn-left { left: 5px; }
+.ui-header .ui-btn-right,
+.ui-footer .ui-btn-right { right: 5px; }
+.ui-footer > .ui-btn-icon-notext,
+.ui-header > .ui-btn-icon-notext,
+.ui-header-fixed.ui-fixed-hidden > .ui-btn-icon-notext { top: 6px; }
+.ui-header-fixed > .ui-btn-icon-notext { top: 7px;}
+.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center;  font-size: 16px; display: block;  margin: 0.1em 17% 0.5em !important; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; }
+.ui-footer .ui-title { margin: .6em 15px .8em; }
+/* content area*/
+.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 5px 15px 5px; }
+/* corner styling for dialogs and popups */
+.ui-corner-all > .ui-header:first-child,
+.ui-corner-all > .ui-content:first-child,
+.ui-corner-all > .ui-footer:first-child {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+}
+.ui-corner-all > .ui-header:last-child,
+.ui-corner-all > .ui-content:last-child,
+.ui-corner-all > .ui-footer:last-child {
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+/* icons sizing */
+.ui-icon { width: 18px; height: 18px; }
+/* non-js content hiding */
+.ui-nojs { position: absolute; left: -9999px; }
+/* accessible content hiding */
+.ui-hide-label label.ui-input-text, .ui-hide-label label.ui-select, .ui-hide-label label.ui-slider, .ui-hide-label label.ui-submit, .ui-hide-label .ui-controlgroup-label,
+.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+/* 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;
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+}
+.ui-page-pre-in {
+       opacity: 0;
+}
+.in {
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+       animation-timing-function: ease-out;
+       animation-duration: 350ms;
+}
+.out {
+       -webkit-animation-timing-function: ease-in;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-timing-function: ease-in;
+       -moz-animation-duration: 225ms;
+       animation-timing-function: ease-in;
+       animation-duration: 225ms;
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@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; }
+}
+@keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+.fade.out {
+       opacity: 0;
+       -webkit-animation-duration: 125ms;
+       -webkit-animation-name: fadeout;
+       -moz-animation-duration: 125ms;
+       -moz-animation-name: fadeout;
+       animation-duration: 125ms;
+       animation-name: fadeout;
+}
+.fade.in {
+       opacity: 1;
+       -webkit-animation-duration: 225ms;
+       -webkit-animation-name: fadein;
+       -moz-animation-duration: 225ms;
+       -moz-animation-name: fadein;
+       animation-duration: 225ms;
+       animation-name: fadein;
+}
+.pop {
+       -webkit-transform-origin: 50% 50%;
+       -moz-transform-origin: 50% 50%;
+       transform-origin: 50% 50%;
+}
+.pop.in {
+       -webkit-transform: scale(1);
+       -webkit-animation-name: popin;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: scale(1);
+       -moz-animation-name: popin;
+       -moz-animation-duration: 350ms;
+       transform: scale(1);
+       animation-name: popin;
+       animation-duration: 350ms;
+    opacity: 1;
+}
+.pop.out {
+       -webkit-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-name: fadeout;
+       -moz-animation-duration: 100ms;
+       animation-name: fadeout;
+       animation-duration: 100ms;
+       opacity: 0;
+}
+.pop.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+       animation-name: fadein;
+}
+.pop.out.reverse {
+       -webkit-transform: scale(.8);
+       -webkit-animation-name: popout;
+       -moz-transform: scale(.8);
+       -moz-animation-name: popout;
+       transform: scale(.8);
+       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;
+    }
+}
+@keyframes popin {
+    from {
+        transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        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;
+    }
+}
+@keyframes popout {
+    from {
+        transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        transform: scale(.8);
+        opacity: 0;
+    }
+}
+/* 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: translateX(100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromright {
+    from { transform: translateX(100%); }
+    to { transform: translateX(0); }
+}
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translate3d(-100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromleft {
+    from { -moz-transform: translateX(-100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromleft {
+    from { transform: translateX(-100%); }
+    to { transform: translateX(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: translateX(0); }
+    to { -moz-transform: translateX(-100%); }
+}
+@keyframes slideouttoleft {
+    from { transform: translateX(0); }
+    to { transform: translateX(-100%); }
+}
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(100%,0,0); }
+}
+@-moz-keyframes slideouttoright {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(100%); }
+}
+@keyframes slideouttoright {
+    from { transform: translateX(0); }
+    to { transform: translateX(100%); }
+}
+.slide.out, .slide.in {
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+       animation-timing-function: ease-out;
+       animation-duration: 350ms;
+}
+.slide.out {
+       -webkit-transform: translate3d(-100%,0,0);
+       -webkit-animation-name: slideouttoleft;
+       -moz-transform: translateX(-100%);
+       -moz-animation-name: slideouttoleft;
+       transform: translateX(-100%);
+       animation-name: slideouttoleft;
+}
+.slide.in {
+       -webkit-transform: translate3d(0,0,0);
+       -webkit-animation-name: slideinfromright;
+       -moz-transform: translateX(0);
+       -moz-animation-name: slideinfromright;
+       transform: translateX(0);
+       animation-name: slideinfromright;
+}
+.slide.out.reverse {
+       -webkit-transform: translate3d(100%,0,0);
+       -webkit-animation-name: slideouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: slideouttoright;
+       transform: translateX(100%);
+       animation-name: slideouttoright;
+}
+.slide.in.reverse {
+       -webkit-transform: translate3d(0,0,0);
+       -webkit-animation-name: slideinfromleft;
+       -moz-transform: translateX(0);
+       -moz-animation-name: slideinfromleft;
+       transform: translateX(0);
+       animation-name: slideinfromleft;
+}
+.slidefade.out {
+       -webkit-transform: translateX(-100%);
+       -webkit-animation-name: slideouttoleft;
+       -webkit-animation-duration: 225ms;
+       -moz-transform: translateX(-100%);
+       -moz-animation-name: slideouttoleft;
+       -moz-animation-duration: 225ms;
+       transform: translateX(-100%);
+       animation-name: slideouttoleft;
+       animation-duration: 225ms;
+}
+.slidefade.in {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateX(0);
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 200ms;
+       transform: translateX(0);
+       animation-name: fadein;
+       animation-duration: 200ms;
+}
+.slidefade.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: slideouttoright;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: slideouttoright;
+       -moz-animation-duration: 200ms;
+       transform: translateX(100%);
+       animation-name: slideouttoright;
+       animation-duration: 200ms;
+}
+.slidefade.in.reverse {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateX(0);
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 200ms;
+       transform: translateX(0);
+       animation-name: fadein;
+       animation-duration: 200ms;
+}
+/* slide down */
+.slidedown.out {
+       -webkit-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-name: fadeout;
+       -moz-animation-duration: 100ms;
+       animation-name: fadeout;
+       animation-duration: 100ms;
+}
+.slidedown.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfromtop;
+       -webkit-animation-duration: 250ms;
+       -moz-transform: translateY(0);
+       -moz-animation-name: slideinfromtop;
+       -moz-animation-duration: 250ms;
+       transform: translateY(0);
+       animation-name: slideinfromtop;
+       animation-duration: 250ms;
+}
+.slidedown.in.reverse {
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 150ms;
+       animation-name: fadein;
+       animation-duration: 150ms;
+}
+.slidedown.out.reverse {
+       -webkit-transform: translateY(-100%);
+       -webkit-animation-name: slideouttotop;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateY(-100%);
+       -moz-animation-name: slideouttotop;
+       -moz-animation-duration: 200ms;
+       transform: translateY(-100%);
+       animation-name: slideouttotop;
+       animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translateY(-100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfromtop {
+    from { -moz-transform: translateY(-100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfromtop {
+    from { transform: translateY(-100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(-100%); }
+}
+@-moz-keyframes slideouttotop {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(-100%); }
+}
+@keyframes slideouttotop {
+    from { transform: translateY(0); }
+    to { transform: translateY(-100%); }
+}
+/* slide up */
+.slideup.out {
+       -webkit-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-name: fadeout;
+       -moz-animation-duration: 100ms;
+       animation-name: fadeout;
+       animation-duration: 100ms;
+}
+.slideup.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfrombottom;
+       -webkit-animation-duration: 250ms;
+       -moz-transform: translateY(0);
+       -moz-animation-name: slideinfrombottom;
+       -moz-animation-duration: 250ms;
+       transform: translateY(0);
+       animation-name: slideinfrombottom;
+       animation-duration: 250ms;
+}
+.slideup.in.reverse {
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 150ms;
+       animation-name: fadein;
+       animation-duration: 150ms;
+}
+.slideup.out.reverse {
+       -webkit-transform: translateY(100%);
+       -webkit-animation-name: slideouttobottom;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateY(100%);
+       -moz-animation-name: slideouttobottom;
+       -moz-animation-duration: 200ms;
+       transform: translateY(100%);
+       animation-name: slideouttobottom;
+       animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translateY(100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfrombottom {
+    from { -moz-transform: translateY(100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfrombottom {
+    from { transform: translateY(100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(100%); }
+}
+@-moz-keyframes slideouttobottom {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(100%); }
+}
+@keyframes slideouttobottom {
+    from { transform: translateY(0); }
+    to { transform: translateY(100%); }
+}
+/* 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 {
+       -webkit-perspective: 1000;
+       -moz-perspective: 1000;
+       perspective: 1000;
+       position: absolute;
+}
+.flip {
+       -webkit-backface-visibility: hidden;
+       -webkit-transform: translateX(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: translateX(0);
+       backface-visibility: hidden;
+       transform: translateX(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;
+       transform: rotateY(-90deg) scale(.9);
+       animation-name: flipouttoleft;
+       animation-duration: 175ms;
+}
+.flip.in {
+       -webkit-animation-name: flipintoright;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-name: flipintoright;
+       -moz-animation-duration: 225ms;
+       animation-name: flipintoright;
+       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;
+       transform: rotateY(90deg) scale(.9);
+       animation-name: flipouttoright;
+}
+.flip.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+       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); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { 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); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { 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); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { 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); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* 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: 200px;
+       -moz-perspective: 200px;
+       -ms-perspective: 200px;
+       perspective: 200px;
+       position: absolute;
+}
+.turn {
+       -webkit-backface-visibility: hidden;
+       -webkit-transform: translateX(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: translateX(0);
+       -moz-transform-origin: 0;
+
+       backface-visibility :hidden;
+       transform: translateX(0);
+       transform-origin: 0;
+}
+.turn.out {
+       -webkit-transform: rotateY(-90deg) scale(.9);
+       -webkit-animation-name: flipouttoleft;
+       -webkit-animation-duration: 125ms;
+       -moz-transform: rotateY(-90deg) scale(.9);
+       -moz-animation-name: flipouttoleft;
+       -moz-animation-duration: 125ms;
+       transform: rotateY(-90deg) scale(.9);
+       animation-name: flipouttoleft;
+       animation-duration: 125ms;
+}
+.turn.in {
+       -webkit-animation-name: flipintoright;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-name: flipintoright;
+       -moz-animation-duration: 250ms;
+       animation-name: flipintoright;
+       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;
+       transform: rotateY(90deg) scale(.9);
+       animation-name: flipouttoright;
+}
+.turn.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+       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); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { 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); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { 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); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { 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); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* flow transition */
+.flow {
+       -webkit-transform-origin: 50% 30%;
+       -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4);
+       -moz-transform-origin: 50% 30%;
+       -moz-box-shadow: 0 0 20px rgba(0,0,0,.4);
+       transform-origin: 50% 30%;
+       box-shadow: 0 0 20px rgba(0,0,0,.4);
+}
+.ui-dialog.flow {
+       -webkit-transform-origin: none;
+       -webkit-box-shadow: none;
+       -moz-transform-origin: none;
+       -moz-box-shadow: none;
+       transform-origin: none;
+       box-shadow: none;
+}
+.flow.out {
+       -webkit-transform: translateX(-100%) scale(.7);
+       -webkit-animation-name: flowouttoleft;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translateX(-100%) scale(.7);
+       -moz-animation-name: flowouttoleft;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+       transform: translateX(-100%) scale(.7);
+       animation-name: flowouttoleft;
+       animation-timing-function: ease;
+       animation-duration: 350ms;
+}
+.flow.in {
+       -webkit-transform: translateX(0) scale(1);
+       -webkit-animation-name: flowinfromright;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translateX(0) scale(1);
+       -moz-animation-name: flowinfromright;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+       transform: translateX(0) scale(1);
+       animation-name: flowinfromright;
+       animation-timing-function: ease;
+       animation-duration: 350ms;
+}
+.flow.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: flowouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: flowouttoright;
+       transform: translateX(100%);
+       animation-name: flowouttoright;
+}
+.flow.in.reverse {
+       -webkit-animation-name: flowinfromleft;
+       -moz-animation-name: flowinfromleft;
+       animation-name: flowinfromleft;
+}
+@-webkit-keyframes flowouttoleft {
+    0% { -webkit-transform: translateX(0) scale(1); }
+       60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(-100%) scale(.7); }
+}
+@-moz-keyframes flowouttoleft {
+    0% { -moz-transform: translateX(0) scale(1); }
+       60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(-100%) scale(.7); }
+}
+@keyframes flowouttoleft {
+    0% { transform: translateX(0) scale(1); }
+       60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(-100%) scale(.7); }
+}
+@-webkit-keyframes flowouttoright {
+    0% { -webkit-transform: translateX(0) scale(1); }
+       60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform:  translateX(100%) scale(.7); }
+}
+@-moz-keyframes flowouttoright {
+    0% { -moz-transform: translateX(0) scale(1); }
+       60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(100%) scale(.7); }
+}
+@keyframes flowouttoright {
+    0% { transform: translateX(0) scale(1); }
+       60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(100%) scale(.7); }
+}
+@-webkit-keyframes flowinfromleft {
+    0% { -webkit-transform: translateX(-100%) scale(.7); }
+       30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromleft {
+    0% { -moz-transform: translateX(-100%) scale(.7); }
+       30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromleft {
+    0% { transform: translateX(-100%) scale(.7); }
+       30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+@-webkit-keyframes flowinfromright {
+    0% { -webkit-transform: translateX(100%) scale(.7); }
+       30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromright {
+    0% { -moz-transform: translateX(100%) scale(.7); }
+       30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromright {
+    0% { transform: translateX(100%) scale(.7); }
+       30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+/* 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; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+/* grid solo: 100 - single item fallback */
+.ui-grid-solo .ui-block-a { display: block; float: none; }
+/* Lower percentages for older browsers (i.e. IE7) to prevent wrapping. -.5px to fix BB5 wrap issue. */
+/* grid a: 50/50 */
+.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 49.95%; }
+.ui-grid-a > :nth-child(n) { width: 50%; margin-right: -.5px; }
+.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.25%; }
+.ui-grid-b > :nth-child(n) { width: 33.333%; margin-right: -.5px; }
+.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: 24.925%; }
+.ui-grid-c > :nth-child(n) { width: 25%; margin-right: -.5px; }
+.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: 19.925%; }
+.ui-grid-d > :nth-child(n) { width: 20%; }
+.ui-grid-d .ui-block-a { clear: left; }
+/* preset breakpoint to switch to stacked grid styles below 35em (560px) */
+@media all and (max-width: 35em) {
+       .ui-responsive .ui-block-a,
+       .ui-responsive .ui-block-b,
+       .ui-responsive .ui-block-c,
+       .ui-responsive .ui-block-d,
+       .ui-responsive .ui-block-e {
+               width: 100%;
+               float:none;
+       }
+}
+/* fixed page header & footer configuration */
+.ui-header-fixed,
+.ui-footer-fixed {
+       left: 0;
+       right: 0;
+       width: 100%;
+       position: fixed;
+       z-index: 1000;
+}
+.ui-header-fixed {
+       top: -1px;
+       padding-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden {
+       top: 0;
+       padding-top: 0;
+}
+.ui-footer-fixed {
+       bottom: -1px;
+       padding-bottom: 1px;
+}
+.ui-footer-fixed.ui-fixed-hidden {
+       bottom: 0;
+       padding-bottom: 0;
+}
+.ui-header-fullscreen,
+.ui-footer-fullscreen {
+       filter: Alpha(Opacity=90);
+       opacity: .9;
+}
+.ui-page-header-fixed {
+       padding-top: 2.6875em;
+}
+.ui-page-footer-fixed {
+       padding-bottom: 2.6875em;
+}
+.ui-page-header-fullscreen > .ui-content,
+.ui-page-footer-fullscreen > .ui-content {
+       padding: 0;
+}
+.ui-fixed-hidden {
+       position: absolute;
+}
+.ui-page-header-fullscreen .ui-fixed-hidden,
+.ui-page-footer-fullscreen .ui-fixed-hidden {
+       left: -9999px;
+}
+.ui-header-fixed .ui-btn,
+.ui-footer-fixed .ui-btn {
+       z-index: 10;
+}
+/* workarounds for other widgets */
+.ui-android-2x-fixed .ui-li-has-thumb {
+       -webkit-transform: translate3d(0,0,0);
+}
+.ui-navbar { max-width: 100%; }
+.ui-navbar.ui-mini { margin: 0; }
+.ui-navbar ul:before, .ui-navbar ul:after { content: " "; display: table; }
+.ui-navbar ul:after { clear: both; }
+.ui-navbar ul { list-style:none; margin: 0; padding: 0; position: relative; display: block; border: 0; max-width: 100%; overflow: visible; zoom: 1; }
+.ui-navbar li .ui-btn { display: block; text-align: center; margin: 0 -1px 0 0; border-right-width: 0; }
+.ui-navbar li .ui-btn-icon-right .ui-icon { right: 6px; }
+/* add border if not in header/footer (full width) */
+.ui-navbar li:last-child .ui-btn,
+.ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: 0; border-right-width: 1px; }
+.ui-header .ui-navbar li:last-child .ui-btn,
+.ui-footer .ui-navbar li:last-child .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: -1px; border-right-width: 0; }
+.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn { margin-right: -1px; border-right-width: 1px; }
+.ui-header .ui-navbar li .ui-btn,
+.ui-footer .ui-navbar li .ui-btn { border-top-width: 0; border-bottom-width: 0; }
+/* fixing gaps caused by subpixel problem */
+.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn,
+.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn { margin-right: -5px; }
+.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,
+.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,
+.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn,
+.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn { margin-right: -4px; }
+.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,
+.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,
+.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon { right: 8px; }
+.ui-navbar li .ui-btn .ui-btn-inner { padding-top: .7em; padding-bottom: .8em }
+.ui-navbar li .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; }
+.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; }
+.ui-btn { display: table-cell; vertical-align: middle; text-align: center; cursor:pointer; position: relative; margin: 0; padding: 0; }
+.ui-mini { margin-top: .25em; margin-bottom: .25em; }
+.ui-btn-left, .ui-btn-right, .ui-input-clear, .ui-btn-inline,
+.ui-grid-a .ui-btn, .ui-grid-b .ui-btn, .ui-grid-c .ui-btn, .ui-grid-d .ui-btn, .ui-grid-e .ui-btn, .ui-grid-solo .ui-btn { margin-right: 5px; margin-left: 5px; }
+.ui-btn-inner { font-size: 16px; padding: .6em 20px; min-width: 0; align: center; display: block; position: relative; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; zoom: 1; }
+.ui-btn input, .ui-btn button { z-index: 2; }
+.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; vertical-align: middle; }
+.ui-mobile .ui-btn-left, .ui-mobile .ui-btn-right, .ui-btn-left > .ui-btn, .ui-btn-right > .ui-btn { margin: 0; } /* .ui-mobile to increase specificity level */
+.ui-btn-block { display: block; }
+.ui-header > .ui-btn,
+.ui-footer > .ui-btn { display: inline-block; margin: 0; }
+.ui-header .ui-btn-block,
+.ui-footer .ui-btn-block { display: block; }
+.ui-header .ui-btn-inner,
+.ui-footer .ui-btn-inner,
+.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; }
+.ui-fullsize .ui-btn-inner,
+.ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 20px; }
+.ui-btn-icon-notext { width: 24px; height: 24px; }
+.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; }
+.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; float: left; }
+.ui-btn-text { position: relative; z-index: 1; width: 100%; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; }
+div.ui-btn-text { width: auto; }
+.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; }
+.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; }
+.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; }
+.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; }
+.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; }
+.ui-header .ui-btn-icon-left .ui-btn-inner,
+.ui-footer .ui-btn-icon-left .ui-btn-inner,
+.ui-mini.ui-btn-icon-left .ui-btn-inner,
+.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; }
+.ui-header .ui-btn-icon-right .ui-btn-inner,
+.ui-footer .ui-btn-icon-right .ui-btn-inner,
+.ui-mini.ui-btn-icon-right .ui-btn-inner,
+.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; }
+.ui-header .ui-btn-icon-top .ui-btn-inner,
+.ui-footer .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; }
+.ui-mini.ui-btn-icon-top .ui-btn-inner,
+.ui-mini .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; }
+.ui-header .ui-btn-icon-bottom .ui-btn-inner,
+.ui-footer .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; }
+.ui-mini.ui-btn-icon-bottom .ui-btn-inner,
+.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; }
+/* Corner styling inheritance */
+.ui-btn-inner {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+/*btn icon positioning*/
+.ui-btn-icon-notext .ui-icon { display:  table-cell; vertical-align: middle; text-align: center; }
+.ui-btn-icon-left > .ui-btn-inner > .ui-icon, .ui-btn-icon-right > .ui-btn-inner > .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
+.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; }
+.ui-btn-icon-left .ui-icon { left: 10px; }
+.ui-btn-icon-right .ui-icon { right: 10px; }
+.ui-btn-icon-top .ui-icon { top: 10px; }
+.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; }
+.ui-header .ui-btn-icon-left .ui-icon,
+.ui-footer .ui-btn-icon-left .ui-icon,
+.ui-mini.ui-btn-icon-left .ui-icon,
+.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; }
+.ui-header .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-btn-icon-right .ui-icon,
+.ui-mini.ui-btn-icon-right .ui-icon,
+.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; }
+.ui-header .ui-btn-icon-top .ui-icon,
+.ui-footer .ui-btn-icon-top .ui-icon,
+.ui-mini.ui-btn-icon-top .ui-icon,
+.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; }
+.ui-header .ui-btn-icon-bottom .ui-icon,
+.ui-footer .ui-btn-icon-bottom .ui-icon,
+.ui-mini.ui-btn-icon-bottom .ui-icon,
+.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; }
+/*hiding native button,inputs */
+.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: none; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=0); opacity: .1; font-size: 1px; border: none; text-indent: -9999px; }
+/* Fixes IE/WP filter alpha opacity bugs */
+.ui-disabled .ui-btn-hidden { display: none; }
+.ui-disabled { z-index: 1; }
+.ui-field-contain .ui-btn.ui-submit { margin: 0; }
+label.ui-submit { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; }
+@media all and (min-width: 28em){
+       .ui-field-contain label.ui-submit { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-btn.ui-submit { width: 78%; display: inline-block; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+       .ui-hide-label .ui-btn.ui-submit { width: auto; display: block; }
+}
+.ui-collapsible-inset { margin: .5em 0; }
+.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -15px; padding: 0; position: relative; }
+.ui-collapsible-inset .ui-collapsible-heading { margin: 0; }
+.ui-collapsible-heading .ui-btn { text-align: left; margin: 0; border-left-width: 0; border-right-width: 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-btn-inner { padding-left: 12px; padding-right: 12px; }
+.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; }
+.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-right: 40px; }
+.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,
+.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { text-align: center; }
+.ui-collapsible-heading .ui-btn-icon-left.ui-mini .ui-btn-inner { padding-left: 30px; }
+.ui-collapsible-heading .ui-btn-icon-right.ui-mini .ui-btn-inner { padding-right: 30px; }
+.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: 10px 15px;
+       border-left-width: 0;
+       border-right-width: 0;
+       border-top: none;      /* Overrides ui-body-* */
+       background-image: none; /* Overrides ui-body-* */
+}
+.ui-collapsible-inset .ui-collapsible-content { margin: 0; border-right-width: 1px; border-left-width: 1px; }
+.ui-collapsible-content-collapsed { display: none; }
+.ui-collapsible-set > .ui-collapsible.ui-corner-all {
+       -webkit-border-radius: 0;
+       border-radius: 0;
+}
+.ui-collapsible-heading,
+.ui-collapsible-heading > .ui-btn {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+}
+.ui-collapsible-content,
+.ui-collapsible-set .ui-collapsible.ui-last-child {
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-collapsible-themed-content:not(.ui-collapsible-collapsed) > .ui-collapsible-heading {
+       -webkit-border-bottom-right-radius: 0;
+       border-bottom-right-radius: 0;
+       -webkit-border-bottom-left-radius: 0;
+       border-bottom-left-radius: 0;
+}
+.ui-collapsible-set { margin: .5em 0; }
+.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; }
+.ui-collapsible-set .ui-collapsible.ui-first-child { margin-top: 0; }
+.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: .5em 0; zoom: 1; }
+.ui-controlgroup.ui-mini, fieldset.ui-controlgroup.ui-mini { margin: .25em 0; }
+.ui-field-contain .ui-controlgroup, .ui-field-contain fieldset.ui-controlgroup { margin: 0; }
+.ui-bar .ui-controlgroup { margin: 0 5px; }
+.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; }
+.ui-controlgroup-controls label.ui-select,
+.ui-controlgroup-controls label.ui-submit { position: absolute; left: -9999px; }
+.ui-controlgroup li { list-style: none; }
+.ui-controlgroup .ui-btn { margin: 0; }
+.ui-controlgroup .ui-btn-icon-notext { width: auto; height: auto; top: auto; }
+.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 20px; padding: .6em 20px .6em 20px }
+.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner { width: 18px; }
+.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner,
+.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner,
+.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 16px; padding: .55em 11px .5em 11px; }
+.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; right: 50%; margin: -9px -9px 0 0; }
+.ui-controlgroup-horizontal .ui-btn-inner { text-align: center; }
+.ui-controlgroup-horizontal.ui-mini .ui-btn-inner { height: 16px; line-height: 16px; }
+.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls:before,
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after { content: ""; display: table; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after { clear: both; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls { display: inline-block; vertical-align: middle; zoom: 1; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls > .ui-btn, .ui-controlgroup-horizontal .ui-controlgroup-controls li > .ui-btn,
+.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio,
+.ui-controlgroup-horizontal .ui-select { float: left; clear: none; margin: 0; }
+/* On IE7 the floating selects will be displayed as block if .ui-btn-text has width 100% */
+.ui-controlgroup-horizontal .ui-select .ui-btn-text { width: auto; }
+.ui-controlgroup-vertical .ui-btn {    border-bottom-width: 0; }
+.ui-controlgroup-vertical .ui-btn.ui-last-child { border-bottom-width: 1px; }
+.ui-controlgroup-horizontal .ui-btn { border-right-width: 0; }
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {    border-right-width: 1px; }
+.ui-controlgroup .ui-btn-corner-all {
+       -webkit-border-radius: 0;
+       border-radius: 0;
+}
+.ui-controlgroup .ui-controlgroup-controls,
+.ui-controlgroup .ui-radio,
+.ui-controlgroup .ui-checkbox,
+.ui-controlgroup .ui-select,
+.ui-controlgroup li {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-first-child {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-last-child {
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-first-child {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+.ui-controlgroup .ui-shadow:not(.ui-focus) {
+       -moz-box-shadow: none;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+@media all and (min-width: 28em){
+       .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-controlgroup-controls { width: 78%; display: inline-block; }
+       .ui-field-contain .ui-controlgroup .ui-select { width: 100%; display: block; }
+       .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; }
+       .ui-hide-label .ui-controlgroup-controls { width: 100%; }
+}
+.ui-dialog {
+        background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */
+}
+.ui-dialog-contain {
+       width: 92.5%;
+       max-width: 500px;
+       margin: 10% auto 15px auto;
+       padding: 0;
+       position: relative;
+       top: -15px;
+}
+.ui-dialog-contain > .ui-header,
+.ui-dialog-contain > .ui-content,
+.ui-dialog-contain > .ui-footer {
+       display: block;
+       position: relative;
+       width: auto;
+       margin: 0;
+}
+.ui-dialog-contain > .ui-header {
+       border: none;
+       overflow: hidden;
+       z-index: 10;
+       padding: 0;
+}
+.ui-dialog-contain > .ui-content {
+       padding: 15px;
+}
+.ui-dialog-contain > .ui-footer {
+       z-index: 10;
+       padding: 0 15px;
+}
+.ui-popup-open .ui-header-fixed,
+.ui-popup-open .ui-footer-fixed {
+       position: absolute !important;  /* See line #553 of popup.js */
+}
+.ui-popup-screen {
+       background-image: url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 1px;
+       position: absolute;
+       filter: Alpha(Opacity=0);
+       opacity: 0;
+       z-index: 1099;
+}
+.ui-popup-screen.in {
+       opacity: 0.5;
+       filter: Alpha(Opacity=50);
+}
+.ui-popup-screen.out {
+       opacity: 0;
+       filter: Alpha(Opacity=0);
+}
+.ui-popup-container {
+       z-index: 1100;
+       display: inline-block;
+       position: absolute;
+       padding: 0;
+       outline: 0;
+}
+.ui-popup {
+       position: relative;
+}
+.ui-popup.ui-content,
+.ui-popup .ui-content {
+       overflow: visible;
+}
+.ui-popup > p,
+.ui-popup > h1,
+.ui-popup > h2,
+.ui-popup > h3,
+.ui-popup > h4,
+.ui-popup > h5,
+.ui-popup > h6 {
+       margin: .5em 7px;
+}
+.ui-popup > span {
+       display: block;
+       margin: .5em 7px;
+}
+.ui-popup .ui-title {
+       font-size: 16px;
+       font-weight: bold;
+       margin-top: .5em;
+       margin-bottom: .5em;
+}
+.ui-popup-container .ui-content > p,
+.ui-popup-container .ui-content > h1,
+.ui-popup-container .ui-content > h2,
+.ui-popup-container .ui-content > h3,
+.ui-popup-container .ui-content > h4,
+.ui-popup-container .ui-content > h5,
+.ui-popup-container .ui-content > h6 {
+       margin: .5em 0;
+}
+.ui-popup-container .ui-content > span {
+       margin: 0;
+}
+.ui-popup-container .ui-content > p:first-child,
+.ui-popup-container .ui-content > h1:first-child,
+.ui-popup-container .ui-content > h2:first-child,
+.ui-popup-container .ui-content > h3:first-child,
+.ui-popup-container .ui-content > h4:first-child,
+.ui-popup-container .ui-content > h5:first-child,
+.ui-popup-container .ui-content > h6:first-child {
+       margin-top: 0;
+}
+.ui-popup-container .ui-content > p:last-child,
+.ui-popup-container .ui-content > h1:last-child,
+.ui-popup-container .ui-content > h2:last-child,
+.ui-popup-container .ui-content > h3:last-child,
+.ui-popup-container .ui-content > h4:last-child,
+.ui-popup-container .ui-content > h5:last-child,
+.ui-popup-container .ui-content > h6:last-child {
+       margin-bottom: 0;
+}
+.ui-popup > img {
+       width: auto;
+       height: auto;
+       max-width: 100%;
+       max-height: 100%;
+       vertical-align: middle;
+}
+.ui-popup:not(.ui-content) > img:only-child,
+.ui-popup:not(.ui-content) > .ui-btn-left:first-child + img:last-child,
+.ui-popup:not(.ui-content) > .ui-btn-right:first-child + img:last-child {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-popup iframe {
+       vertical-align: middle;
+}
+@media all and (min-width: 28em){
+       .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; }
+.ui-popup-hidden { top: -99999px; left: -9999px; }
+.ui-checkbox, .ui-radio { position: relative; clear: both; margin: 0; z-index: 1; }
+.ui-checkbox .ui-btn, .ui-radio .ui-btn { text-align: left; z-index: 2; }
+.ui-controlgroup .ui-checkbox .ui-btn, .ui-controlgroup .ui-radio .ui-btn { margin: 0; }
+.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; }
+.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; }
+.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; }
+.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; }
+.ui-checkbox .ui-btn-icon-top .ui-btn-inner, .ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; }
+.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; }
+.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; }
+.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; }
+.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; }
+.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; }
+.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; }
+.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-icon,
+.ui-controlgroup-horizontal .ui-radio .ui-icon { display: none; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn-inner,
+.ui-controlgroup-horizontal .ui-radio .ui-btn-inner { padding: .6em 20px; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-mini .ui-btn-inner,
+.ui-controlgroup-horizontal .ui-radio .ui-mini .ui-btn-inner { padding: .55em 11px .5em; }
+/* input, label positioning */
+.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; }
+.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; }
+.ui-field-contain:last-child { border-bottom-width: 0; }
+.ui-field-contain { max-width: 100%; } /* This prevents horizontal scrollbar in IE7 */
+@media all and (min-width: 28em){
+       .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; }
+}
+.ui-select { display: block; position: relative; }
+.ui-select select { position: absolute; left: -9999px; top: -9999px; }
+.ui-select .ui-btn { opacity: 1; }
+.ui-field-contain .ui-select .ui-btn { margin: 0; }
+/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
+.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: none; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; filter: Alpha(Opacity=0); opacity: 0; z-index: 2; }
+.ui-select .ui-disabled { opacity: .3; }
+/* Display none because of issues with IE/WP's filter alpha opacity */
+.ui-select .ui-disabled select { display: none; }
+@-moz-document url-prefix() { .ui-select .ui-btn select { opacity: 0.0001; }}
+.ui-select .ui-btn.ui-select-nativeonly { border-radius: 0; border: 0; }
+.ui-select .ui-btn.ui-select-nativeonly select { opacity: 1; text-indent: 0; display: block; }
+.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner { opacity: 0; }
+.ui-select .ui-btn-icon-right .ui-btn-inner, .ui-select .ui-li-has-count .ui-btn-inner { padding-right: 45px; }
+.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 32px; }
+.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 80px; }
+.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 67px; }
+.ui-select .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; }
+.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 45px; }
+.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 32px; }
+/* 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; overflow: hidden !important;
+/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ }
+.ui-select .ui-btn-text { text-overflow: ellipsis; }
+.ui-selectmenu { padding: 6px; min-width: 160px; }
+.ui-selectmenu .ui-listview { margin: 0; }
+.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; }
+.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 { margin: 0; padding: 0; }
+.ui-selectmenu.ui-popup .ui-header { -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; }
+.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; }
+@media all and (min-width: 28em){
+       .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-select { width: 78%; display: inline-block; }
+       .ui-hide-label .ui-select { width: 100%; }
+}
+/* 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; }
+label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; }
+input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; margin: .5em 0; min-height: 1.4em; line-height: 1.4em; font-size: 16px; display: block; width: 100%; outline: 0; }
+input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; }
+div.ui-input-text input.ui-input-text, div.ui-input-text textarea.ui-input-text,
+.ui-input-search input.ui-input-text { border: none; width: 100%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; }
+.ui-input-search, div.ui-input-text { margin: .5em 0; background-image: none; position: relative; }
+.ui-input-search { padding: 0 30px; }
+div.ui-input-text { padding: 0 .4em; }
+div.ui-input-has-clear { padding: 0 30px 0 .4em; }
+input.ui-input-text.ui-mini, textarea.ui-input-text.ui-mini,
+.ui-input-search.ui-mini, div.ui-input-text.ui-mini { margin: .25em 0; }
+.ui-field-contain input.ui-input-text, .ui-field-contain textarea.ui-input-text,
+.ui-field-contain .ui-input-search, .ui-field-contain div.ui-input-text { margin: 0; }
+textarea.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+input.ui-input-text { -webkit-appearance: none; }
+textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; }
+textarea.ui-mini { height: 45px; }
+.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; }
+.ui-input-search .ui-input-clear, .ui-input-text .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; }
+.ui-mini .ui-input-clear { right: -3px; }
+.ui-input-search .ui-input-clear-hidden, .ui-input-text .ui-input-clear-hidden { display: none; }
+/* Resolves issue #5166: Added to support issue introduced in Firefox 15. We can likely remove this in the future. */
+input::-moz-placeholder, textarea::-moz-placeholder { color: #aaa; }
+/* Resolves issue #5131: Width of textinput depends on its type, for Android 4.1 */
+input[type=number]::-webkit-outer-spin-button { margin: 0; }
+@media all and (min-width: 28em){
+       .ui-field-contain label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 }
+       .ui-field-contain input.ui-input-text,
+       .ui-field-contain textarea.ui-input-text,
+       .ui-field-contain .ui-input-search,
+       .ui-field-contain div.ui-input-text { width: 78%; display: inline-block; }
+       .ui-field-contain .ui-input-search,
+       .ui-field-contain div.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+       .ui-hide-label input.ui-input-text,
+       .ui-hide-label textarea.ui-input-text,
+       .ui-hide-label .ui-input-search,
+       .ui-hide-label div.ui-input-text,
+       .ui-input-search input.ui-input-text,
+       div.ui-input-text input.ui-input-text { width: 100%; }
+}
+.ui-rangeslider {
+       zoom: 1;
+       margin: 0;
+}
+.ui-rangeslider:before,
+.ui-rangeslider:after {
+       content: "";
+       display: table;
+}
+.ui-rangeslider:after {
+       clear: both;
+}
+/* Margin-top/bottom: .5em * 16px/14px to make it equal to ui-rangeslider-sliders margin (input font-size is 14px) */
+.ui-rangeslider input.ui-input-text.ui-slider-input {
+       margin: .57143em 0;
+}
+.ui-rangeslider.ui-mini input.ui-slider-input {
+       margin: .28571em 0;
+}
+.ui-rangeslider input.ui-slider-input.ui-rangeslider-last {
+       float: right;
+}
+.ui-rangeslider .ui-rangeslider-sliders {
+       position: relative;
+       overflow: visible;
+       height: 30px;
+       margin: .5em 68px;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+       margin: .25em 68px;
+}
+.ui-field-contain .ui-rangeslider input.ui-slider-input,
+.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,
+.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+       margin-top: 0;
+       margin-bottom: 0;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track {
+       position: absolute;
+       top: 6px;
+       right: 0;
+       left: 0;
+       margin: 0;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track {
+       top: 8px;
+}
+.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg {
+       display: none;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+       background-color: transparent;
+       background: none;
+       border-width: 0;
+       height: 0;
+}
+/* this makes ie6 and ie7 set height to 0 to fix z-index problem */
+html >/**/body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+       height: 15px;
+       border-width: 1px;
+}
+html >/**/body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child {
+       height: 12px;
+}
+@media all and (min-width: 28em){
+       .ui-field-contain .ui-rangeslider label.ui-slider {
+               float: left;
+       }
+       .ui-field-contain .ui-rangeslider input.ui-slider-input {
+               position: relative;
+               z-index: 1;
+       }
+       .ui-field-contain .ui-rangeslider input.ui-slider-input.ui-rangeslider-first,
+       .ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input.ui-rangeslider-first {
+               margin-right: 17px;
+       }
+       .ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+       .ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+               float: left;
+               width: 78%;
+               margin: 0 -68px;
+       }
+       .ui-field-contain .ui-rangeslider .ui-slider-track,
+       .ui-field-contain .ui-rangeslider.ui-mini .ui-slider-track {
+               right: 68px;
+               left: 68px;
+       }
+       .ui-field-contain.ui-hide-label .ui-rangeslider input.ui-slider-input.ui-rangeslider-first {
+               margin: 0;
+       }
+       .ui-field-contain.ui-hide-label .ui-rangeslider .ui-rangeslider-sliders,
+       .ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+               width: auto;
+               float: none;
+               margin: 0 68px;
+       }
+       .ui-field-contain.ui-hide-label .ui-rangeslider .ui-slider-track,
+       .ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-slider-track {
+               right: 0;
+               left: 0;
+       }
+}
+.ui-listview { margin: 0; }
+ol.ui-listview, ol.ui-listview .ui-li-divider { counter-reset: listnumbering; }
+.ui-content .ui-listview, .ui-panel-inner > .ui-listview { margin: -15px; }
+.ui-collapsible-content > .ui-listview { margin: -10px -15px; }
+.ui-content .ui-listview-inset, .ui-panel-inner .ui-listview-inset { margin: 1em 0; }
+.ui-collapsible-content .ui-listview-inset { margin: .5em 0; }
+.ui-listview, .ui-li { list-style: none; padding: 0; }
+.ui-li, .ui-li.ui-field-contain { display: block; margin: 0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; }
+.ui-li.ui-btn, .ui-li.ui-field-contain, .ui-li-divider, .ui-li-static { margin: 0; }
+.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; }
+.ui-li.ui-last-child, .ui-li.ui-field-contain.ui-last-child { border-bottom-width: 1px; }
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > .ui-li.ui-first-child { border-top-width: 0; }
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > .ui-li.ui-last-child { border-bottom-width: 0; }
+.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-static { background-image: none; }
+.ui-li-divider { padding: .5em 15px; font-size: 14px; font-weight: bold; }
+ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal; counter-increment: listnumbering; content: counter(listnumbering) ". "; }
+ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */
+.ui-listview .ui-li > .ui-btn-text {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-listview > .ui-li.ui-first-child,
+.ui-listview .ui-btn.ui-first-child > .ui-li > .ui-btn-text > .ui-link-inherit {
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+}
+.ui-listview > .ui-li.ui-last-child,
+.ui-listview .ui-btn.ui-last-child > .ui-li > .ui-btn-text > .ui-link-inherit,
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset),
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li.ui-last-child {
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-listview > .ui-li.ui-first-child .ui-li-link-alt {
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+}
+.ui-listview > .ui-li.ui-last-child .ui-li-link-alt {
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+.ui-listview > .ui-li.ui-first-child .ui-li-thumb:not(.ui-li-icon) {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+}
+.ui-listview > .ui-li.ui-last-child .ui-li-thumb:not(.ui-li-icon) {
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; }
+.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px; display: block; }
+.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb  { min-height: 59px; padding-left: 100px; }
+.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; }
+.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count, .ui-li-divider.ui-li-has-count { padding-right: 45px; }
+.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 40px; }
+.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; }
+.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+ol.ui-listview > .ui-li .ui-li-heading { display: inline-block; width: 100%; margin-left: -1.3em; text-indent: 1.3em; vertical-align: middle; }
+ol.ui-listview > .ui-li .ui-li-desc:not(.ui-li-aside) { text-indent: 1.55em; }
+.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; }
+.ui-listview .ui-li-icon { max-height: 16px; max-width: 16px; left: 10px; top: .9em; }
+.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; }
+.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; }
+@media all and (min-width: 480px){
+        .ui-li-aside { width: 45%; }
+}
+.ui-li-divider { cursor: default; }
+.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 53px; }
+.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt.ui-li-has-count { padding-right: 88px; }
+.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 10px; }
+.ui-li-has-count.ui-li-divider .ui-li-count, .ui-li-has-count .ui-link-inherit .ui-li-count { margin-top: -.95em; }
+.ui-li-has-arrow.ui-li-has-count .ui-li-count { right: 40px; }
+.ui-li-has-alt.ui-li-has-count .ui-li-count { right: 53px; }
+.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; }
+.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -13px 0 0 0; border-bottom-width: 1px; z-index: -1;}
+.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;}
+.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; }
+.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
+.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0; }
+.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px; }
+.ui-collapsible-content .ui-listview-filter { margin: -10px -15px 10px -15px; border-bottom: inherit; }
+.ui-listview-filter-inset { margin: -15px -5px; background: transparent; }
+.ui-collapsible-content .ui-listview-filter-inset { margin: -5px; border-bottom-width: 0; }
+.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; }
+.ui-li.ui-screen-hidden{ display:none; }
+/* Odd iPad positioning issue. */
+@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
+    .ui-li .ui-btn-text { overflow:  visible; }
+}
+label.ui-slider {
+       font-size: 16px;
+       line-height: 1.4;
+       font-weight: normal;
+       margin: 0;
+       display: block;
+}
+.ui-field-contain label.ui-slider {
+       margin-bottom: .4em;
+}
+div.ui-slider {
+       height: 30px;
+       margin: .5em 0;
+       zoom: 1;
+}
+div.ui-slider.ui-mini {
+       margin: .25em 0;
+}
+.ui-field-contain div.ui-slider,
+.ui-field-contain div.ui-slider.ui-mini {
+       margin: 0;
+}
+div.ui-slider:before, div.ui-slider:after {
+       content: "";
+       display: table;
+}
+div.ui-slider:after {
+       clear: both;
+}
+/* High level of specificity to override Textinput CSS. */
+input.ui-input-text.ui-slider-input {
+       display: block;
+       float: left;
+       margin: 0;
+       padding: 4px;
+       width: 40px;
+       height: 22px;
+       line-height: 22px;
+       font-size: 14px;
+       border-width: 0;
+       background-image: none;
+       font-weight: bold;
+       text-align: center;
+       vertical-align: text-bottom;
+       outline: 0;
+       -webkit-box-sizing: content-box;
+       -moz-box-sizing: content-box;
+       -ms-box-sizing: content-box;
+       box-sizing: content-box;
+}
+.ui-slider-input::-webkit-outer-spin-button,
+.ui-slider-input::-webkit-inner-spin-button {
+       -webkit-appearance: none;
+       margin: 0;
+}
+.ui-slider-track,
+.ui-slider-switch {
+       position: relative;
+       overflow: visible;
+       height: 15px;
+       margin: 0 15px 0 68px;
+       top: 6px;
+}
+.ui-slider-track.ui-mini {
+       height: 12px;
+       top: 8px;
+}
+.ui-slider-bg {
+       border: none;
+       height: 100%;
+}
+/* High level of specificity to override button margins in grids */
+.ui-slider-track .ui-btn.ui-slider-handle,
+.ui-slider-switch .ui-btn.ui-slider-handle {
+       position: absolute;
+       z-index: 1;
+       top: 50%;
+       width: 28px;
+       height: 28px;
+       margin: -15px 0 0 -15px;
+       outline: 0;
+}
+.ui-slider-track.ui-mini .ui-slider-handle {
+       height: 14px;
+       width: 14px;
+       margin: -8px 0 0 -7px;
+}
+.ui-slider-handle .ui-btn-inner {
+       padding: 0;
+       height: 100%;
+}
+.ui-slider-track.ui-mini .ui-slider-handle .ui-btn-inner {
+       height: 30px;
+       width: 30px;
+       padding: 0;
+       margin: -9px 0 0 -9px;
+       border-top: none;
+}
+select.ui-slider-switch {
+       display: none;
+}
+div.ui-slider-switch {
+       display: inline-block;
+       height: 32px;
+       width: 5.8em;
+       margin: .5em 0;
+       top: 0;
+}
+/* reset the clearfix */
+div.ui-slider-switch:before, div.ui-slider-switch:after {
+       display: none;
+       clear: none;
+}
+div.ui-slider-switch.ui-mini {
+       width: 5em;
+       height: 29px;
+       margin: .25em 0;
+       top: 0;
+}
+.ui-field-contain .ui-slider-switch,
+.ui-field-contain .ui-slider-switch.ui-mini {
+       margin: 0;
+}
+.ui-slider-inneroffset {
+       margin: 0 16px;
+       position: relative;
+       z-index: 1;
+}
+.ui-slider-switch.ui-mini .ui-slider-inneroffset {
+       margin: 0 15px 0 14px;
+}
+.ui-slider-switch .ui-btn.ui-slider-handle {
+       margin: 1px 0 0 -15px;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle {
+       width: 25px;
+       height: 25px;
+       margin: 1px 0 0 -13px;
+       padding: 0;
+}
+.ui-slider-handle-snapping {
+       -webkit-transition: left 70ms linear;
+       -moz-transition: left 70ms linear;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle .ui-btn-inner {
+       height: 30px;
+       width: 30px;
+       padding: 0;
+       margin: 0;
+       border-top: none;
+}
+.ui-slider-switch .ui-slider-label {
+       position: absolute;
+       text-align: center;
+       width: 100%;
+       overflow: hidden;
+       font-size: 16px;
+       top: 0;
+       line-height: 2;
+       min-height: 100%;
+       border-width: 0;
+       white-space: nowrap;
+       cursor: pointer;
+}
+.ui-slider-switch.ui-mini .ui-slider-label {
+       font-size: 14px;
+}
+.ui-slider-switch .ui-slider-label-a {
+       z-index: 1;
+       left: 0;
+       text-indent: -1.5em;
+}
+.ui-slider-switch .ui-slider-label-b {
+       z-index: 0;
+       right: 0;
+       text-indent: 1.5em;
+}
+@media all and (min-width: 28em){
+       .ui-field-contain label.ui-slider {
+               vertical-align: top;
+               display: inline-block;
+               width: 20%;
+               margin: 0 2% 0 0;
+       }
+       .ui-field-contain div.ui-slider {
+               display: inline-block;
+               width: 78%;
+       }
+       .ui-field-contain.ui-hide-label div.ui-slider {
+               display: block;
+               width: auto;
+       }
+       .ui-field-contain div.ui-slider-switch,
+       .ui-field-contain.ui-hide-label div.ui-slider-switch {
+               display: inline-block;
+               width: 5.8em;
+       }
+       .ui-field-contain div.ui-slider-switch.ui-mini {
+               width: 5em;
+       }
+}
+.ui-table {
+   border: 0;
+   border-collapse: collapse;
+   padding: 0;
+   width: 100%;
+}
+.ui-table th,
+.ui-table td {
+  line-height: 1.5em;
+  text-align: left;
+  padding: .4em .5em;
+  vertical-align:top;
+}
+.ui-table th .ui-btn,
+.ui-table td .ui-btn {
+       line-height: normal;
+}
+.ui-table th {
+  font-weight: bold;
+}
+.ui-table caption {
+  text-align:left;
+  margin-bottom:1.4em;
+  opacity: .5;
+}
+/* Add strokes between each row */
+.table-stroke thead th {
+  border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
+  border-bottom: 1px solid rgba(0, 0, 0, .1);
+}
+.table-stroke tbody th,
+.table-stroke tbody td {
+  border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback  */
+  border-bottom: 1px solid rgba(0, 0, 0, .05);
+}
+/* Add alternating row stripes */
+.table-stripe tbody tr:nth-child(odd) td,
+.table-stripe tbody tr:nth-child(odd) th {
+  background-color: #eeeeee; /* non-RGBA fallback  */
+  background-color: rgba(0,0,0,0.04);
+}
+/* Add stroke to the header and last item */
+.table-stripe thead th,
+.table-stripe tbody tr:last-child {
+  border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback  */
+  border-bottom: 1px solid rgba(0, 0, 0, .1);
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-columntoggle-btn {
+       float: right;
+       margin-bottom:.8em;
+}
+/* Remove top/bottom margins around the fieldcontain on check list */
+.ui-table-columntoggle-popup fieldset {
+       margin:0;
+}
+/* Hide all prioritized columns by default */
+@media only all {
+       th.ui-table-priority-6,
+       td.ui-table-priority-6,
+       th.ui-table-priority-5,
+       td.ui-table-priority-5,
+       th.ui-table-priority-4,
+       td.ui-table-priority-4,
+       th.ui-table-priority-3,
+       td.ui-table-priority-3,
+       th.ui-table-priority-2,
+       td.ui-table-priority-2,
+       th.ui-table-priority-1,
+       td.ui-table-priority-1 {
+               display: none;
+       }
+}
+/* Preset breakpoints if ".ui-responsive" class added to table */
+/* Show priority 1 at 320px (20em x 16px) */
+@media screen and (min-width: 20em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-1,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-1 {
+               display: table-cell;
+       }
+}
+/* Show priority 2 at 480px (30em x 16px) */
+@media screen and (min-width: 30em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-2,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-2 {
+               display: table-cell;
+       }
+}
+/* Show priority 3 at 640px (40em x 16px) */
+@media screen and (min-width: 40em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-3,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-3 {
+               display: table-cell;
+       }
+}
+/* Show priority 4 at 800px (50em x 16px) */
+@media screen and (min-width: 50em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-4,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-4 {
+               display: table-cell;
+       }
+}
+/* Show priority 5 at 960px (60em x 16px) */
+@media screen and (min-width: 60em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-5,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-5 {
+               display: table-cell;
+       }
+}
+/* Show priority 6 at 1,120px (70em x 16px) */
+@media screen and (min-width: 70em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-6,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-6 {
+               display: table-cell;
+       }
+}
+/* Unchecked manually: Always hide */
+.ui-table-columntoggle th.ui-table-cell-hidden,
+.ui-table-columntoggle td.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden {
+       display: none;
+}
+/* Checked manually: Always show */
+.ui-table-columntoggle th.ui-table-cell-visible,
+.ui-table-columntoggle td.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible {
+       display: table-cell;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-reflow td .ui-table-cell-label,
+.ui-table-reflow th .ui-table-cell-label {
+       display: none;
+}
+/* Mobile first styles: Begin with the stacked presentation at narrow widths */
+@media only all {
+       /* Hide the table headers */
+       .ui-table-reflow thead td,
+       .ui-table-reflow thead th {
+               display: none;
+       }
+       /* Show the table cells as a block level element */
+       .ui-table-reflow td,
+       .ui-table-reflow th {
+               text-align: left;
+               display: block;
+       }
+       /* Add a fair amount of top margin to visually separate each row when stacked */
+       .ui-table-reflow tbody th {
+               margin-top: 3em;
+       }
+       /* Make the label elements a percentage width */
+       .ui-table-reflow td .ui-table-cell-label,
+       .ui-table-reflow th .ui-table-cell-label {
+               display: block;
+               padding: .4em;
+               min-width: 30%;
+               display: inline-block;
+               margin: -.4em 1em -.4em -.4em;
+       }
+       /* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */
+       .ui-table-reflow th .ui-table-cell-label-top,
+       .ui-table-reflow td .ui-table-cell-label-top {
+               display: block;
+               padding: .4em 0;
+               margin: .4em 0;
+               text-transform: uppercase;
+               font-size: .9em;
+               font-weight: normal;
+       }
+}
+/* Breakpoint to show as a standard table at 560px (35em x 16px) or wider */
+@media ( min-width: 35em ) {
+       /* Fixes table rendering when switching between breakpoints in Safari <= 5. See https://github.com/jquery/jquery-mobile/issues/5380 */
+       .ui-table-reflow.ui-responsive {
+               display: table-row-group;
+       }
+       /* Show the table header rows */
+       .ui-table-reflow.ui-responsive td,
+       .ui-table-reflow.ui-responsive th,
+       .ui-table-reflow.ui-responsive tbody th,
+       .ui-table-reflow.ui-responsive tbody td,
+       .ui-table-reflow.ui-responsive thead td,
+       .ui-table-reflow.ui-responsive thead th {
+               display: table-cell;
+               margin: 0;
+       }
+       /* Hide the labels in each cell */
+       .ui-table-reflow.ui-responsive td .ui-table-cell-label,
+       .ui-table-reflow.ui-responsive th .ui-table-cell-label {
+               display: none;
+       }
+}
+/* Hack to make IE9 and WP7.5 treat cells like block level elements, scoped to ui-responsive class */
+/* Applied in a max-width media query up to the table layout breakpoint so we don't need to negate this*/
+@media ( max-width: 35em ) {
+       .ui-table-reflow.ui-responsive td,
+       .ui-table-reflow.ui-responsive th {
+               width: 100%;
+               -webkit-box-sizing: border-box;
+               -moz-box-sizing: border-box;
+               box-sizing: border-box;
+               float: left;
+               clear: left;
+       }
+}
+/* panel */
+.ui-panel {
+       width: 17em;
+       min-height: 100%;
+       max-height: none;
+       border-width: 0;
+       position: absolute;
+       top: 0;
+       display: block;
+}
+.ui-panel-closed {
+       width: 0;
+       max-height: 100%;
+       overflow: hidden;
+       visibility: hidden;
+}
+.ui-panel-fixed {
+       position: fixed;
+       bottom: -1px; /* fixes gap on Chrome for Android */
+       padding-bottom: 1px;
+}
+.ui-panel-display-overlay {
+       z-index: 1001; /* fixed toolbars have z-index 1000 */
+}
+.ui-panel-display-reveal {
+       z-index: 0;
+}
+.ui-panel-display-push {
+       z-index: 999;
+}
+.ui-panel-inner {
+       padding: 15px;
+}
+/* content-wrap */
+.ui-panel-content-wrap {
+       position: relative;
+       left: 0;
+       min-height: inherit;
+       border: none;
+       z-index: 999;
+}
+.ui-panel-content-wrap-display-overlay,
+.ui-panel-animate.ui-panel-content-wrap > .ui-header, /* ios4 fix */
+.ui-panel-content-wrap-closed {
+       position: static;
+}
+/* dismiss */
+.ui-panel-dismiss {
+       position: absolute;
+       top: 0;
+       left:0;
+       height: 100%;
+       width: 100%;
+       z-index: 1002;
+       display: none;
+}
+.ui-panel-dismiss-open {
+       display: block;
+}
+/* animate class is added to panel, wrapper and fixed toolbars */
+.ui-panel-animate {
+       -webkit-transition: -webkit-transform 350ms ease;
+       -moz-transition: -moz-transform 350ms ease;
+       transition: transform 350ms ease;
+}
+/* hardware acceleration for smoother transitions on WebKit browsers */
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal),
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) > div,
+.ui-panel-animate.ui-panel-closed.ui-panel-display-reveal > div,
+.ui-panel-animate.ui-panel-content-wrap,
+.ui-panel-animate.ui-panel-content-fixed-toolbar {
+       -webkit-backface-visibility: hidden;
+       -webkit-transform: translate3d(0,0,0);
+}
+/* positioning: panel */
+/* panel left  */
+.ui-panel-position-left {
+       left: -17em;
+}
+/* animated: panel left (for overlay and push) */
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-push {
+       left: 0;
+       -webkit-transform: translate3d(-17em,0,0);
+       -moz-transform: translate3d(-17em,0,0);
+       transform: translate3d(-17em,0,0);
+}
+/* panel left open */
+.ui-panel-position-left.ui-panel-display-reveal, /* negate "panel left" for reveal */
+.ui-panel-position-left.ui-panel-open {
+       left: 0;
+}
+/* animated: panel left open (for overlay and push) */
+.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-push {
+       -webkit-transform: translate3d(0,0,0);
+       transform: translate3d(0,0,0);
+       -moz-transform: none;
+}
+/* panel right */
+.ui-panel-position-right {
+       right: -17em;
+}
+/* animated: panel right (for overlay and push) */
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-push {
+       right: 0;
+       -webkit-transform: translate3d(17em,0,0);
+       -moz-transform: translate3d(17em,0,0);
+       transform: translate3d(17em,0,0);
+}
+/* panel right open */
+.ui-panel-position-right.ui-panel-display-reveal,  /* negate "panel right" for reveal */
+.ui-panel-position-right.ui-panel-open {
+       right: 0;
+}
+/* animated: panel right open (for overlay and push) */
+.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-push {
+       -webkit-transform: translate3d(0,0,0);
+       transform: translate3d(0,0,0);
+       -moz-transform: none;
+}
+/* positioning: content wrap, fixed toolbars and dismiss */
+/* panel left open */
+.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open,
+.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open,
+.ui-panel-dismiss-position-left.ui-panel-dismiss-open {
+       left: 17em;
+       right: -17em;
+}
+/* animated: panel left open (for reveal and push) */
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,
+.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,
+.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push {
+       left: 0;
+       right: 0;
+       -webkit-transform: translate3d(17em,0,0);
+       -moz-transform: translate3d(17em,0,0);
+       transform: translate3d(17em,0,0);
+}
+/* panel right open */
+.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open,
+.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open,
+.ui-panel-dismiss-position-right.ui-panel-dismiss-open {
+       left: -17em;
+       right: 17em;
+}
+/* animated: panel right open (for reveal and push) */
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,
+.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,
+.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push {
+       left: 0;
+       right: 0;
+       -webkit-transform: translate3d(-17em,0,0);
+       -moz-transform: translate3d(-17em,0,0);
+       transform: translate3d(-17em,0,0);
+}
+/* negate "panel left/right open" for overlay */
+.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-overlay,
+.ui-panel-content-wrap-open.ui-panel-content-wrap-display-overlay {
+       left: 0;
+}
+/* always disable overflow-x to prevent zoom issue on Android */
+.ui-page-active.ui-page-panel {
+       overflow-x: hidden;
+}
+/* shadows and borders */
+.ui-panel-display-reveal {
+       -webkit-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+       box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-reveal {
+       -webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+       box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-overlay {
+       -webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+       box-shadow: 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-overlay {
+       -webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+       box-shadow: -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-push.ui-panel-open.ui-panel-position-left {
+       border-right-width: 1px;
+       margin-right: -1px;
+}
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push {
+       margin-left: 1px;
+}
+.ui-panel-display-push.ui-panel-open.ui-panel-position-right {
+       border-left-width: 1px;
+       margin-left: -1px;
+}
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push {
+       margin-right: 1px;
+}
+/* wrap on wide viewports once open */
+@media (min-width:55em){
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-left,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-left,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-left,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-left {
+               margin-right: 17em;
+       }
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-right,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-right,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right {
+               margin-left: 17em;
+       }
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal {
+               width: auto;
+       }
+       .ui-responsive-panel .ui-panel-dismiss-display-push {
+               display: none;
+       }
+}
diff --git a/ism/data/remote-input/jquery.mobile-1.3.1.min.css b/ism/data/remote-input/jquery.mobile-1.3.1.min.css
new file mode 100644 (file)
index 0000000..7c40ca3
--- /dev/null
@@ -0,0 +1,4 @@
+/*! jQuery Mobile 1.3.1 | Git HEAD hash: 74b4bec <> 2013-04-10T21:57:23Z | (c) 2010, 2013 jQuery Foundation, Inc. | jquery.org/license */
+
+.ui-bar-a{border:1px solid #333;background:#111;color:#fff;font-weight:700;text-shadow:0 -1px 0 #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#111));background-image:-webkit-linear-gradient(#3c3c3c,#111);background-image:-moz-linear-gradient(#3c3c3c,#111);background-image:-ms-linear-gradient(#3c3c3c,#111);background-image:-o-linear-gradient(#3c3c3c,#111);background-image:linear-gradient(#3c3c3c,#111)}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-a a.ui-link:visited{color:#2489ce}.ui-bar-a a.ui-link:hover{color:#2489ce}.ui-bar-a a.ui-link:active{color:#2489ce}.ui-body-a,.ui-overlay-a{border:1px solid #444;background:#222;color:#fff;text-shadow:0 1px 0 #111;font-weight:400;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#222));background-image:-webkit-linear-gradient(#444,#222);background-image:-moz-linear-gradient(#444,#222);background-image:-ms-linear-gradient(#444,#222);background-image:-o-linear-gradient(#444,#222);background-image:linear-gradient(#444,#222)}.ui-overlay-a{background-image:none;border-width:0}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:700}.ui-body-a .ui-link:visited{color:#2489ce}.ui-body-a .ui-link:hover{color:#2489ce}.ui-body-a .ui-link:active{color:#2489ce}.ui-btn-up-a{border:1px solid #111;background:#333;font-weight:700;color:#fff;text-shadow:0 1px 0 #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#2d2d2d));background-image:-webkit-linear-gradient(#444,#2d2d2d);background-image:-moz-linear-gradient(#444,#2d2d2d);background-image:-ms-linear-gradient(#444,#2d2d2d);background-image:-o-linear-gradient(#444,#2d2d2d);background-image:linear-gradient(#444,#2d2d2d)}.ui-btn-up-a:visited,.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:700;color:#fff;text-shadow:0 1px 0 #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#383838));background-image:-webkit-linear-gradient(#555,#383838);background-image:-moz-linear-gradient(#555,#383838);background-image:-ms-linear-gradient(#555,#383838);background-image:-o-linear-gradient(#555,#383838);background-image:linear-gradient(#555,#383838)}.ui-btn-hover-a:visited,.ui-btn-hover-a:hover,.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#222;font-weight:700;color:#fff;text-shadow:0 1px 0 #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#202020),to(#2c2c2c));background-image:-webkit-linear-gradient(#202020,#2c2c2c);background-image:-moz-linear-gradient(#202020,#2c2c2c);background-image:-ms-linear-gradient(#202020,#2c2c2c);background-image:-o-linear-gradient(#202020,#2c2c2c);background-image:linear-gradient(#202020,#2c2c2c)}.ui-btn-down-a:visited,.ui-btn-down-a:hover,.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:700;text-shadow:0 1px 0 #3e6790;background-image:-webkit-gradient(linear,left top,left bottom,from(#6facd5),to(#497bae));background-image:-webkit-linear-gradient(#6facd5,#497bae);background-image:-moz-linear-gradient(#6facd5,#497bae);background-image:-ms-linear-gradient(#6facd5,#497bae);background-image:-o-linear-gradient(#6facd5,#497bae);background-image:linear-gradient(#6facd5,#497bae)}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b a.ui-link{color:#ddf0f8;font-weight:700}.ui-bar-b a.ui-link:visited{color:#ddf0f8}.ui-bar-b a.ui-link:hover{color:#ddf0f8}.ui-bar-b a.ui-link:active{color:#ddf0f8}.ui-body-b,.ui-overlay-b{border:1px solid #999;background:#f3f3f3;color:#222;text-shadow:0 1px 0 #fff;font-weight:400;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#ccc));background-image:-webkit-linear-gradient(#ddd,#ccc);background-image:-moz-linear-gradient(#ddd,#ccc);background-image:-ms-linear-gradient(#ddd,#ccc);background-image:-o-linear-gradient(#ddd,#ccc);background-image:linear-gradient(#ddd,#ccc)}.ui-overlay-b{background-image:none;border-width:0}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:700}.ui-body-b .ui-link:visited{color:#2489ce}.ui-body-b .ui-link:hover{color:#2489ce}.ui-body-b .ui-link:active{color:#2489ce}.ui-btn-up-b{border:1px solid #044062;background:#396b9e;font-weight:700;color:#fff;text-shadow:0 1px 0 #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#5f9cc5),to(#396b9e));background-image:-webkit-linear-gradient(#5f9cc5,#396b9e);background-image:-moz-linear-gradient(#5f9cc5,#396b9e);background-image:-ms-linear-gradient(#5f9cc5,#396b9e);background-image:-o-linear-gradient(#5f9cc5,#396b9e);background-image:linear-gradient(#5f9cc5,#396b9e)}.ui-btn-up-b:visited,.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00415e;background:#4b88b6;font-weight:700;color:#fff;text-shadow:0 1px 0 #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#6facd5),to(#4272a4));background-image:-webkit-linear-gradient(#6facd5,#4272a4);background-image:-moz-linear-gradient(#6facd5,#4272a4);background-image:-ms-linear-gradient(#6facd5,#4272a4);background-image:-o-linear-gradient(#6facd5,#4272a4);background-image:linear-gradient(#6facd5,#4272a4)}.ui-btn-hover-b:visited,.ui-btn-hover-b:hover,.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:700;color:#fff;text-shadow:0 1px 0 #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#295b8e),to(#3e79b5));background-image:-webkit-linear-gradient(#295b8e,#3e79b5);background-image:-moz-linear-gradient(#295b8e,#3e79b5);background-image:-ms-linear-gradient(#295b8e,#3e79b5);background-image:-o-linear-gradient(#295b8e,#3e79b5);background-image:linear-gradient(#295b8e,#3e79b5)}.ui-btn-down-b:visited,.ui-btn-down-b:hover,.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-c{border:1px solid #b3b3b3;background:#eee;color:#3e3e3e;font-weight:700;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#ddd));background-image:-webkit-linear-gradient(#f0f0f0,#ddd);background-image:-moz-linear-gradient(#f0f0f0,#ddd);background-image:-ms-linear-gradient(#f0f0f0,#ddd);background-image:-o-linear-gradient(#f0f0f0,#ddd);background-image:linear-gradient(#f0f0f0,#ddd)}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-c a.ui-link:visited{color:#2489ce}.ui-bar-c a.ui-link:hover{color:#2489ce}.ui-bar-c a.ui-link:active{color:#2489ce}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c,.ui-overlay-c{border:1px solid #aaa;color:#333;text-shadow:0 1px 0 #fff;background:#f9f9f9;background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#eee));background-image:-webkit-linear-gradient(#f9f9f9,#eee);background-image:-moz-linear-gradient(#f9f9f9,#eee);background-image:-ms-linear-gradient(#f9f9f9,#eee);background-image:-o-linear-gradient(#f9f9f9,#eee);background-image:linear-gradient(#f9f9f9,#eee)}.ui-overlay-c{background-image:none;border-width:0}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:700}.ui-body-c .ui-link:visited{color:#2489ce}.ui-body-c .ui-link:hover{color:#2489ce}.ui-body-c .ui-link:active{color:#2489ce}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:700;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f1f1f1));background-image:-webkit-linear-gradient(#fff,#f1f1f1);background-image:-moz-linear-gradient(#fff,#f1f1f1);background-image:-ms-linear-gradient(#fff,#f1f1f1);background-image:-o-linear-gradient(#fff,#f1f1f1);background-image:linear-gradient(#fff,#f1f1f1)}.ui-btn-up-c:visited,.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dfdfdf;font-weight:700;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f6f6f6),to(#e0e0e0));background-image:-webkit-linear-gradient(#f6f6f6,#e0e0e0);background-image:-moz-linear-gradient(#f6f6f6,#e0e0e0);background-image:-ms-linear-gradient(#f6f6f6,#e0e0e0);background-image:-o-linear-gradient(#f6f6f6,#e0e0e0);background-image:linear-gradient(#f6f6f6,#e0e0e0)}.ui-btn-hover-c:visited,.ui-btn-hover-c:hover,.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #bbb;background:#d6d6d6;font-weight:700;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#d0d0d0),to(#dfdfdf));background-image:-webkit-linear-gradient(#d0d0d0,#dfdfdf);background-image:-moz-linear-gradient(#d0d0d0,#dfdfdf);background-image:-ms-linear-gradient(#d0d0d0,#dfdfdf);background-image:-o-linear-gradient(#d0d0d0,#dfdfdf);background-image:linear-gradient(#d0d0d0,#dfdfdf)}.ui-btn-down-c:visited,.ui-btn-down-c:hover,.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-d{border:1px solid #bbb;background:#bbb;color:#333;font-weight:700;text-shadow:0 1px 0 #eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#bbb));background-image:-webkit-linear-gradient(#ddd,#bbb);background-image:-moz-linear-gradient(#ddd,#bbb);background-image:-ms-linear-gradient(#ddd,#bbb);background-image:-o-linear-gradient(#ddd,#bbb);background-image:linear-gradient(#ddd,#bbb)}.ui-bar-d,.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d a.ui-link{color:#2489ce;font-weight:700}.ui-bar-d a.ui-link:visited{color:#2489ce}.ui-bar-d a.ui-link:hover{color:#2489ce}.ui-bar-d a.ui-link:active{color:#2489ce}.ui-body-d,.ui-overlay-d{border:1px solid #bbb;color:#333;text-shadow:0 1px 0 #fff;background:#fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.ui-overlay-d{background-image:none;border-width:0}.ui-body-d,.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Helvetica,Arial,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:700}.ui-body-d .ui-link:visited{color:#2489ce}.ui-body-d .ui-link:hover{color:#2489ce}.ui-body-d .ui-link:active{color:#2489ce}.ui-btn-up-d{border:1px solid #bbb;background:#fff;font-weight:700;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f6f6f6));background-image:-webkit-linear-gradient(#fafafa,#f6f6f6);background-image:-moz-linear-gradient(#fafafa,#f6f6f6);background-image:-ms-linear-gradient(#fafafa,#f6f6f6);background-image:-o-linear-gradient(#fafafa,#f6f6f6);background-image:linear-gradient(#fafafa,#f6f6f6)}.ui-btn-up-d:visited,.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:700;color:#333;cursor:pointer;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fff));background-image:-webkit-linear-gradient(#eee,#fff);background-image:-moz-linear-gradient(#eee,#fff);background-image:-ms-linear-gradient(#eee,#fff);background-image:-o-linear-gradient(#eee,#fff);background-image:linear-gradient(#eee,#fff)}.ui-btn-hover-d:visited,.ui-btn-hover-d:hover,.ui-btn-hover-d a.ui-link-inherit{color:#333}.ui-btn-down-d{border:1px solid #aaa;background:#eee;font-weight:700;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#e5e5e5),to(#f2f2f2));background-image:-webkit-linear-gradient(#e5e5e5,#f2f2f2);background-image:-moz-linear-gradient(#e5e5e5,#f2f2f2);background-image:-ms-linear-gradient(#e5e5e5,#f2f2f2);background-image:-o-linear-gradient(#e5e5e5,#f2f2f2);background-image:linear-gradient(#e5e5e5,#f2f2f2)}.ui-btn-down-d:visited,.ui-btn-down-d:hover,.ui-btn-down-d a.ui-link-inherit{color:#333}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;font-weight:700;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fbef7e));background-image:-webkit-linear-gradient(#fceda7,#fbef7e);background-image:-moz-linear-gradient(#fceda7,#fbef7e);background-image:-ms-linear-gradient(#fceda7,#fbef7e);background-image:-o-linear-gradient(#fceda7,#fbef7e);background-image:linear-gradient(#fceda7,#fbef7e)}.ui-bar-e,.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-e button{font-family:Helvetica,Arial,sans-serif}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e a.ui-link{color:#2489ce;font-weight:700}.ui-bar-e a.ui-link:visited{color:#2489ce}.ui-bar-e a.ui-link:hover{color:#2489ce}.ui-bar-e a.ui-link:active{color:#2489ce}.ui-body-e,.ui-overlay-e{border:1px solid #f7c942;color:#222;text-shadow:0 1px 0 #fff;background:#fff9df;background-image:-webkit-gradient(linear,left top,left bottom,from(#fffadf),to(#fff3a5));background-image:-webkit-linear-gradient(#fffadf,#fff3a5);background-image:-moz-linear-gradient(#fffadf,#fff3a5);background-image:-ms-linear-gradient(#fffadf,#fff3a5);background-image:-o-linear-gradient(#fffadf,#fff3a5);background-image:linear-gradient(#fffadf,#fff3a5)}.ui-overlay-e{background-image:none;border-width:0}.ui-body-e,.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif}.ui-body-e .ui-link-inherit{color:#222}.ui-body-e .ui-link{color:#2489ce;font-weight:700}.ui-body-e .ui-link:visited{color:#2489ce}.ui-body-e .ui-link:hover{color:#2489ce}.ui-body-e .ui-link:active{color:#2489ce}.ui-btn-up-e{border:1px solid #f4c63f;background:#fadb4e;font-weight:700;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#ffefaa),to(#ffe155));background-image:-webkit-linear-gradient(#ffefaa,#ffe155);background-image:-moz-linear-gradient(#ffefaa,#ffe155);background-image:-ms-linear-gradient(#ffefaa,#ffe155);background-image:-o-linear-gradient(#ffefaa,#ffe155);background-image:linear-gradient(#ffefaa,#ffe155)}.ui-btn-up-e:visited,.ui-btn-up-e a.ui-link-inherit{color:#222}.ui-btn-hover-e{border:1px solid #f2c43d;background:#fbe26f;font-weight:700;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff5ba),to(#fbdd52));background-image:-webkit-linear-gradient(#fff5ba,#fbdd52);background-image:-moz-linear-gradient(#fff5ba,#fbdd52);background-image:-ms-linear-gradient(#fff5ba,#fbdd52);background-image:-o-linear-gradient(#fff5ba,#fbdd52);background-image:linear-gradient(#fff5ba,#fbdd52)}.ui-btn-hover-e:visited,.ui-btn-hover-e:hover,.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f2c43d;background:#fceda7;font-weight:700;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f8d94c),to(#fadb4e));background-image:-webkit-linear-gradient(#f8d94c,#fadb4e);background-image:-moz-linear-gradient(#f8d94c,#fadb4e);background-image:-ms-linear-gradient(#f8d94c,#fadb4e);background-image:-o-linear-gradient(#f8d94c,#fadb4e);background-image:linear-gradient(#f8d94c,#fadb4e)}.ui-btn-down-e:visited,.ui-btn-down-e:hover,.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{/* border:1px solid #2373a5; *//* background:#5393c5; */font-weight:700;color:#fff;cursor:pointer;/* text-shadow:0 1px 0 #3373a5; */text-decoration:none;/* background-image:-webkit-gradient(linear,left top,left bottom,from(#5393c5),to(#6facd5)); *//* background-image:-webkit-linear-gradient(#5393c5,#6facd5); */background-image:-moz-linear-gradient(#5393c5,#6facd5);background-image:-ms-linear-gradient(#5393c5,#6facd5);background-image:-o-linear-gradient(#5393c5,#6facd5);/* background-image:linear-gradient(#5393c5,#6facd5); */font-family:Helvetica,Arial,sans-serif}.ui-btn-active:visited,.ui-btn-active:hover,.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:0px solid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-all{-webkit-border-radius:.6em;border-radius:.6em}.ui-br{border-color:#828282;border-color:rgba(130,130,130,.3);border-style:solid}.ui-disabled{filter:Alpha(Opacity=30);opacity:.3;zoom:1}.ui-disabled,.ui-disabled a{cursor:default!important;pointer-events:none}.ui-icon,.ui-icon-searchfield:after{background-image:url(icons-18-white.png);background-repeat:no-repeat;-webkit-border-radius:9px;border-radius:9px}.ui-icon-alt .ui-icon,.ui-icon-alt .ui-icon-searchfield:after{background-color:#fff;background-color:rgba(255,255,255,.3);background-image:url(icons-18-black.png);background-repeat:no-repeat}.ui-icon-nodisc .ui-icon,.ui-icon-nodisc .ui-icon-searchfield:after,.ui-icon-nodisc .ui-icon-alt .ui-icon,.ui-icon-nodisc .ui-icon-alt .ui-icon-searchfield:after{background-color:transparent}.ui-icon-plus{background-position:-1px -1px}.ui-icon-minus{background-position:-37px -1px}.ui-icon-delete{background-position:-73px -1px}.ui-icon-arrow-r{background-position:-108px -1px}.ui-icon-arrow-l{background-position:-144px -1px}.ui-icon-arrow-u{background-position:-180px -1px}.ui-icon-arrow-d{background-position:-216px -1px}.ui-icon-check{background-position:-252px -1px}.ui-icon-gear{background-position:-288px -1px}.ui-icon-refresh{background-position:-323px -1px}.ui-icon-forward{background-position:-360px -1px}.ui-icon-back{background-position:-396px -1px}.ui-icon-grid{background-position:-432px -1px}.ui-icon-star{background-position:-467px -1px}.ui-icon-alert{background-position:-503px -1px}.ui-icon-info{background-position:-539px -1px}.ui-icon-home{background-position:-575px -1px}.ui-icon-search,.ui-icon-searchfield:after{background-position:-611px -1px}.ui-icon-checkbox-on{background-position:-647px -1px}.ui-icon-checkbox-off{background-position:-683px -1px}.ui-icon-radio-on{background-position:-718px -1px}.ui-icon-radio-off{background-position:-754px -1px}.ui-icon-bars{background-position:-788px -1px}.ui-icon-edit{background-position:-824px -1px}@media only screen and (-webkit-min-device-pixel-ratio:1.3),only screen and (min--moz-device-pixel-ratio:1.3),only screen and (min-resolution:200dpi){.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-bars,.ui-icon-edit,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-image:url(icons-36-white.png);-moz-background-size:864px 18px;-o-background-size:864px 18px;-webkit-background-size:864px 18px;background-size:864px 18px}.ui-icon-alt .ui-icon{background-image:url(icons-36-black.png)}.ui-icon-plus{background-position:0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.ui-icon-arrow-r{background-position:-108px 50%}.ui-icon-arrow-l{background-position:-144px 50%}.ui-icon-arrow-u{background-position:-179px 50%}.ui-icon-arrow-d{background-position:-215px 50%}.ui-icon-check{background-position:-252px 50%}.ui-icon-gear{background-position:-287px 50%}.ui-icon-refresh{background-position:-323px 50%}.ui-icon-forward{background-position:-360px 50%}.ui-icon-back{background-position:-395px 50%}.ui-icon-grid{background-position:-431px 50%}.ui-icon-star{background-position:-467px 50%}.ui-icon-alert{background-position:-503px 50%}.ui-icon-info{background-position:-538px 50%}.ui-icon-home{background-position:-575px 50%}.ui-icon-search,.ui-icon-searchfield:after{background-position:-611px 50%}.ui-icon-checkbox-on{background-position:-647px 50%}.ui-icon-checkbox-off{background-position:-683px 50%}.ui-icon-radio-on{background-position:-718px 50%}.ui-icon-radio-off{background-position:-754px 50%}.ui-icon-bars{background-position:-788px 50%}.ui-icon-edit{background-position:-824px 50%}}.ui-checkbox .ui-icon,.ui-selectmenu-list .ui-icon{-webkit-border-radius:3px;border-radius:3px}.ui-icon-checkbox-off,.ui-icon-radio-off{background-color:transparent}.ui-checkbox-on .ui-icon,.ui-radio-on .ui-icon{background-color:#4596ce}.ui-icon-loading{background:url(ajax-loader.gif);background-size:46px 46px}.ui-btn-corner-all{-webkit-border-radius:1em;border-radius:1em}.ui-corner-all,.ui-btn-corner-all{-webkit-background-clip:padding;background-clip:padding-box}.ui-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5;position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 3px rgba(0,0,0,.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-btn:focus,.ui-link-inherit:focus{outline:0}.ui-btn.ui-focus{z-index:1}.ui-focus,.ui-btn:focus{-moz-box-shadow:inset 0 0 3px #387bbe,0 0 9px #387bbe;-webkit-box-shadow:inset 0 0 3px #387bbe,0 0 9px #387bbe;box-shadow:inset 0 0 3px #387bbe,0 0 9px #387bbe}.ui-input-text.ui-focus,.ui-input-search.ui-focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus,.ui-mobile-nosupport-boxshadow .ui-btn:focus,.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus{outline-width:1px;outline-style:auto}.ui-mobile,.ui-mobile body{height:99.9%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border-width:0}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:100%;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}@media screen and (orientation:portrait){.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile .ui-page{min-height:300px}}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;left:50%;border:0}.ui-loader-default{background:0;filter:Alpha(Opacity=18);opacity:.18;width:46px;height:46px;margin-left:-23px;margin-top:-23px}.ui-loader-verbose{width:200px;filter:Alpha(Opacity=88);opacity:.88;box-shadow:0 1px 1px -1px #fff;height:auto;margin-left:-110px;margin-top:-43px;padding:10px}.ui-loader-default h1{font-size:0;width:0;height:0;overflow:hidden}.ui-loader-verbose h1{font-size:16px;margin:0;text-align:center}.ui-loader .ui-icon{background-color:#000;display:block;margin:0;width:44px;height:44px;padding:1px;-webkit-border-radius:36px;border-radius:36px}.ui-loader-verbose .ui-icon{margin:0 auto 10px;filter:Alpha(Opacity=75);opacity:.75}.ui-loader-textonly{padding:15px;margin-left:-115px}.ui-loader-textonly .ui-icon{display:none}.ui-loader-fakefix{position:absolute}.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{position:relative;zoom:1}.ui-mobile .ui-header,.ui-mobile .ui-footer{border-left-width:0;border-right-width:0}.ui-header .ui-btn-left,.ui-header .ui-btn-right,.ui-footer .ui-btn-left,.ui-footer .ui-btn-right,.ui-header-fixed.ui-fixed-hidden .ui-btn-left,.ui-header-fixed.ui-fixed-hidden .ui-btn-right{position:absolute;top:3px}.ui-header-fixed .ui-btn-left,.ui-header-fixed .ui-btn-right{top:4px}.ui-header .ui-btn-left,.ui-footer .ui-btn-left{left:5px}.ui-header .ui-btn-right,.ui-footer .ui-btn-right{right:5px}.ui-footer>.ui-btn-icon-notext,.ui-header>.ui-btn-icon-notext,.ui-header-fixed.ui-fixed-hidden>.ui-btn-icon-notext{top:6px}.ui-header-fixed>.ui-btn-icon-notext{top:7px}.ui-header .ui-title,.ui-footer .ui-title{min-height:1.1em;text-align:center;font-size:16px;display:block;margin: 0.2em 1% 0.2em !important;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:.6em 15px .8em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:5px 15px 5px;}.ui-corner-all>.ui-header:first-child,.ui-corner-all>.ui-content:first-child,.ui-corner-all>.ui-footer:first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-corner-all>.ui-header:last-child,.ui-corner-all>.ui-content:last-child,.ui-corner-all>.ui-footer:last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-icon{width:18px;height:18px}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label.ui-input-text,.ui-hide-label label.ui-select,.ui-hide-label label.ui-slider,.ui-hide-label label.ui-submit,.ui-hide-label .ui-controlgroup-label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-page-pre-in{opacity:0}.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.out{-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225ms;animation-timing-function:ease-in;animation-duration:225ms}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@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}}@keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{opacity:0;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout;animation-duration:125ms;animation-name:fadeout}.fade.in{opacity:1;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein;animation-duration:225ms;animation-name:fadein}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-webkit-animation-name:popin;-webkit-animation-duration:350ms;-moz-transform:scale(1);-moz-animation-name:popin;-moz-animation-duration:350ms;transform:scale(1);animation-name:popin;animation-duration:350ms;opacity:1}.pop.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms;opacity:0}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-webkit-animation-name:popout;-moz-transform:scale(.8);-moz-animation-name:popout;transform:scale(.8);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}}@keyframes popin{from{transform:scale(.8);opacity:0}to{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}}@keyframes popout{from{transform:scale(1);opacity:1}to{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:translateX(100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromright{from{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translate3d(-100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromleft{from{-moz-transform:translateX(-100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromleft{from{transform:translateX(-100%)}to{transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes slideouttoleft{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(-100%)}}@keyframes slideouttoleft{from{transform:translateX(0)}to{transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes slideouttoright{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(100%)}}@keyframes slideouttoright{from{transform:translateX(0)}to{transform:translateX(100%)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.slide.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;transform:translateX(-100%);animation-name:slideouttoleft}.slide.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromright;-moz-transform:translateX(0);-moz-animation-name:slideinfromright;transform:translateX(0);animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;transform:translateX(100%);animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromleft;-moz-transform:translateX(0);-moz-animation-name:slideinfromleft;transform:translateX(0);animation-name:slideinfromleft}.slidefade.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;-moz-animation-duration:225ms;transform:translateX(-100%);animation-name:slideouttoleft;animation-duration:225ms}.slidefade.in{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;-moz-animation-duration:200ms;transform:translateX(100%);animation-name:slideouttoright;animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidedown.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfromtop;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfromtop;animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translateY(-100%);-webkit-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-transform:translateY(-100%);-moz-animation-name:slideouttotop;-moz-animation-duration:200ms;transform:translateY(-100%);animation-name:slideouttotop;animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfromtop{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfromtop{from{transform:translateY(-100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-moz-keyframes slideouttotop{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}@keyframes slideouttotop{from{transform:translateY(0)}to{transform:translateY(-100%)}}.slideup.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfrombottom;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfrombottom;animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translateY(100%);-webkit-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-transform:translateY(100%);-moz-animation-name:slideouttobottom;-moz-animation-duration:200ms;transform:translateY(100%);animation-name:slideouttobottom;animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfrombottom{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfrombottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-moz-keyframes slideouttobottom{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}}@keyframes slideouttobottom{from{transform:translateY(0)}to{transform:translateY(100%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0);backface-visibility:hidden;transform:translateX(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;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms;animation-name:flipintoright;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;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;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)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{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)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{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)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{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)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.viewport-turn{-webkit-perspective:200px;-moz-perspective:200px;-ms-perspective:200px;perspective:200px;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0;backface-visibility :hidden;transform:translateX(0);transform-origin:0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:125ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-name:flipintoright;-moz-animation-duration:250ms;animation-name:flipintoright;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;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;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)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{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)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{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)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{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)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-transform-origin:50% 30%;-moz-box-shadow:0 0 20px rgba(0,0,0,.4);transform-origin:50% 30%;box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-webkit-box-shadow:none;-moz-transform-origin:none;-moz-box-shadow:none;transform-origin:none;box-shadow:none}.flow.out{-webkit-transform:translateX(-100%) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(-100%) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(-100%) scale(.7);animation-name:flowouttoleft;animation-timing-function:ease;animation-duration:350ms}.flow.in{-webkit-transform:translateX(0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(0) scale(1);animation-name:flowinfromright;animation-timing-function:ease;animation-duration:350ms}.flow.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:flowouttoright;-moz-transform:translateX(100%);-moz-animation-name:flowouttoright;transform:translateX(100%);animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft;animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(-100%) scale(.7)}}@-moz-keyframes flowouttoleft{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@keyframes flowouttoleft{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(100%) scale(.7)}}@-moz-keyframes flowouttoright{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(100%) scale(.7)}}@keyframes flowouttoright{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(100%) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{-webkit-transform:translateX(-100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromleft{0%{-moz-transform:translateX(-100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromleft{0%{transform:translateX(-100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}@-webkit-keyframes flowinfromright{0%{-webkit-transform:translateX(100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromright{0%{-moz-transform:translateX(100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromright{0%{transform:translateX(100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-grid-solo .ui-block-a{display:block;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:49.95%}.ui-grid-a>:nth-child(n){width:50%;margin-right:-.5px}.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.25%}.ui-grid-b>:nth-child(n){width: 33.333%;margin-right:-.5px}.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:24.925%}.ui-grid-c>:nth-child(n){width:25%;margin-right:-.5px}.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:19.925%}.ui-grid-d>:nth-child(n){width:20%}.ui-grid-d .ui-block-a{clear:left}@media all and (max-width:35em){.ui-responsive .ui-block-a,.ui-responsive .ui-block-b,.ui-responsive .ui-block-c,.ui-responsive .ui-block-d,.ui-responsive .ui-block-e{width:100%;float:none}}.ui-header-fixed,.ui-footer-fixed{left:0;right:0;width:100%;position:fixed;z-index:1000}.ui-header-fixed{top:-1px;padding-top:1px}.ui-header-fixed.ui-fixed-hidden{top:0;padding-top:0}.ui-footer-fixed{bottom:-1px;padding-bottom:1px}.ui-footer-fixed.ui-fixed-hidden{bottom:0;padding-bottom:0}.ui-header-fullscreen,.ui-footer-fullscreen{filter:Alpha(Opacity=90);opacity:.9}.ui-page-header-fixed{padding-top:2.6875em}.ui-page-footer-fixed{padding-bottom:2.6875em}.ui-page-header-fullscreen>.ui-content,.ui-page-footer-fullscreen>.ui-content{padding: 0.7em;}.ui-fixed-hidden{position:absolute}.ui-page-header-fullscreen .ui-fixed-hidden,.ui-page-footer-fullscreen .ui-fixed-hidden{left:-9999px}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-android-2x-fixed .ui-li-has-thumb{-webkit-transform:translate3d(0,0,0)}.ui-navbar{max-width:100%}.ui-navbar.ui-mini{margin:0}.ui-navbar ul:before,.ui-navbar ul:after{content:" ";display:table}.ui-navbar ul:after{clear:both}.ui-navbar ul{list-style:none;margin:0;padding:0;position:relative;display:block;border:0;max-width:100%;overflow:visible;zoom:1}.ui-navbar li .ui-btn{display:block;text-align:center;margin:0 -1px 0 0;border-right-width:0}.ui-navbar li .ui-btn-icon-right .ui-icon{right:6px}.ui-navbar li:last-child .ui-btn,.ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:0;border-right-width:1px}.ui-header .ui-navbar li:last-child .ui-btn,.ui-footer .ui-navbar li:last-child .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:-1px;border-right-width:0}.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn{margin-right:-1px;border-right-width:1px}.ui-header .ui-navbar li .ui-btn,.ui-footer .ui-navbar li .ui-btn{border-top-width:0;border-bottom-width:0}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn{margin-right:-5px}.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn{margin-right:-4px}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon{right:8px}.ui-navbar li .ui-btn .ui-btn-inner{padding-top:.7em;padding-bottom:.8em}.ui-navbar li .ui-btn-icon-top .ui-btn-inner{padding-top: 25px;}.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.ui-btn{display:table-cell;vertical-align:middle;text-align:center;cursor:pointer;position:relative;margin:0;padding:0}.ui-mini{margin-top:.25em;margin-bottom:.25em}.ui-btn-left,.ui-btn-right,.ui-input-clear,.ui-btn-inline,.ui-grid-a .ui-btn,.ui-grid-b .ui-btn,.ui-grid-c .ui-btn,.ui-grid-d .ui-btn,.ui-grid-e .ui-btn,.ui-grid-solo .ui-btn{margin-right:5px;margin-left:5px}.ui-btn-inner{font-size:16px;padding:.6em 20px;min-width:0;align:center;display:block;position:relative;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-btn-left,.ui-btn-right,.ui-btn-inline{display:inline-block;vertical-align:middle}.ui-mobile .ui-btn-left,.ui-mobile .ui-btn-right,.ui-btn-left>.ui-btn,.ui-btn-right>.ui-btn{margin:0}.ui-btn-block{display:block}.ui-header>.ui-btn,.ui-footer>.ui-btn{display:inline-block;margin:0}.ui-header .ui-btn-block,.ui-footer .ui-btn-block{display:block}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-mini .ui-btn-inner{font-size:12.5px;padding:.55em 11px .5em}.ui-fullsize .ui-btn-inner,.ui-fullsize .ui-btn-inner{font-size:16px;padding:.6em 20px}.ui-btn-icon-notext{width:24px;height:24px}.ui-btn-icon-notext .ui-btn-inner{padding:0;height:100%}.ui-btn-icon-notext .ui-btn-inner .ui-icon{margin:2px 1px 2px 3px;float:left}.ui-btn-text{position:relative;z-index:1;width:100%;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}div.ui-btn-text{width:auto}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-9999px}.ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-btn-icon-right .ui-btn-inner{padding-right:40px}.ui-btn-icon-top .ui-btn-inner{padding-top:40px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:40px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-mini .ui-btn-icon-left .ui-btn-inner{padding-left:30px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-mini.ui-btn-icon-right .ui-btn-inner,.ui-mini .ui-btn-icon-right .ui-btn-inner{padding-right:30px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner{padding: 28px 3px .5em;}.ui-mini.ui-btn-icon-top .ui-btn-inner,.ui-mini .ui-btn-icon-top .ui-btn-inner{padding-top:30px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner{padding:.55em 3px 30px}.ui-mini.ui-btn-icon-bottom .ui-btn-inner,.ui-mini .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.ui-btn-inner{-webkit-border-radius:inherit;border-radius:inherit}.ui-btn-icon-notext .ui-icon{display:block;z-index:0}.ui-btn-icon-left>.ui-btn-inner>.ui-icon,.ui-btn-icon-right>.ui-btn-inner>.ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-btn-inner .ui-icon,.ui-btn-icon-bottom .ui-btn-inner .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-btn-icon-top .ui-icon{top:10px}.ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-mini.ui-btn-icon-left .ui-icon,.ui-mini .ui-btn-icon-left .ui-icon{left:5px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-mini.ui-btn-icon-right .ui-icon,.ui-mini .ui-btn-icon-right .ui-icon{right:5px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-mini.ui-btn-icon-top .ui-icon,.ui-mini .ui-btn-icon-top .ui-icon{top:5px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-mini.ui-btn-icon-bottom .ui-icon,.ui-mini .ui-btn-icon-bottom .ui-icon{bottom:5px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:none;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=0);opacity:.1;font-size:1px;border:0;text-indent:-9999px}.ui-disabled .ui-btn-hidden{display:none}.ui-disabled{z-index:1}.ui-field-contain .ui-btn.ui-submit{margin:0}label.ui-submit{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .3em;display:block}@media all and (min-width:28em){.ui-field-contain label.ui-submit{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-btn.ui-submit{width:78%;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-hide-label .ui-btn.ui-submit{width:auto;display:block}}.ui-collapsible-inset{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -15px;padding:0;position:relative}.ui-collapsible-inset .ui-collapsible-heading{margin:0}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width: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-btn-inner{padding-left:12px;padding-right:12px}.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner{padding-right:40px}.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner{text-align:center}.ui-collapsible-heading .ui-btn-icon-left.ui-mini .ui-btn-inner{padding-left:30px}.ui-collapsible-heading .ui-btn-icon-right.ui-mini .ui-btn-inner{padding-right:30px}.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:10px 15px;border-left-width:0;border-right-width:0;border-top:0;background-image:none}.ui-collapsible-inset .ui-collapsible-content{margin:0;border-right-width:1px;border-left-width:1px}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set>.ui-collapsible.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-collapsible-heading,.ui-collapsible-heading>.ui-btn{-webkit-border-radius:inherit;border-radius:inherit}.ui-collapsible-set .ui-collapsible.ui-first-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-collapsible-content,.ui-collapsible-set .ui-collapsible.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-themed-content:not(.ui-collapsible-collapsed)>.ui-collapsible-heading{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible.ui-first-child{margin-top:0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0;zoom:1}.ui-controlgroup.ui-mini,fieldset.ui-controlgroup.ui-mini{margin:.25em 0}.ui-field-contain .ui-controlgroup,.ui-field-contain fieldset.ui-controlgroup{margin:0}.ui-bar .ui-controlgroup{margin:0 5px}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .4em}.ui-controlgroup-controls label.ui-select,.ui-controlgroup-controls label.ui-submit{position:absolute;left:-9999px}.ui-controlgroup li{list-style:none}.ui-controlgroup .ui-btn{margin:0}.ui-controlgroup .ui-btn-icon-notext{width:auto;height:auto;top:auto}.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner{height:20px;padding:.6em 20px}.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner{width:18px}.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner,.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner,.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner{height:16px;padding:.55em 11px .5em}.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;right:50%;margin:-9px -9px 0 0}.ui-controlgroup-horizontal .ui-btn-inner{text-align:center}.ui-controlgroup-horizontal.ui-mini .ui-btn-inner{height:16px;line-height:16px}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}.ui-controlgroup-horizontal .ui-controlgroup-controls:before,.ui-controlgroup-horizontal .ui-controlgroup-controls:after{content:"";display:table}.ui-controlgroup-horizontal .ui-controlgroup-controls:after{clear:both}.ui-controlgroup-horizontal .ui-controlgroup-controls{display:inline-block;vertical-align:middle;zoom:1}.ui-controlgroup-horizontal .ui-controlgroup-controls>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls li>.ui-btn,.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio,.ui-controlgroup-horizontal .ui-select{float:left;clear:none;margin:0}.ui-controlgroup-horizontal .ui-select .ui-btn-text{width:auto}.ui-controlgroup-vertical .ui-btn{border-bottom-width:0}.ui-controlgroup-vertical .ui-btn.ui-last-child{border-bottom-width:1px}.ui-controlgroup-horizontal .ui-btn{border-right-width:0}.ui-controlgroup-horizontal .ui-btn.ui-last-child{border-right-width:1px}.ui-controlgroup .ui-btn-corner-all{-webkit-border-radius:0;border-radius:0}.ui-controlgroup .ui-controlgroup-controls,.ui-controlgroup .ui-radio,.ui-controlgroup .ui-checkbox,.ui-controlgroup .ui-select,.ui-controlgroup li{-webkit-border-radius:inherit;border-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-last-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup .ui-shadow:not(.ui-focus){-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}@media all and (min-width:28em){.ui-field-contain .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-controlgroup-controls{width:78%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%;display:block}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}.ui-hide-label .ui-controlgroup-controls{width:100%}}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 15px;padding:0;position:relative;top:-15px}.ui-dialog-contain>.ui-header,.ui-dialog-contain>.ui-content,.ui-dialog-contain>.ui-footer{display:block;position:relative;width:auto;margin:0}.ui-dialog-contain>.ui-header{border:0;overflow:hidden;z-index:10;padding:0}.ui-dialog-contain>.ui-content{padding:15px}.ui-dialog-contain>.ui-footer{z-index:10;padding:0 15px}.ui-popup-open .ui-header-fixed,.ui-popup-open .ui-footer-fixed{position:absolute!important}.ui-popup-screen{background-image:url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==);top:0;left:0;right:0;bottom:1px;position:absolute;filter:Alpha(Opacity=0);opacity:0;z-index:1099}.ui-popup-screen.in{opacity:.5;filter:Alpha(Opacity=50)}.ui-popup-screen.out{opacity:0;filter:Alpha(Opacity=0)}.ui-popup-container{z-index:1100;display:inline-block;position:absolute;padding:0;outline:0}.ui-popup{position:relative}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup>p,.ui-popup>h1,.ui-popup>h2,.ui-popup>h3,.ui-popup>h4,.ui-popup>h5,.ui-popup>h6{margin:.5em 7px}.ui-popup>span{display:block;margin:.5em 7px}.ui-popup .ui-title{font-size:16px;font-weight:700;margin-top:.5em;margin-bottom:.5em}.ui-popup-container .ui-content>p,.ui-popup-container .ui-content>h1,.ui-popup-container .ui-content>h2,.ui-popup-container .ui-content>h3,.ui-popup-container .ui-content>h4,.ui-popup-container .ui-content>h5,.ui-popup-container .ui-content>h6{margin:.5em 0}.ui-popup-container .ui-content>span{margin:0}.ui-popup-container .ui-content>p:first-child,.ui-popup-container .ui-content>h1:first-child,.ui-popup-container .ui-content>h2:first-child,.ui-popup-container .ui-content>h3:first-child,.ui-popup-container .ui-content>h4:first-child,.ui-popup-container .ui-content>h5:first-child,.ui-popup-container .ui-content>h6:first-child{margin-top:0}.ui-popup-container .ui-content>p:last-child,.ui-popup-container .ui-content>h1:last-child,.ui-popup-container .ui-content>h2:last-child,.ui-popup-container .ui-content>h3:last-child,.ui-popup-container .ui-content>h4:last-child,.ui-popup-container .ui-content>h5:last-child,.ui-popup-container .ui-content>h6:last-child{margin-bottom:0}.ui-popup>img{width:auto;height:auto;max-width:100%;max-height:100%;vertical-align:middle}.ui-popup:not(.ui-content)>img:only-child,.ui-popup:not(.ui-content)>.ui-btn-left:first-child+img:last-child,.ui-popup:not(.ui-content)>.ui-btn-right:first-child+img:last-child{-webkit-border-radius:inherit;border-radius:inherit}.ui-popup iframe{vertical-align:middle}@media all and (min-width:28em){.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-hidden{top:-99999px;left:-9999px}.ui-checkbox,.ui-radio{position:relative;clear:both;margin:0;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{text-align:left;z-index:2}.ui-controlgroup .ui-checkbox .ui-btn,.ui-controlgroup .ui-radio .ui-btn{margin:0}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner{padding-left:36px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:36px}.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner,.ui-radio .ui-btn-icon-bottom .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-icon,.ui-radio .ui-icon{top:1.1em}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon,.ui-radio .ui-mini.ui-btn-icon-left .ui-icon{left:9px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-checkbox .ui-btn-icon-top .ui-icon,.ui-radio .ui-btn-icon-top .ui-icon{top:10px}.ui-checkbox .ui-btn-icon-bottom .ui-icon,.ui-radio .ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-controlgroup-horizontal .ui-checkbox .ui-icon,.ui-controlgroup-horizontal .ui-radio .ui-icon{display:none}.ui-controlgroup-horizontal .ui-checkbox .ui-btn-inner,.ui-controlgroup-horizontal .ui-radio .ui-btn-inner{padding:.6em 20px}.ui-controlgroup-horizontal .ui-checkbox .ui-mini .ui-btn-inner,.ui-controlgroup-horizontal .ui-radio .ui-mini .ui-btn-inner{padding:.55em 11px .5em}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;z-index:1}.ui-field-contain,fieldset.ui-field-contain{padding:.8em 0;margin:0;border-width:0 0 1px;overflow:visible}.ui-field-contain:last-child{border-bottom-width:0}.ui-field-contain{max-width:100%}@media all and (min-width:28em){.ui-field-contain,.ui-mobile fieldset.ui-field-contain{border-width:0;padding:0;margin:1em 0}}.ui-select{display:block;position:relative}.ui-select select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn{opacity:1}.ui-field-contain .ui-select .ui-btn{margin:0}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:none;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;filter:Alpha(Opacity=0);opacity:0;z-index:2}.ui-select .ui-disabled{opacity:.3}.ui-select .ui-disabled select{display:none}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn.ui-select-nativeonly{border-radius:0;border:0}.ui-select .ui-btn.ui-select-nativeonly select{opacity:1;text-indent:0;display:block}.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner{opacity:0}.ui-select .ui-btn-icon-right .ui-btn-inner,.ui-select .ui-li-has-count .ui-btn-inner{padding-right:45px}.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:32px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:80px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:67px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}.ui-select .ui-mini.ui-btn-icon-right .ui-icon{right:7px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count{right:45px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count{right:32px}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;overflow:hidden!important}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{padding:6px;min-width:160px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.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{margin:0;padding:0}.ui-selectmenu.ui-popup .ui-header{-webkit-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.ui-selectmenu .ui-header .ui-title{margin:.6em 46px .8em}@media all and (min-width:28em){.ui-field-contain label.ui-select{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-select{width:78%;display:inline-block}.ui-hide-label .ui-select{width:100%}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:400;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;margin:.5em 0;min-height:1.4em;line-height:1.4em;font-size:16px;display:block;width:100%;outline:0}input.ui-mini,.ui-mini input,textarea.ui-mini{font-size:14px}div.ui-input-text input.ui-input-text,div.ui-input-text textarea.ui-input-text,.ui-input-search input.ui-input-text{border:0;width:100%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search,div.ui-input-text{margin:.5em 0;background-image:none;position:relative}.ui-input-search{padding:0 30px}div.ui-input-text{padding:0 .4em}div.ui-input-has-clear{padding:0 30px 0 .4em}input.ui-input-text.ui-mini,textarea.ui-input-text.ui-mini,.ui-input-search.ui-mini,div.ui-input-text.ui-mini{margin:.25em 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{margin:0}textarea.ui-input-text{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}textarea.ui-mini{height:45px}.ui-icon-searchfield:after{position:absolute;left:7px;top:50%;margin-top:-9px;content:"";width:18px;height:18px;opacity:.5}.ui-input-search .ui-input-clear,.ui-input-text .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-13px}.ui-mini .ui-input-clear{right:-3px}.ui-input-search .ui-input-clear-hidden,.ui-input-text .ui-input-clear-hidden{display:none}input::-moz-placeholder,textarea::-moz-placeholder{color:#aaa}input[type=number]::-webkit-outer-spin-button{margin:0}@media all and (min-width:28em){.ui-field-contain label.ui-input-text{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{width:78%;display:inline-block}.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search,.ui-hide-label div.ui-input-text,.ui-input-search input.ui-input-text,div.ui-input-text input.ui-input-text{width:100%}}.ui-rangeslider{zoom:1;margin:0}.ui-rangeslider:before,.ui-rangeslider:after{content:"";display:table}.ui-rangeslider:after{clear:both}.ui-rangeslider input.ui-input-text.ui-slider-input{margin:.57143em 0}.ui-rangeslider.ui-mini input.ui-slider-input{margin:.28571em 0}.ui-rangeslider input.ui-slider-input.ui-rangeslider-last{float:right}.ui-rangeslider .ui-rangeslider-sliders{position:relative;overflow:visible;height:30px;margin:.5em 68px}.ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin:.25em 68px}.ui-field-contain .ui-rangeslider input.ui-slider-input,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin-top:0;margin-bottom:0}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track{position:absolute;top:6px;right:0;left:0;margin:0}.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track{top:8px}.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg{display:none}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{background-color:transparent;background:0;border-width:0;height:0}html >body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{height:15px;border-width:1px}html >body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child{height:12px}@media all and (min-width:28em){.ui-field-contain .ui-rangeslider label.ui-slider{float:left}.ui-field-contain .ui-rangeslider input.ui-slider-input{position:relative;z-index:1}.ui-field-contain .ui-rangeslider input.ui-slider-input.ui-rangeslider-first,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input.ui-rangeslider-first{margin-right:17px}.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{float:left;width:78%;margin:0 -68px}.ui-field-contain .ui-rangeslider .ui-slider-track,.ui-field-contain .ui-rangeslider.ui-mini .ui-slider-track{right:68px;left:68px}.ui-field-contain.ui-hide-label .ui-rangeslider input.ui-slider-input.ui-rangeslider-first{margin:0}.ui-field-contain.ui-hide-label .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-rangeslider-sliders{width:auto;float:none;margin:0 68px}.ui-field-contain.ui-hide-label .ui-rangeslider .ui-slider-track,.ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-slider-track{right:0;left:0}}.ui-listview{margin:0}ol.ui-listview,ol.ui-listview .ui-li-divider{counter-reset:listnumbering}.ui-content .ui-listview,.ui-panel-inner>.ui-listview{margin:-15px}.ui-collapsible-content>.ui-listview{margin:-10px -15px}.ui-content .ui-listview-inset,.ui-panel-inner .ui-listview-inset{margin:1em 0}.ui-collapsible-content .ui-listview-inset{margin:.5em 0}.ui-listview,.ui-li{list-style:none;padding:0}.ui-li,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left;border-width:0;border-top-width:1px}.ui-li.ui-btn,.ui-li.ui-field-contain,.ui-li-divider,.ui-li-static{margin:0}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li.ui-last-child,.ui-li.ui-field-contain.ui-last-child{border-bottom-width:1px}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>.ui-li.ui-first-child{border-top-width:0}.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>.ui-li.ui-last-child{border-bottom-width:0}.ui-li .ui-btn-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-static{background-image:none}.ui-li-divider{padding:.5em 15px;font-size:14px;font-weight:700}ol.ui-listview .ui-link-inherit:before,ol.ui-listview .ui-li-static:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:400;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview .ui-li>.ui-btn-text{-webkit-border-radius:inherit;border-radius:inherit}.ui-listview>.ui-li.ui-first-child,.ui-listview .ui-btn.ui-first-child>.ui-li>.ui-btn-text>.ui-link-inherit{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>.ui-li.ui-last-child,.ui-listview .ui-btn.ui-last-child>.ui-li>.ui-btn-text>.ui-link-inherit,.ui-collapsible-content>.ui-listview:not(.ui-listview-inset),.ui-collapsible-content>.ui-listview:not(.ui-listview-inset) .ui-li.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-listview>.ui-li.ui-first-child .ui-li-link-alt{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-listview>.ui-li.ui-last-child .ui-li-link-alt{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-listview>.ui-li.ui-first-child .ui-li-thumb:not(.ui-li-icon){-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>.ui-li.ui-last-child .ui-li-thumb:not(.ui-li-icon){-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-li>.ui-btn-inner{display:block;position:relative;padding:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li{padding:.7em 15px;display:block}.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-thumb{min-height:59px;padding-left:100px}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-icon{min-height:20px;padding-left:40px}.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-count,.ui-li-divider.ui-li-has-count{padding-right:45px}.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:40px}.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow.ui-li-has-count{padding-right:75px}.ui-li-heading{font-size:16px;font-weight:700;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:400;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}ol.ui-listview>.ui-li .ui-li-heading{display:inline-block;width:100%;margin-left:-1.3em;text-indent:1.3em;vertical-align:middle}ol.ui-listview>.ui-li .ui-li-desc:not(.ui-li-aside){text-indent:1.55em}.ui-li-thumb,.ui-listview .ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-listview .ui-li-icon{max-height:16px;max-width:16px;left:10px;top:.9em}.ui-li-thumb,.ui-listview .ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}@media all and (min-width:480px){.ui-li-aside{width:45%}}.ui-li-divider{cursor:default}.ui-li-has-alt .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt{padding-right:53px}.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt.ui-li-has-count{padding-right:88px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:700;padding:.2em .5em;top:50%;margin-top:-.9em;right:10px}.ui-li-has-count.ui-li-divider .ui-li-count,.ui-li-has-count .ui-link-inherit .ui-li-count{margin-top:-.95em}.ui-li-has-arrow.ui-li-has-count .ui-li-count{right:40px}.ui-li-has-alt.ui-li-has-count .ui-li-count{right:53px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-13px 0 0 0;border-bottom-width:1px;z-index:-1}.ui-li-link-alt .ui-btn-inner{padding:0;height:100%;position:absolute;width:100%;top:0;left:0}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-collapsible-content .ui-listview-filter{margin:-10px -15px 10px -15px;border-bottom:inherit}.ui-listview-filter-inset{margin:-15px -5px;background:transparent}.ui-collapsible-content .ui-listview-filter-inset{margin:-5px;border-bottom-width:0}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-li.ui-screen-hidden{display:none}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{font-size:16px;line-height:1.4;font-weight:400;margin:0;display:block}.ui-field-contain label.ui-slider{margin-bottom:.4em}div.ui-slider{height:30px;margin:.5em 0;zoom:1}div.ui-slider.ui-mini{margin:.25em 0}.ui-field-contain div.ui-slider,.ui-field-contain div.ui-slider.ui-mini{margin:0}div.ui-slider:before,div.ui-slider:after{content:"";display:table}div.ui-slider:after{clear:both}input.ui-input-text.ui-slider-input{display:block;float:left;margin:0;padding:4px;width:40px;height:22px;line-height:22px;font-size:14px;border-width:0;background-image:none;font-weight:700;text-align:center;vertical-align:text-bottom;outline:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;-ms-box-sizing:content-box;box-sizing:content-box}.ui-slider-input::-webkit-outer-spin-button,.ui-slider-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ui-slider-track,.ui-slider-switch{position:relative;overflow:visible;height:15px;margin:0 15px 0 68px;top:6px}.ui-slider-track.ui-mini{height:12px;top:8px}.ui-slider-bg{border:0;height:100%}.ui-slider-track .ui-btn.ui-slider-handle,.ui-slider-switch .ui-btn.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin:-15px 0 0 -15px;outline:0}.ui-slider-track.ui-mini .ui-slider-handle{height:14px;width:14px;margin:-8px 0 0 -7px}.ui-slider-handle .ui-btn-inner{padding:0;height:100%}.ui-slider-track.ui-mini .ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:-9px 0 0 -9px;border-top:0}select.ui-slider-switch{display:none}div.ui-slider-switch{display:inline-block;height:32px;width:5.8em;margin:.5em 0;top:0}div.ui-slider-switch:before,div.ui-slider-switch:after{display:none;clear:none}div.ui-slider-switch.ui-mini{width:5em;height:29px;margin:.25em 0;top:0}.ui-field-contain .ui-slider-switch,.ui-field-contain .ui-slider-switch.ui-mini{margin:0}.ui-slider-inneroffset{margin:0 16px;position:relative;z-index:1}.ui-slider-switch.ui-mini .ui-slider-inneroffset{margin:0 15px 0 14px}.ui-slider-switch .ui-btn.ui-slider-handle{margin:1px 0 0 -15px}.ui-slider-switch.ui-mini .ui-slider-handle{width:25px;height:25px;margin:1px 0 0 -13px;padding:0}.ui-slider-handle-snapping{-webkit-transition:left 70ms linear;-moz-transition:left 70ms linear}.ui-slider-switch.ui-mini .ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:0;border-top:0}.ui-slider-switch .ui-slider-label{position:absolute;text-align:center;width:100%;overflow:hidden;font-size:16px;top:0;line-height:2;min-height:100%;border-width:0;white-space:nowrap;cursor:pointer}.ui-slider-switch.ui-mini .ui-slider-label{font-size:14px}.ui-slider-switch .ui-slider-label-a{z-index:1;left:0;text-indent:-1.5em}.ui-slider-switch .ui-slider-label-b{z-index:0;right:0;text-indent:1.5em}@media all and (min-width:28em){.ui-field-contain label.ui-slider{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain div.ui-slider{display:inline-block;width:78%}.ui-field-contain.ui-hide-label div.ui-slider{display:block;width:auto}.ui-field-contain div.ui-slider-switch,.ui-field-contain.ui-hide-label div.ui-slider-switch{display:inline-block;width:5.8em}.ui-field-contain div.ui-slider-switch.ui-mini{width:5em}}.ui-table{border:0;border-collapse:collapse;padding:0;width:100%}.ui-table th,.ui-table td{line-height:1.5em;text-align:left;padding:.4em .5em;vertical-align:top}.ui-table th .ui-btn,.ui-table td .ui-btn{line-height:normal}.ui-table th{font-weight:700}.ui-table caption{text-align:left;margin-bottom:1.4em;opacity:.5}.table-stroke thead th{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.table-stroke tbody th,.table-stroke tbody td{border-bottom:1px solid #e6e6e6;border-bottom:1px solid rgba(0,0,0,.05)}.table-stripe tbody tr:nth-child(odd) td,.table-stripe tbody tr:nth-child(odd) th{background-color:#eee;background-color:rgba(0,0,0,.04)}.table-stripe thead th,.table-stripe tbody tr:last-child{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.ui-table-columntoggle-btn{float:right;margin-bottom:.8em}.ui-table-columntoggle-popup fieldset{margin:0}@media only all{th.ui-table-priority-6,td.ui-table-priority-6,th.ui-table-priority-5,td.ui-table-priority-5,th.ui-table-priority-4,td.ui-table-priority-4,th.ui-table-priority-3,td.ui-table-priority-3,th.ui-table-priority-2,td.ui-table-priority-2,th.ui-table-priority-1,td.ui-table-priority-1{display:none}}@media screen and (min-width:20em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,.ui-table-columntoggle.ui-responsive td.ui-table-priority-1{display:table-cell}}@media screen and (min-width:30em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,.ui-table-columntoggle.ui-responsive td.ui-table-priority-2{display:table-cell}}@media screen and (min-width:40em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,.ui-table-columntoggle.ui-responsive td.ui-table-priority-3{display:table-cell}}@media screen and (min-width:50em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,.ui-table-columntoggle.ui-responsive td.ui-table-priority-4{display:table-cell}}@media screen and (min-width:60em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,.ui-table-columntoggle.ui-responsive td.ui-table-priority-5{display:table-cell}}@media screen and (min-width:70em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,.ui-table-columntoggle.ui-responsive td.ui-table-priority-6{display:table-cell}}.ui-table-columntoggle th.ui-table-cell-hidden,.ui-table-columntoggle td.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden{display:none}.ui-table-columntoggle th.ui-table-cell-visible,.ui-table-columntoggle td.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible{display:table-cell}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:none}@media only all{.ui-table-reflow thead td,.ui-table-reflow thead th{display:none}.ui-table-reflow td,.ui-table-reflow th{text-align:left;display:block}.ui-table-reflow tbody th{margin-top:3em}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:block;padding:.4em;min-width:30%;display:inline-block;margin:-.4em 1em -.4em -.4em}.ui-table-reflow th .ui-table-cell-label-top,.ui-table-reflow td .ui-table-cell-label-top{display:block;padding:.4em 0;margin:.4em 0;text-transform:uppercase;font-size:.9em;font-weight:400}}@media (min-width:35em){.ui-table-reflow.ui-responsive{display:table-row-group}.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th,.ui-table-reflow.ui-responsive tbody th,.ui-table-reflow.ui-responsive tbody td,.ui-table-reflow.ui-responsive thead td,.ui-table-reflow.ui-responsive thead th{display:table-cell;margin:0}.ui-table-reflow.ui-responsive td .ui-table-cell-label,.ui-table-reflow.ui-responsive th .ui-table-cell-label{display:none}}@media (max-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;clear:left}}.ui-panel{width:17em;min-height:100%;max-height:none;border-width:0;position:absolute;top:0;display:block}.ui-panel-closed{width:0;max-height:100%;overflow:hidden;visibility:hidden}.ui-panel-fixed{position:fixed;bottom:-1px;padding-bottom:1px}.ui-panel-display-overlay{z-index:1001}.ui-panel-display-reveal{z-index:0}.ui-panel-display-push{z-index:999}.ui-panel-inner{padding:15px}.ui-panel-content-wrap{position:relative;left:0;min-height:inherit;border:0;z-index:999}.ui-panel-content-wrap-display-overlay,.ui-panel-animate.ui-panel-content-wrap>.ui-header,.ui-panel-content-wrap-closed{position:static}.ui-panel-dismiss{position:absolute;top:0;left:0;height:100%;width:100%;z-index:1002;display:none}.ui-panel-dismiss-open{display:block}.ui-panel-animate{-webkit-transition:-webkit-transform 350ms ease;-moz-transition:-moz-transform 350ms ease;transition:transform 350ms ease}.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal),.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal)>div,.ui-panel-animate.ui-panel-closed.ui-panel-display-reveal>div,.ui-panel-animate.ui-panel-content-wrap,.ui-panel-animate.ui-panel-content-fixed-toolbar{-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0)}.ui-panel-position-left{left:-17em}.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-display-push{left:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-position-left.ui-panel-display-reveal,.ui-panel-position-left.ui-panel-open{left:0}.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-position-right{right:-17em}.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-display-push{right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-position-right.ui-panel-display-reveal,.ui-panel-position-right.ui-panel-open{right:0}.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open,.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open,.ui-panel-dismiss-position-left.ui-panel-dismiss-open{left:17em;right:-17em}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push{left:0;right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open,.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open,.ui-panel-dismiss-position-right.ui-panel-dismiss-open{left:-17em;right:17em}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push{left:0;right:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-overlay,.ui-panel-content-wrap-open.ui-panel-content-wrap-display-overlay{left:0}.ui-page-active.ui-page-panel{overflow-x:hidden}.ui-panel-display-reveal{-webkit-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);box-shadow:inset -5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-reveal{-webkit-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);box-shadow:inset 5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-overlay{-webkit-box-shadow:5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:5px 0 5px rgba(0,0,0,.15);box-shadow:5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-overlay{-webkit-box-shadow:-5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:-5px 0 5px rgba(0,0,0,.15);box-shadow:-5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-push.ui-panel-open.ui-panel-position-left{border-right-width:1px;margin-right:-1px}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push{margin-left:1px}.ui-panel-display-push.ui-panel-open.ui-panel-position-right{border-left-width:1px;margin-left:-1px}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push{margin-right:1px}@media (min-width:55em){.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-left{margin-right:17em}.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right{margin-left:17em}.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal{width:auto}.ui-responsive-panel .ui-panel-dismiss-display-push{display:none}}
+
diff --git a/ism/data/remote-input/jquery.mobile-1.3.1.min.js b/ism/data/remote-input/jquery.mobile-1.3.1.min.js
new file mode 100644 (file)
index 0000000..4622a1e
--- /dev/null
@@ -0,0 +1,7 @@
+/*! jQuery Mobile 1.3.1 | Git HEAD hash: 74b4bec <> 2013-04-08T19:41:28Z | (c) 2010, 2013 jQuery Foundation, Inc. | jquery.org/license */
+(function(e,t,i){"function"==typeof define&&define.amd?define(["jquery"],function(n){return i(n,e,t),n.mobile}):i(e.jQuery,e,t)})(this,document,function(e,t,i,n){(function(e){e.mobile={}})(e),function(e,t,n){var a={};e.mobile=e.extend(e.mobile,{version:"1.3.1",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:e(t),document:e(i),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},behaviors:{},silentScroll:function(i){"number"!==e.type(i)&&(i=e.mobile.defaultHomeScroll),e.event.special.scrollstart.enabled=!1,setTimeout(function(){t.scrollTo(0,i),e.mobile.document.trigger("silentscroll",{x:0,y:i})},20),setTimeout(function(){e.event.special.scrollstart.enabled=!0},150)},nsNormalizeDict:a,nsNormalize:function(t){return t?a[t]||(a[t]=e.camelCase(e.mobile.ns+t)):n},getInheritedTheme:function(e,t){for(var i,n,a=e[0],o="",s=/ui-(bar|body|overlay)-([a-z])\b/;a&&(i=a.className||"",!(i&&(n=s.exec(i))&&(o=n[2])));)a=a.parentNode;return o||t||"a"},closestPageData:function(e){return e.closest(':jqmData(role="page"), :jqmData(role="dialog")').data("mobile-page")},enhanceable:function(e){return this.haveParents(e,"enhance")},hijackable:function(e){return this.haveParents(e,"ajax")},haveParents:function(t,i){if(!e.mobile.ignoreContentEnabled)return t;for(var n,a,o,s=t.length,r=e(),l=0;s>l;l++){for(a=t.eq(l),o=!1,n=t[l];n;){var d=n.getAttribute?n.getAttribute("data-"+e.mobile.ns+i):"";if("false"===d){o=!0;break}n=n.parentNode}o||(r=r.add(a))}return r},getScreenHeight:function(){return t.innerHeight||e.mobile.window.height()}},e.mobile),e.fn.jqmData=function(t,i){var a;return t!==n&&(t&&(t=e.mobile.nsNormalize(t)),a=2>arguments.length||i===n?this.data(t):this.data(t,i)),a},e.jqmData=function(t,i,a){var o;return i!==n&&(o=e.data(t,i?e.mobile.nsNormalize(i):i,a)),o},e.fn.jqmRemoveData=function(t){return this.removeData(e.mobile.nsNormalize(t))},e.jqmRemoveData=function(t,i){return e.removeData(t,e.mobile.nsNormalize(i))},e.fn.removeWithDependents=function(){e.removeWithDependents(this)},e.removeWithDependents=function(t){var i=e(t);(i.jqmData("dependents")||e()).remove(),i.remove()},e.fn.addDependents=function(t){e.addDependents(e(this),t)},e.addDependents=function(t,i){var n=e(t).jqmData("dependents")||e();e(t).jqmData("dependents",e.merge(n,i))},e.fn.getEncodedText=function(){return e("<div/>").text(e(this).text()).html()},e.fn.jqmEnhanceable=function(){return e.mobile.enhanceable(this)},e.fn.jqmHijackable=function(){return e.mobile.hijackable(this)};var o=e.find,s=/:jqmData\(([^)]*)\)/g;e.find=function(t,i,n,a){return t=t.replace(s,"[data-"+(e.mobile.ns||"")+"$1]"),o.call(this,t,i,n,a)},e.extend(e.find,o),e.find.matches=function(t,i){return e.find(t,null,null,i)},e.find.matchesSelector=function(t,i){return e.find(i,null,null,[t]).length>0}}(e,this),function(e,t){var i=0,n=Array.prototype.slice,a=e.cleanData;e.cleanData=function(t){for(var i,n=0;null!=(i=t[n]);n++)try{e(i).triggerHandler("remove")}catch(o){}a(t)},e.widget=function(i,n,a){var o,s,r,l,d=i.split(".")[0];i=i.split(".")[1],o=d+"-"+i,a||(a=n,n=e.Widget),e.expr[":"][o.toLowerCase()]=function(t){return!!e.data(t,o)},e[d]=e[d]||{},s=e[d][i],r=e[d][i]=function(e,i){return this._createWidget?(arguments.length&&this._createWidget(e,i),t):new r(e,i)},e.extend(r,s,{version:a.version,_proto:e.extend({},a),_childConstructors:[]}),l=new n,l.options=e.widget.extend({},l.options),e.each(a,function(t,i){e.isFunction(i)&&(a[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},a=function(e){return n.prototype[t].apply(this,e)};return function(){var t,n=this._super,o=this._superApply;return this._super=e,this._superApply=a,t=i.apply(this,arguments),this._super=n,this._superApply=o,t}}())}),r.prototype=e.widget.extend(l,{widgetEventPrefix:s?l.widgetEventPrefix:i},a,{constructor:r,namespace:d,widgetName:i,widgetFullName:o}),s?(e.each(s._childConstructors,function(t,i){var n=i.prototype;e.widget(n.namespace+"."+n.widgetName,r,i._proto)}),delete s._childConstructors):n._childConstructors.push(r),e.widget.bridge(i,r)},e.widget.extend=function(i){for(var a,o,s=n.call(arguments,1),r=0,l=s.length;l>r;r++)for(a in s[r])o=s[r][a],s[r].hasOwnProperty(a)&&o!==t&&(i[a]=e.isPlainObject(o)?e.isPlainObject(i[a])?e.widget.extend({},i[a],o):e.widget.extend({},o):o);return i},e.widget.bridge=function(i,a){var o=a.prototype.widgetFullName||i;e.fn[i]=function(s){var r="string"==typeof s,l=n.call(arguments,1),d=this;return s=!r&&l.length?e.widget.extend.apply(null,[s].concat(l)):s,r?this.each(function(){var n,a=e.data(this,o);return a?e.isFunction(a[s])&&"_"!==s.charAt(0)?(n=a[s].apply(a,l),n!==a&&n!==t?(d=n&&n.jquery?d.pushStack(n.get()):n,!1):t):e.error("no such method '"+s+"' for "+i+" widget instance"):e.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+s+"'")}):this.each(function(){var t=e.data(this,o);t?t.option(s||{})._init():e.data(this,o,new a(s,this))}),d}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,n){n=e(n||this.defaultElement||this)[0],this.element=e(n),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),n!==this&&(e.data(n,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===n&&this.destroy()}}),this.document=e(n.style?n.ownerDocument:n.document||n),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.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:e.noop,widget:function(){return this.element},option:function(i,n){var a,o,s,r=i;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof i)if(r={},a=i.split("."),i=a.shift(),a.length){for(o=r[i]=e.widget.extend({},this.options[i]),s=0;a.length-1>s;s++)o[a[s]]=o[a[s]]||{},o=o[a[s]];if(i=a.pop(),n===t)return o[i]===t?null:o[i];o[i]=n}else{if(n===t)return this.options[i]===t?null:this.options[i];r[i]=n}return this._setOptions(r),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),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(i,n,a){var o,s=this;"boolean"!=typeof i&&(a=n,n=i,i=!1),a?(n=o=e(n),this.bindings=this.bindings.add(n)):(a=n,n=this.element,o=this.widget()),e.each(a,function(a,r){function l(){return i||s.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof r?s[r]:r).apply(s,arguments):t}"string"!=typeof r&&(l.guid=r.guid=r.guid||l.guid||e.guid++);var d=a.match(/^(\w+)\s*(.*)$/),c=d[1]+s.eventNamespace,h=d[2];h?o.delegate(h,c,l):n.bind(c,l)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?n[e]:e).apply(n,arguments)}var n=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,n){var a,o,s=this.options[t];if(n=n||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(a in o)a in i||(i[a]=o[a]);return this.element.trigger(i,n),!(e.isFunction(s)&&s.apply(this.element[0],[i].concat(n))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(n,a,o){"string"==typeof a&&(a={effect:a});var s,r=a?a===!0||"number"==typeof a?i:a.effect||i:t;a=a||{},"number"==typeof a&&(a={duration:a}),s=!e.isEmptyObject(a),a.complete=o,a.delay&&n.delay(a.delay),s&&e.effects&&e.effects.effect[r]?n[t](a):r!==t&&n[r]?n[r](a.duration,a.easing,o):n.queue(function(i){e(this)[t](),o&&o.call(n[0]),i()})}})}(e),function(e,t){e.widget("mobile.widget",{_createWidget:function(){e.Widget.prototype._createWidget.apply(this,arguments),this._trigger("init")},_getCreateOptions:function(){var i=this.element,n={};return e.each(this.options,function(e){var a=i.jqmData(e.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()}));a!==t&&(n[e]=a)}),n},enhanceWithin:function(t,i){this.enhance(e(this.options.initSelector,e(t)),i)},enhance:function(t,i){var n,a,o=e(t);o=e.mobile.enhanceable(o),i&&o.length&&(n=e.mobile.closestPageData(o),a=n&&n.keepNativeSelector()||"",o=o.not(a)),o[this.widgetName]()},raise:function(e){throw"Widget ["+this.widgetName+"]: "+e}})}(e),function(e){e.extend(e.mobile,{loadingMessageTextVisible:n,loadingMessageTheme:n,loadingMessage:n,showPageLoadingMsg:function(t,i,n){e.mobile.loading("show",t,i,n)},hidePageLoadingMsg:function(){e.mobile.loading("hide")},loading:function(){this.loaderWidget.loader.apply(this.loaderWidget,arguments)}});var t="ui-loader",i=e("html"),a=e.mobile.window;e.widget("mobile.loader",{options:{theme:"a",textVisible:!1,html:"",text:"loading"},defaultHtml:"<div class='"+t+"'>"+"<span class='ui-icon ui-icon-loading'></span>"+"<h1></h1>"+"</div>",fakeFixLoader:function(){var t=e("."+e.mobile.activeBtnClass).first();this.element.css({top:e.support.scrollTop&&a.scrollTop()+a.height()/2||t.length&&t.offset().top||100})},checkLoaderPosition:function(){var t=this.element.offset(),i=a.scrollTop(),n=e.mobile.getScreenHeight();(i>t.top||t.top-i>n)&&(this.element.addClass("ui-loader-fakefix"),this.fakeFixLoader(),a.unbind("scroll",this.checkLoaderPosition).bind("scroll",e.proxy(this.fakeFixLoader,this)))},resetHtml:function(){this.element.html(e(this.defaultHtml).html())},show:function(o,s,r){var l,d,c;this.resetHtml(),"object"===e.type(o)?(c=e.extend({},this.options,o),o=c.theme||e.mobile.loadingMessageTheme):(c=this.options,o=o||e.mobile.loadingMessageTheme||c.theme),d=s||e.mobile.loadingMessage||c.text,i.addClass("ui-loading"),(e.mobile.loadingMessage!==!1||c.html)&&(l=e.mobile.loadingMessageTextVisible!==n?e.mobile.loadingMessageTextVisible:c.textVisible,this.element.attr("class",t+" ui-corner-all ui-body-"+o+" ui-loader-"+(l||s||o.text?"verbose":"default")+(c.textonly||r?" ui-loader-textonly":"")),c.html?this.element.html(c.html):this.element.find("h1").text(d),this.element.appendTo(e.mobile.pageContainer),this.checkLoaderPosition(),a.bind("scroll",e.proxy(this.checkLoaderPosition,this)))},hide:function(){i.removeClass("ui-loading"),e.mobile.loadingMessage&&this.element.removeClass("ui-loader-fakefix"),e.mobile.window.unbind("scroll",this.fakeFixLoader),e.mobile.window.unbind("scroll",this.checkLoaderPosition)}}),a.bind("pagecontainercreate",function(){e.mobile.loaderWidget=e.mobile.loaderWidget||e(e.mobile.loader.prototype.defaultHtml).loader()})}(e,this),function(e,t,n){function a(e){return e=e||location.href,"#"+e.replace(/^[^#]*#?(.*)$/,"$1")}var o,s="hashchange",r=i,l=e.event.special,d=r.documentMode,c="on"+s in t&&(d===n||d>7);e.fn[s]=function(e){return e?this.bind(s,e):this.trigger(s)},e.fn[s].delay=50,l[s]=e.extend(l[s],{setup:function(){return c?!1:(e(o.start),n)},teardown:function(){return c?!1:(e(o.stop),n)}}),o=function(){function i(){var n=a(),r=p(d);n!==d?(u(d=n,r),e(t).trigger(s)):r!==d&&(location.href=location.href.replace(/#.*/,"")+r),o=setTimeout(i,e.fn[s].delay)}var o,l={},d=a(),h=function(e){return e},u=h,p=h;return l.start=function(){o||i()},l.stop=function(){o&&clearTimeout(o),o=n},t.attachEvent&&!t.addEventListener&&!c&&function(){var t,n;l.start=function(){t||(n=e.fn[s].src,n=n&&n+a(),t=e('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){n||u(a()),i()}).attr("src",n||"javascript:0").insertAfter("body")[0].contentWindow,r.onpropertychange=function(){try{"title"===event.propertyName&&(t.document.title=r.title)}catch(e){}})},l.stop=h,p=function(){return a(t.location.href)},u=function(i,n){var a=t.document,o=e.fn[s].domain;i!==n&&(a.title=r.title,a.open(),o&&a.write('<script>document.domain="'+o+'"</script>'),a.close(),t.location.hash=i)}}(),l}()}(e,this),function(e){t.matchMedia=t.matchMedia||function(e){var t,i=e.documentElement,n=i.firstElementChild||i.firstChild,a=e.createElement("body"),o=e.createElement("div");return o.id="mq-test-1",o.style.cssText="position:absolute;top:-100em",a.style.background="none",a.appendChild(o),function(e){return o.innerHTML='&shy;<style media="'+e+'"> #mq-test-1 { width: 42px; }</style>',i.insertBefore(a,n),t=42===o.offsetWidth,i.removeChild(a),{matches:t,media:e}}}(i),e.mobile.media=function(e){return t.matchMedia(e).matches}}(e),function(e){var t={touch:"ontouchend"in i};e.mobile.support=e.mobile.support||{},e.extend(e.support,t),e.extend(e.mobile.support,t)}(e),function(e){e.extend(e.support,{orientation:"orientation"in t&&"onorientationchange"in t})}(e),function(e,n){function a(e){var t=e.charAt(0).toUpperCase()+e.substr(1),i=(e+" "+p.join(t+" ")+t).split(" ");for(var a in i)if(u[i[a]]!==n)return!0}function o(e,t,n){for(var a,o=i.createElement("div"),s=function(e){return e.charAt(0).toUpperCase()+e.substr(1)},r=function(e){return""===e?"":"-"+e.charAt(0).toLowerCase()+e.substr(1)+"-"},l=function(i){var n=r(i)+e+": "+t+";",l=s(i),d=l+(""===l?e:s(e));o.setAttribute("style",n),o.style[d]&&(a=!0)},d=n?n:p,c=0;d.length>c;c++)l(d[c]);return!!a}function s(){var a="transform-3d",o=e.mobile.media("(-"+p.join("-"+a+"),(-")+"-"+a+"),("+a+")");if(o)return!!o;var s=i.createElement("div"),r={MozTransform:"-moz-transform",transform:"transform"};h.append(s);for(var l in r)s.style[l]!==n&&(s.style[l]="translate3d( 100px, 1px, 1px )",o=t.getComputedStyle(s).getPropertyValue(r[l]));return!!o&&"none"!==o}function r(){var t,i,n=location.protocol+"//"+location.host+location.pathname+"ui-dir/",a=e("head base"),o=null,s="";return a.length?s=a.attr("href"):a=o=e("<base>",{href:n}).appendTo("head"),t=e("<a href='testurl' />").prependTo(h),i=t[0].href,a[0].href=s||location.pathname,o&&o.remove(),0===i.indexOf(n)}function l(){var e,n=i.createElement("x"),a=i.documentElement,o=t.getComputedStyle;return"pointerEvents"in n.style?(n.style.pointerEvents="auto",n.style.pointerEvents="x",a.appendChild(n),e=o&&"auto"===o(n,"").pointerEvents,a.removeChild(n),!!e):!1}function d(){var e=i.createElement("div");return e.getBoundingClientRect!==n}function c(){var e=t,i=navigator.userAgent,n=navigator.platform,a=i.match(/AppleWebKit\/([0-9]+)/),o=!!a&&a[1],s=i.match(/Fennec\/([0-9]+)/),r=!!s&&s[1],l=i.match(/Opera Mobi\/([0-9]+)/),d=!!l&&l[1];return(n.indexOf("iPhone")>-1||n.indexOf("iPad")>-1||n.indexOf("iPod")>-1)&&o&&534>o||e.operamini&&"[object OperaMini]"==={}.toString.call(e.operamini)||l&&7458>d||i.indexOf("Android")>-1&&o&&533>o||r&&6>r||"palmGetResource"in t&&o&&534>o||i.indexOf("MeeGo")>-1&&i.indexOf("NokiaBrowser/8.5.0")>-1?!1:!0}var h=e("<body>").prependTo("html"),u=h[0].style,p=["Webkit","Moz","O"],m="palmGetResource"in t,f=t.opera,g=t.operamini&&"[object OperaMini]"==={}.toString.call(t.operamini),b=t.blackberry&&!a("-webkit-transform");e.extend(e.mobile,{browser:{}}),e.mobile.browser.oldIE=function(){var e=3,t=i.createElement("div"),n=t.all||[];do t.innerHTML="<!--[if gt IE "+ ++e+"]><br><![endif]-->";while(n[0]);return e>4?e:!e}(),e.extend(e.support,{cssTransitions:"WebKitTransitionEvent"in t||o("transition","height 100ms linear",["Webkit","Moz",""])&&!e.mobile.browser.oldIE&&!f,pushState:"pushState"in history&&"replaceState"in history&&!(t.navigator.userAgent.indexOf("Firefox")>=0&&t.top!==t)&&-1===t.navigator.userAgent.search(/CriOS/),mediaquery:e.mobile.media("only all"),cssPseudoElement:!!a("content"),touchOverflow:!!a("overflowScrolling"),cssTransform3d:s(),boxShadow:!!a("boxShadow")&&!b,fixedPosition:c(),scrollTop:("pageXOffset"in t||"scrollTop"in i.documentElement||"scrollTop"in h[0])&&!m&&!g,dynamicBaseTag:r(),cssPointerEvents:l(),boundingRect:d()}),h.remove();var v=function(){var e=t.navigator.userAgent;return e.indexOf("Nokia")>-1&&(e.indexOf("Symbian/3")>-1||e.indexOf("Series60/5")>-1)&&e.indexOf("AppleWebKit")>-1&&e.match(/(BrowserNG|NokiaBrowser)\/7\.[0-3]/)}();e.mobile.gradeA=function(){return(e.support.mediaquery||e.mobile.browser.oldIE&&e.mobile.browser.oldIE>=7)&&(e.support.boundingRect||null!==e.fn.jquery.match(/1\.[0-7+]\.[0-9+]?/))},e.mobile.ajaxBlacklist=t.blackberry&&!t.WebKitPoint||g||v,v&&e(function(){e("head link[rel='stylesheet']").attr("rel","alternate stylesheet").attr("rel","stylesheet")}),e.support.boxShadow||e("html").addClass("ui-mobile-nosupport-boxshadow")}(e),function(e,t){var i,n=e.mobile.window;e.event.special.navigate=i={bound:!1,pushStateEnabled:!0,originalEventName:t,isPushStateEnabled:function(){return e.support.pushState&&e.mobile.pushStateEnabled===!0&&this.isHashChangeEnabled()},isHashChangeEnabled:function(){return e.mobile.hashListeningEnabled===!0},popstate:function(t){var i=new e.Event("navigate"),a=new e.Event("beforenavigate"),o=t.originalEvent.state||{};location.href,n.trigger(a),a.isDefaultPrevented()||(t.historyState&&e.extend(o,t.historyState),i.originalEvent=t,setTimeout(function(){n.trigger(i,{state:o})},0))},hashchange:function(t){var i=new e.Event("navigate"),a=new e.Event("beforenavigate");n.trigger(a),a.isDefaultPrevented()||(i.originalEvent=t,n.trigger(i,{state:t.hashchangeState||{}}))},setup:function(){i.bound||(i.bound=!0,i.isPushStateEnabled()?(i.originalEventName="popstate",n.bind("popstate.navigate",i.popstate)):i.isHashChangeEnabled()&&(i.originalEventName="hashchange",n.bind("hashchange.navigate",i.hashchange)))}}}(e),function(e,i){var n,a,o="&ui-state=dialog";e.mobile.path=n={uiStateKey:"&ui-state",urlParseRE:/^\s*(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,getLocation:function(e){var t=e?this.parseUrl(e):location,i=this.parseUrl(e||location.href).hash;return i="#"===i?"":i,t.protocol+"//"+t.host+t.pathname+t.search+i},parseLocation:function(){return this.parseUrl(this.getLocation())},parseUrl:function(t){if("object"===e.type(t))return t;var i=n.urlParseRE.exec(t||"")||[];return{href:i[0]||"",hrefNoHash:i[1]||"",hrefNoSearch:i[2]||"",domain:i[3]||"",protocol:i[4]||"",doubleSlash:i[5]||"",authority:i[6]||"",username:i[8]||"",password:i[9]||"",host:i[10]||"",hostname:i[11]||"",port:i[12]||"",pathname:i[13]||"",directory:i[14]||"",filename:i[15]||"",search:i[16]||"",hash:i[17]||""}},makePathAbsolute:function(e,t){if(e&&"/"===e.charAt(0))return e;e=e||"",t=t?t.replace(/^\/|(\/[^\/]*|[^\/]+)$/g,""):"";for(var i=t?t.split("/"):[],n=e.split("/"),a=0;n.length>a;a++){var o=n[a];switch(o){case".":break;case"..":i.length&&i.pop();break;default:i.push(o)}}return"/"+i.join("/")},isSameDomain:function(e,t){return n.parseUrl(e).domain===n.parseUrl(t).domain},isRelativeUrl:function(e){return""===n.parseUrl(e).protocol},isAbsoluteUrl:function(e){return""!==n.parseUrl(e).protocol},makeUrlAbsolute:function(e,t){if(!n.isRelativeUrl(e))return e;t===i&&(t=this.documentBase);var a=n.parseUrl(e),o=n.parseUrl(t),s=a.protocol||o.protocol,r=a.protocol?a.doubleSlash:a.doubleSlash||o.doubleSlash,l=a.authority||o.authority,d=""!==a.pathname,c=n.makePathAbsolute(a.pathname||o.filename,o.pathname),h=a.search||!d&&o.search||"",u=a.hash;return s+r+l+c+h+u},addSearchParams:function(t,i){var a=n.parseUrl(t),o="object"==typeof i?e.param(i):i,s=a.search||"?";return a.hrefNoSearch+s+("?"!==s.charAt(s.length-1)?"&":"")+o+(a.hash||"")},convertUrlToDataUrl:function(e){var i=n.parseUrl(e);return n.isEmbeddedPage(i)?i.hash.split(o)[0].replace(/^#/,"").replace(/\?.*$/,""):n.isSameDomain(i,this.documentBase)?i.hrefNoHash.replace(this.documentBase.domain,"").split(o)[0]:t.decodeURIComponent(e)},get:function(e){return e===i&&(e=n.parseLocation().hash),n.stripHash(e).replace(/[^\/]*\.[^\/*]+$/,"")},set:function(e){location.hash=e},isPath:function(e){return/\//.test(e)},clean:function(e){return e.replace(this.documentBase.domain,"")},stripHash:function(e){return e.replace(/^#/,"")},stripQueryParams:function(e){return e.replace(/\?.*$/,"")},cleanHash:function(e){return n.stripHash(e.replace(/\?.*$/,"").replace(o,""))},isHashValid:function(e){return/^#[^#]+$/.test(e)},isExternal:function(e){var t=n.parseUrl(e);return t.protocol&&t.domain!==this.documentUrl.domain?!0:!1},hasProtocol:function(e){return/^(:?\w+:)/.test(e)},isEmbeddedPage:function(e){var t=n.parseUrl(e);return""!==t.protocol?!this.isPath(t.hash)&&t.hash&&(t.hrefNoHash===this.documentUrl.hrefNoHash||this.documentBaseDiffers&&t.hrefNoHash===this.documentBase.hrefNoHash):/^#/.test(t.href)},squash:function(e,t){var i,a,o,s,r=this.isPath(e),l=this.parseUrl(e),d=l.hash,c="";return t=t||(n.isPath(e)?n.getLocation():n.getDocumentUrl()),a=r?n.stripHash(e):e,a=n.isPath(l.hash)?n.stripHash(l.hash):a,s=a.indexOf(this.uiStateKey),s>-1&&(c=a.slice(s),a=a.slice(0,s)),i=n.makeUrlAbsolute(a,t),o=this.parseUrl(i).search,r?((n.isPath(d)||0===d.replace("#","").indexOf(this.uiStateKey))&&(d=""),c&&-1===d.indexOf(this.uiStateKey)&&(d+=c),-1===d.indexOf("#")&&""!==d&&(d="#"+d),i=n.parseUrl(i),i=i.protocol+"//"+i.host+i.pathname+o+d):i+=i.indexOf("#")>-1?c:"#"+c,i},isPreservableHash:function(e){return 0===e.replace("#","").indexOf(this.uiStateKey)}},n.documentUrl=n.parseLocation(),a=e("head").find("base"),n.documentBase=a.length?n.parseUrl(n.makeUrlAbsolute(a.attr("href"),n.documentUrl.href)):n.documentUrl,n.documentBaseDiffers=n.documentUrl.hrefNoHash!==n.documentBase.hrefNoHash,n.getDocumentUrl=function(t){return t?e.extend({},n.documentUrl):n.documentUrl.href},n.getDocumentBase=function(t){return t?e.extend({},n.documentBase):n.documentBase.href}}(e),function(e,t){e.mobile.path,e.mobile.History=function(e,t){this.stack=e||[],this.activeIndex=t||0},e.extend(e.mobile.History.prototype,{getActive:function(){return this.stack[this.activeIndex]},getLast:function(){return this.stack[this.previousIndex]},getNext:function(){return this.stack[this.activeIndex+1]},getPrev:function(){return this.stack[this.activeIndex-1]},add:function(e,t){t=t||{},this.getNext()&&this.clearForward(),t.hash&&-1===t.hash.indexOf("#")&&(t.hash="#"+t.hash),t.url=e,this.stack.push(t),this.activeIndex=this.stack.length-1},clearForward:function(){this.stack=this.stack.slice(0,this.activeIndex+1)},find:function(e,t,i){t=t||this.stack;var n,a,o,s=t.length;for(a=0;s>a;a++)if(n=t[a],(decodeURIComponent(e)===decodeURIComponent(n.url)||decodeURIComponent(e)===decodeURIComponent(n.hash))&&(o=a,i))return o;return o},closest:function(e){var i,n=this.activeIndex;return i=this.find(e,this.stack.slice(0,n)),i===t&&(i=this.find(e,this.stack.slice(n),!0),i=i===t?i:i+n),i},direct:function(i){var n=this.closest(i.url),a=this.activeIndex;n!==t&&(this.activeIndex=n,this.previousIndex=a),a>n?(i.present||i.back||e.noop)(this.getActive(),"back"):n>a?(i.present||i.forward||e.noop)(this.getActive(),"forward"):n===t&&i.missing&&i.missing(this.getActive())}})}(e),function(e){var a=e.mobile.path,o=location.href;e.mobile.Navigator=function(t){this.history=t,this.ignoreInitialHashChange=!0,e.mobile.window.bind({"popstate.history":e.proxy(this.popstate,this),"hashchange.history":e.proxy(this.hashchange,this)})},e.extend(e.mobile.Navigator.prototype,{squash:function(n,o){var s,r,l=a.isPath(n)?a.stripHash(n):n;return r=a.squash(n),s=e.extend({hash:l,url:r},o),t.history.replaceState(s,s.title||i.title,r),s},hash:function(e,t){var i,n,o;if(i=a.parseUrl(e),n=a.parseLocation(),n.pathname+n.search===i.pathname+i.search)o=i.hash?i.hash:i.pathname+i.search;else if(a.isPath(e)){var s=a.parseUrl(t);o=s.pathname+s.search+(a.isPreservableHash(s.hash)?s.hash.replace("#",""):"")}else o=e;return o},go:function(n,o,s){var r,l,d,c,h=e.event.special.navigate.isPushStateEnabled();l=a.squash(n),d=this.hash(n,l),s&&d!==a.stripHash(a.parseLocation().hash)&&(this.preventNextHashChange=s),this.preventHashAssignPopState=!0,t.location.hash=d,this.preventHashAssignPopState=!1,r=e.extend({url:l,hash:d,title:i.title},o),h&&(c=new e.Event("popstate"),c.originalEvent={type:"popstate",state:null},this.squash(n,r),s||(this.ignorePopState=!0,e.mobile.window.trigger(c))),this.history.add(r.url,r)},popstate:function(t){var i,s;if(e.event.special.navigate.isPushStateEnabled())return this.preventHashAssignPopState?(this.preventHashAssignPopState=!1,t.stopImmediatePropagation(),n):this.ignorePopState?(this.ignorePopState=!1,n):!t.originalEvent.state&&1===this.history.stack.length&&this.ignoreInitialHashChange&&(this.ignoreInitialHashChange=!1,location.href===o)?(t.preventDefault(),n):(i=a.parseLocation().hash,!t.originalEvent.state&&i?(s=this.squash(i),this.history.add(s.url,s),t.historyState=s,n):(this.history.direct({url:(t.originalEvent.state||{}).url||i,present:function(i,n){t.historyState=e.extend({},i),t.historyState.direction=n}}),n))},hashchange:function(t){var o,s;if(e.event.special.navigate.isHashChangeEnabled()&&!e.event.special.navigate.isPushStateEnabled()){if(this.preventNextHashChange)return this.preventNextHashChange=!1,t.stopImmediatePropagation(),n;o=this.history,s=a.parseLocation().hash,this.history.direct({url:s,present:function(i,n){t.hashchangeState=e.extend({},i),t.hashchangeState.direction=n},missing:function(){o.add(s,{hash:s,title:i.title})}})}}})}(e),function(e){e.mobile.navigate=function(t,i,n){e.mobile.navigate.navigator.go(t,i,n)},e.mobile.navigate.history=new e.mobile.History,e.mobile.navigate.navigator=new e.mobile.Navigator(e.mobile.navigate.history);var t=e.mobile.path.parseLocation();e.mobile.navigate.history.add(t.href,{hash:t.hash})}(e),function(e,t,i,n){function a(e){for(;e&&e.originalEvent!==n;)e=e.originalEvent;return e}function o(t,i){var o,s,r,l,d,c,h,u,p,m=t.type;if(t=e.Event(t),t.type=i,o=t.originalEvent,s=e.event.props,m.search(/^(mouse|click)/)>-1&&(s=q),o)for(h=s.length,l;h;)l=s[--h],t[l]=o[l];if(m.search(/mouse(down|up)|click/)>-1&&!t.which&&(t.which=1),-1!==m.search(/^touch/)&&(r=a(o),m=r.touches,d=r.changedTouches,c=m&&m.length?m[0]:d&&d.length?d[0]:n))for(u=0,p=k.length;p>u;u++)l=k[u],t[l]=c[l];return t}function s(t){for(var i,n,a={};t;){i=e.data(t,T);for(n in i)i[n]&&(a[n]=a.hasVirtualBinding=!0);t=t.parentNode}return a}function r(t,i){for(var n;t;){if(n=e.data(t,T),n&&(!i||n[i]))return t;t=t.parentNode}return null}function l(){M=!1}function d(){M=!0}function c(){U=0,O.length=0,H=!1,d()}function h(){l()}function u(){p(),S=setTimeout(function(){S=0,c()},e.vmouse.resetTimerDuration)}function p(){S&&(clearTimeout(S),S=0)}function m(t,i,n){var a;return(n&&n[t]||!n&&r(i.target,t))&&(a=o(i,t),e(i.target).trigger(a)),a}function f(t){var i=e.data(t.target,D);if(!(H||U&&U===i)){var n=m("v"+t.type,t);n&&(n.isDefaultPrevented()&&t.preventDefault(),n.isPropagationStopped()&&t.stopPropagation(),n.isImmediatePropagationStopped()&&t.stopImmediatePropagation())}}function g(t){var i,n,o=a(t).touches;if(o&&1===o.length&&(i=t.target,n=s(i),n.hasVirtualBinding)){U=L++,e.data(i,D,U),p(),h(),I=!1;var r=a(t).touches[0];A=r.pageX,N=r.pageY,m("vmouseover",t,n),m("vmousedown",t,n)}}function b(e){M||(I||m("vmousecancel",e,s(e.target)),I=!0,u())}function v(t){if(!M){var i=a(t).touches[0],n=I,o=e.vmouse.moveDistanceThreshold,r=s(t.target);I=I||Math.abs(i.pageX-A)>o||Math.abs(i.pageY-N)>o,I&&!n&&m("vmousecancel",t,r),m("vmousemove",t,r),u()}}function _(e){if(!M){d();var t,i=s(e.target);if(m("vmouseup",e,i),!I){var n=m("vclick",e,i);n&&n.isDefaultPrevented()&&(t=a(e).changedTouches[0],O.push({touchID:U,x:t.clientX,y:t.clientY}),H=!0)}m("vmouseout",e,i),I=!1,u()}}function C(t){var i,n=e.data(t,T);if(n)for(i in n)if(n[i])return!0;return!1}function x(){}function y(t){var i=t.substr(1);return{setup:function(){C(this)||e.data(this,T,{});var n=e.data(this,T);n[t]=!0,j[t]=(j[t]||0)+1,1===j[t]&&B.bind(i,f),e(this).bind(i,x),F&&(j.touchstart=(j.touchstart||0)+1,1===j.touchstart&&B.bind("touchstart",g).bind("touchend",_).bind("touchmove",v).bind("scroll",b))},teardown:function(){--j[t],j[t]||B.unbind(i,f),F&&(--j.touchstart,j.touchstart||B.unbind("touchstart",g).unbind("touchmove",v).unbind("touchend",_).unbind("scroll",b));var n=e(this),a=e.data(this,T);a&&(a[t]=!1),n.unbind(i,x),C(this)||n.removeData(T)}}}var w,T="virtualMouseBindings",D="virtualTouchID",P="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),k="clientX clientY pageX pageY screenX screenY".split(" "),E=e.event.mouseHooks?e.event.mouseHooks.props:[],q=e.event.props.concat(E),j={},S=0,A=0,N=0,I=!1,O=[],H=!1,M=!1,F="addEventListener"in i,B=e(i),L=1,U=0;e.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(var z=0;P.length>z;z++)e.event.special[P[z]]=y(P[z]);F&&i.addEventListener("click",function(t){var i,a,o,s,r,l,d=O.length,c=t.target;if(d)for(i=t.clientX,a=t.clientY,w=e.vmouse.clickDistanceThreshold,o=c;o;){for(s=0;d>s;s++)if(r=O[s],l=0,o===c&&w>Math.abs(r.x-i)&&w>Math.abs(r.y-a)||e.data(o,D)===r.touchID)return t.preventDefault(),t.stopPropagation(),n;o=o.parentNode}},!0)}(e,t,i),function(e,t,n){function a(t,i,n){var a=n.type;n.type=i,e.event.dispatch.call(t,n),n.type=a}var o=e(i);e.each("touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "),function(t,i){e.fn[i]=function(e){return e?this.bind(i,e):this.trigger(i)},e.attrFn&&(e.attrFn[i]=!0)});var s=e.mobile.support.touch,r="touchmove scroll",l=s?"touchstart":"mousedown",d=s?"touchend":"mouseup",c=s?"touchmove":"mousemove";e.event.special.scrollstart={enabled:!0,setup:function(){function t(e,t){i=t,a(o,i?"scrollstart":"scrollstop",e)}var i,n,o=this,s=e(o);s.bind(r,function(a){e.event.special.scrollstart.enabled&&(i||t(a,!0),clearTimeout(n),n=setTimeout(function(){t(a,!1)},50))})}},e.event.special.tap={tapholdThreshold:750,setup:function(){var t=this,i=e(t);i.bind("vmousedown",function(n){function s(){clearTimeout(d)}function r(){s(),i.unbind("vclick",l).unbind("vmouseup",s),o.unbind("vmousecancel",r)}function l(e){r(),c===e.target&&a(t,"tap",e)}if(n.which&&1!==n.which)return!1;var d,c=n.target;n.originalEvent,i.bind("vmouseup",s).bind("vclick",l),o.bind("vmousecancel",r),d=setTimeout(function(){a(t,"taphold",e.Event("taphold",{target:c}))
+},e.event.special.tap.tapholdThreshold)})}},e.event.special.swipe={scrollSupressionThreshold:30,durationThreshold:1e3,horizontalDistanceThreshold:30,verticalDistanceThreshold:75,start:function(t){var i=t.originalEvent.touches?t.originalEvent.touches[0]:t;return{time:(new Date).getTime(),coords:[i.pageX,i.pageY],origin:e(t.target)}},stop:function(e){var t=e.originalEvent.touches?e.originalEvent.touches[0]:e;return{time:(new Date).getTime(),coords:[t.pageX,t.pageY]}},handleSwipe:function(t,i){i.time-t.time<e.event.special.swipe.durationThreshold&&Math.abs(t.coords[0]-i.coords[0])>e.event.special.swipe.horizontalDistanceThreshold&&Math.abs(t.coords[1]-i.coords[1])<e.event.special.swipe.verticalDistanceThreshold&&t.origin.trigger("swipe").trigger(t.coords[0]>i.coords[0]?"swipeleft":"swiperight")},setup:function(){var t=this,i=e(t);i.bind(l,function(t){function a(t){s&&(o=e.event.special.swipe.stop(t),Math.abs(s.coords[0]-o.coords[0])>e.event.special.swipe.scrollSupressionThreshold&&t.preventDefault())}var o,s=e.event.special.swipe.start(t);i.bind(c,a).one(d,function(){i.unbind(c,a),s&&o&&e.event.special.swipe.handleSwipe(s,o),s=o=n})})}},e.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe",swiperight:"swipe"},function(t,i){e.event.special[t]={setup:function(){e(this).bind(i,e.noop)}}})}(e,this),function(e){e.event.special.throttledresize={setup:function(){e(this).bind("resize",o)},teardown:function(){e(this).unbind("resize",o)}};var t,i,n,a=250,o=function(){i=(new Date).getTime(),n=i-s,n>=a?(s=i,e(this).trigger("throttledresize")):(t&&clearTimeout(t),t=setTimeout(o,a-n))},s=0}(e),function(e,t){function a(){var e=o();e!==s&&(s=e,d.trigger(c))}var o,s,r,l,d=e(t),c="orientationchange",h={0:!0,180:!0};if(e.support.orientation){var u=t.innerWidth||d.width(),p=t.innerHeight||d.height(),m=50;r=u>p&&u-p>m,l=h[t.orientation],(r&&l||!r&&!l)&&(h={"-90":!0,90:!0})}e.event.special.orientationchange=e.extend({},e.event.special.orientationchange,{setup:function(){return e.support.orientation&&!e.event.special.orientationchange.disabled?!1:(s=o(),d.bind("throttledresize",a),n)},teardown:function(){return e.support.orientation&&!e.event.special.orientationchange.disabled?!1:(d.unbind("throttledresize",a),n)},add:function(e){var t=e.handler;e.handler=function(e){return e.orientation=o(),t.apply(this,arguments)}}}),e.event.special.orientationchange.orientation=o=function(){var n=!0,a=i.documentElement;return n=e.support.orientation?h[t.orientation]:a&&1.1>a.clientWidth/a.clientHeight,n?"portrait":"landscape"},e.fn[c]=function(e){return e?this.bind(c,e):this.trigger(c)},e.attrFn&&(e.attrFn[c]=!0)}(e,this),function(e){e.widget("mobile.page",e.mobile.widget,{options:{theme:"c",domCache:!1,keepNativeDefault:":jqmData(role='none'), :jqmData(role='nojs')"},_create:function(){return this._trigger("beforecreate")===!1?!1:(this.element.attr("tabindex","0").addClass("ui-page ui-body-"+this.options.theme),this._on(this.element,{pagebeforehide:"removeContainerBackground",pagebeforeshow:"_handlePageBeforeShow"}),n)},_handlePageBeforeShow:function(){this.setContainerBackground()},removeContainerBackground:function(){e.mobile.pageContainer.removeClass("ui-overlay-"+e.mobile.getInheritedTheme(this.element.parent()))},setContainerBackground:function(t){this.options.theme&&e.mobile.pageContainer.addClass("ui-overlay-"+(t||this.options.theme))},keepNativeSelector:function(){var t=this.options,i=t.keepNative&&e.trim(t.keepNative);return i&&t.keepNative!==t.keepNativeDefault?[t.keepNative,t.keepNativeDefault].join(", "):t.keepNativeDefault}})}(e),function(e,t,i){var n=function(n){return n===i&&(n=!0),function(i,a,o,s){var r=new e.Deferred,l=a?" reverse":"",d=e.mobile.urlHistory.getActive(),c=d.lastScroll||e.mobile.defaultHomeScroll,h=e.mobile.getScreenHeight(),u=e.mobile.maxTransitionWidth!==!1&&e.mobile.window.width()>e.mobile.maxTransitionWidth,p=!e.support.cssTransitions||u||!i||"none"===i||Math.max(e.mobile.window.scrollTop(),c)>e.mobile.getMaxScrollForTransition(),m=" ui-page-pre-in",f=function(){e.mobile.pageContainer.toggleClass("ui-mobile-viewport-transitioning viewport-"+i)},g=function(){e.event.special.scrollstart.enabled=!1,t.scrollTo(0,c),setTimeout(function(){e.event.special.scrollstart.enabled=!0},150)},b=function(){s.removeClass(e.mobile.activePageClass+" out in reverse "+i).height("")},v=function(){n?s.animationComplete(_):_(),s.height(h+e.mobile.window.scrollTop()).addClass(i+" out"+l)},_=function(){s&&n&&b(),C()},C=function(){o.css("z-index",-10),o.addClass(e.mobile.activePageClass+m),e.mobile.focusPage(o),o.height(h+c),g(),o.css("z-index",""),p||o.animationComplete(x),o.removeClass(m).addClass(i+" in"+l),p&&x()},x=function(){n||s&&b(),o.removeClass("out in reverse "+i).height(""),f(),e.mobile.window.scrollTop()!==c&&g(),r.resolve(i,a,o,s,!0)};return f(),s&&!p?v():_(),r.promise()}},a=n(),o=n(!1),s=function(){return 3*e.mobile.getScreenHeight()};e.mobile.defaultTransitionHandler=a,e.mobile.transitionHandlers={"default":e.mobile.defaultTransitionHandler,sequential:a,simultaneous:o},e.mobile.transitionFallbacks={},e.mobile._maybeDegradeTransition=function(t){return t&&!e.support.cssTransform3d&&e.mobile.transitionFallbacks[t]&&(t=e.mobile.transitionFallbacks[t]),t},e.mobile.getMaxScrollForTransition=e.mobile.getMaxScrollForTransition||s}(e,this),function(e,n){function a(t){!f||f.closest("."+e.mobile.activePageClass).length&&!t||f.removeClass(e.mobile.activeBtnClass),f=null}function o(){_=!1,v.length>0&&e.mobile.changePage.apply(null,v.pop())}function s(t,i,n,a){i&&i.data("mobile-page")._trigger("beforehide",null,{nextPage:t}),t.data("mobile-page")._trigger("beforeshow",null,{prevPage:i||e("")}),e.mobile.hidePageLoadingMsg(),n=e.mobile._maybeDegradeTransition(n);var o=e.mobile.transitionHandlers[n||"default"]||e.mobile.defaultTransitionHandler,s=o(n,a,t,i);return s.done(function(){i&&i.data("mobile-page")._trigger("hide",null,{nextPage:t}),t.data("mobile-page")._trigger("show",null,{prevPage:i||e("")})}),s}function r(t,i){i&&t.attr("data-"+e.mobile.ns+"role",i),t.page()}function l(){var t=e.mobile.activePage&&c(e.mobile.activePage);return t||w.hrefNoHash}function d(e){for(;e&&("string"!=typeof e.nodeName||"a"!==e.nodeName.toLowerCase());)e=e.parentNode;return e}function c(t){var i=e(t).closest(".ui-page").jqmData("url"),n=w.hrefNoHash;return i&&p.isPath(i)||(i=n),p.makeUrlAbsolute(i,n)}var h=e.mobile.window,u=(e("html"),e("head")),p=e.extend(e.mobile.path,{getFilePath:function(t){var i="&"+e.mobile.subPageUrlKey;return t&&t.split(i)[0].split(C)[0]},isFirstPageUrl:function(t){var i=p.parseUrl(p.makeUrlAbsolute(t,this.documentBase)),a=i.hrefNoHash===this.documentUrl.hrefNoHash||this.documentBaseDiffers&&i.hrefNoHash===this.documentBase.hrefNoHash,o=e.mobile.firstPage,s=o&&o[0]?o[0].id:n;return a&&(!i.hash||"#"===i.hash||s&&i.hash.replace(/^#/,"")===s)},isPermittedCrossDomainRequest:function(t,i){return e.mobile.allowCrossDomainPages&&"file:"===t.protocol&&-1!==i.search(/^https?:/)}}),m=null,f=null,g=e.Deferred(),b=e.mobile.navigate.history,v=[],_=!1,C="&ui-state=dialog",x=u.children("base"),y=p.documentUrl,w=p.documentBase,T=(p.documentBaseDiffers,e.mobile.getScreenHeight),D=e.support.dynamicBaseTag?{element:x.length?x:e("<base>",{href:w.hrefNoHash}).prependTo(u),set:function(e){e=p.parseUrl(e).hrefNoHash,D.element.attr("href",p.makeUrlAbsolute(e,w))},reset:function(){D.element.attr("href",w.hrefNoSearch)}}:n;e.mobile.getDocumentUrl=p.getDocumentUrl,e.mobile.getDocumentBase=p.getDocumentBase,e.mobile.back=function(){var e=t.navigator;this.phonegapNavigationEnabled&&e&&e.app&&e.app.backHistory?e.app.backHistory():t.history.back()},e.mobile.focusPage=function(e){var t=e.find("[autofocus]"),i=e.find(".ui-title:eq(0)");return t.length?(t.focus(),n):(i.length?i.focus():e.focus(),n)};var P,k,E=!0;P=function(){if(E){var t=e.mobile.urlHistory.getActive();if(t){var i=h.scrollTop();t.lastScroll=e.mobile.minScrollBack>i?e.mobile.defaultHomeScroll:i}}},k=function(){setTimeout(P,100)},h.bind(e.support.pushState?"popstate":"hashchange",function(){E=!1}),h.one(e.support.pushState?"popstate":"hashchange",function(){E=!0}),h.one("pagecontainercreate",function(){e.mobile.pageContainer.bind("pagechange",function(){E=!0,h.unbind("scrollstop",k),h.bind("scrollstop",k)})}),h.bind("scrollstop",k),e.mobile._maybeDegradeTransition=e.mobile._maybeDegradeTransition||function(e){return e},e.mobile.resetActivePageHeight=function(t){var i=e("."+e.mobile.activePageClass),n=parseFloat(i.css("padding-top")),a=parseFloat(i.css("padding-bottom")),o=parseFloat(i.css("border-top-width")),s=parseFloat(i.css("border-bottom-width"));t="number"==typeof t?t:T(),i.css("min-height",t-n-a-o-s)},e.fn.animationComplete=function(t){return e.support.cssTransitions?e(this).one("webkitAnimationEnd animationend",t):(setTimeout(t,0),e(this))},e.mobile.path=p,e.mobile.base=D,e.mobile.urlHistory=b,e.mobile.dialogHashKey=C,e.mobile.allowCrossDomainPages=!1,e.mobile._bindPageRemove=function(){var t=e(this);!t.data("mobile-page").options.domCache&&t.is(":jqmData(external-page='true')")&&t.bind("pagehide.remove",function(){var t=e(this),i=new e.Event("pageremove");t.trigger(i),i.isDefaultPrevented()||t.removeWithDependents()})},e.mobile.loadPage=function(t,i){var a=e.Deferred(),o=e.extend({},e.mobile.loadPage.defaults,i),s=null,d=null,c=p.makeUrlAbsolute(t,l());o.data&&"get"===o.type&&(c=p.addSearchParams(c,o.data),o.data=n),o.data&&"post"===o.type&&(o.reloadPage=!0);var h=p.getFilePath(c),u=p.convertUrlToDataUrl(c);if(o.pageContainer=o.pageContainer||e.mobile.pageContainer,s=o.pageContainer.children("[data-"+e.mobile.ns+"url='"+u+"']"),0===s.length&&u&&!p.isPath(u)&&(s=o.pageContainer.children("#"+u).attr("data-"+e.mobile.ns+"url",u).jqmData("url",u)),0===s.length)if(e.mobile.firstPage&&p.isFirstPageUrl(h))e.mobile.firstPage.parent().length&&(s=e(e.mobile.firstPage));else if(p.isEmbeddedPage(h))return a.reject(c,i),a.promise();if(s.length){if(!o.reloadPage)return r(s,o.role),a.resolve(c,i,s),D&&!i.prefetch&&D.set(t),a.promise();d=s}var m=o.pageContainer,f=new e.Event("pagebeforeload"),g={url:t,absUrl:c,dataUrl:u,deferred:a,options:o};if(m.trigger(f,g),f.isDefaultPrevented())return a.promise();if(o.showLoadMsg)var b=setTimeout(function(){e.mobile.showPageLoadingMsg()},o.loadMsgDelay),v=function(){clearTimeout(b),e.mobile.hidePageLoadingMsg()};return D&&i.prefetch===n&&D.reset(),e.mobile.allowCrossDomainPages||p.isSameDomain(y,c)?e.ajax({url:h,type:o.type,data:o.data,contentType:o.contentType,dataType:"html",success:function(l,m,f){var b=e("<div></div>"),_=l.match(/<title[^>]*>([^<]*)/)&&RegExp.$1,C=RegExp("(<[^>]+\\bdata-"+e.mobile.ns+"role=[\"']?page[\"']?[^>]*>)"),x=RegExp("\\bdata-"+e.mobile.ns+"url=[\"']?([^\"'>]*)[\"']?");if(C.test(l)&&RegExp.$1&&x.test(RegExp.$1)&&RegExp.$1&&(t=h=p.getFilePath(e("<div>"+RegExp.$1+"</div>").text())),D&&i.prefetch===n&&D.set(h),b.get(0).innerHTML=l,s=b.find(":jqmData(role='page'), :jqmData(role='dialog')").first(),s.length||(s=e("<div data-"+e.mobile.ns+"role='page'>"+(l.split(/<\/?body[^>]*>/gim)[1]||"")+"</div>")),_&&!s.jqmData("title")&&(~_.indexOf("&")&&(_=e("<div>"+_+"</div>").text()),s.jqmData("title",_)),!e.support.dynamicBaseTag){var y=p.get(h);s.find("[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]").each(function(){var t=e(this).is("[href]")?"href":e(this).is("[src]")?"src":"action",i=e(this).attr(t);i=i.replace(location.protocol+"//"+location.host+location.pathname,""),/^(\w+:|#|\/)/.test(i)||e(this).attr(t,y+i)})}s.attr("data-"+e.mobile.ns+"url",p.convertUrlToDataUrl(h)).attr("data-"+e.mobile.ns+"external-page",!0).appendTo(o.pageContainer),s.one("pagecreate",e.mobile._bindPageRemove),r(s,o.role),c.indexOf("&"+e.mobile.subPageUrlKey)>-1&&(s=o.pageContainer.children("[data-"+e.mobile.ns+"url='"+u+"']")),o.showLoadMsg&&v(),g.xhr=f,g.textStatus=m,g.page=s,o.pageContainer.trigger("pageload",g),a.resolve(c,i,s,d)},error:function(t,n,s){D&&D.set(p.get()),g.xhr=t,g.textStatus=n,g.errorThrown=s;var r=new e.Event("pageloadfailed");o.pageContainer.trigger(r,g),r.isDefaultPrevented()||(o.showLoadMsg&&(v(),e.mobile.showPageLoadingMsg(e.mobile.pageLoadErrorMessageTheme,e.mobile.pageLoadErrorMessage,!0),setTimeout(e.mobile.hidePageLoadingMsg,1500)),a.reject(c,i))}}):a.reject(c,i),a.promise()},e.mobile.loadPage.defaults={type:"get",data:n,reloadPage:!1,role:n,showLoadMsg:!1,pageContainer:n,loadMsgDelay:50},e.mobile.changePage=function(t,d){if(_)return v.unshift(arguments),n;var c,h=e.extend({},e.mobile.changePage.defaults,d);h.pageContainer=h.pageContainer||e.mobile.pageContainer,h.fromPage=h.fromPage||e.mobile.activePage,c="string"==typeof t;var u=h.pageContainer,m=new e.Event("pagebeforechange"),f={toPage:t,options:h};if(f.absUrl=c?p.makeUrlAbsolute(t,l()):t.data("absUrl"),u.trigger(m,f),!m.isDefaultPrevented()){if(t=f.toPage,c="string"==typeof t,_=!0,c)return h.target=t,e.mobile.loadPage(t,h).done(function(t,i,n,a){_=!1,i.duplicateCachedPage=a,n.data("absUrl",f.absUrl),e.mobile.changePage(n,i)}).fail(function(){a(!0),o(),h.pageContainer.trigger("pagechangefailed",f)}),n;t[0]!==e.mobile.firstPage[0]||h.dataUrl||(h.dataUrl=y.hrefNoHash);var g=h.fromPage,x=h.dataUrl&&p.convertUrlToDataUrl(h.dataUrl)||t.jqmData("url"),w=x,T=(p.getFilePath(x),b.getActive()),D=0===b.activeIndex,P=0,k=i.title,E="dialog"===h.role||"dialog"===t.jqmData("role");if(g&&g[0]===t[0]&&!h.allowSamePageTransition)return _=!1,u.trigger("pagechange",f),h.fromHashChange&&b.direct({url:x}),n;r(t,h.role),h.fromHashChange&&(P="back"===d.direction?-1:1);try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()?e(i.activeElement).blur():e("input:focus, textarea:focus, select:focus").blur()}catch(q){}var j=!1;E&&T&&(T.url&&T.url.indexOf(C)>-1&&e.mobile.activePage&&!e.mobile.activePage.is(".ui-dialog")&&b.activeIndex>0&&(h.changeHash=!1,j=!0),x=T.url||"",x+=!j&&x.indexOf("#")>-1?C:"#"+C,0===b.activeIndex&&x===b.initialDst&&(x+=C));var S=T?t.jqmData("title")||t.children(":jqmData(role='header')").find(".ui-title").text():k;if(S&&k===i.title&&(k=S),t.jqmData("title")||t.jqmData("title",k),h.transition=h.transition||(P&&!D?T.transition:n)||(E?e.mobile.defaultDialogTransition:e.mobile.defaultPageTransition),!P&&j&&(b.getActive().pageUrl=w),x&&!h.fromHashChange){var A;!p.isPath(x)&&0>x.indexOf("#")&&(x="#"+x),A={transition:h.transition,title:k,pageUrl:w,role:h.role},h.changeHash!==!1&&e.mobile.hashListeningEnabled?e.mobile.navigate(x,A,!0):t[0]!==e.mobile.firstPage[0]&&e.mobile.navigate.history.add(x,A)}i.title=k,e.mobile.activePage=t,h.reverse=h.reverse||0>P,s(t,g,h.transition,h.reverse).done(function(i,n,s,r,l){a(),h.duplicateCachedPage&&h.duplicateCachedPage.remove(),l||e.mobile.focusPage(t),o(),u.trigger("pagechange",f)})}},e.mobile.changePage.defaults={transition:n,reverse:!1,changeHash:!0,fromHashChange:!1,role:n,duplicateCachedPage:n,pageContainer:n,showLoadMsg:!0,dataUrl:n,fromPage:n,allowSamePageTransition:!1},e.mobile.navreadyDeferred=e.Deferred(),e.mobile._registerInternalEvents=function(){var i=function(t,i){var a,o,s,r,l=!0;return!e.mobile.ajaxEnabled||t.is(":jqmData(ajax='false')")||!t.jqmHijackable().length||t.attr("target")?!1:(a=t.attr("action"),r=(t.attr("method")||"get").toLowerCase(),a||(a=c(t),"get"===r&&(a=p.parseUrl(a).hrefNoSearch),a===w.hrefNoHash&&(a=y.hrefNoSearch)),a=p.makeUrlAbsolute(a,c(t)),p.isExternal(a)&&!p.isPermittedCrossDomainRequest(y,a)?!1:(i||(o=t.serializeArray(),m&&m[0].form===t[0]&&(s=m.attr("name"),s&&(e.each(o,function(e,t){return t.name===s?(s="",!1):n}),s&&o.push({name:s,value:m.attr("value")}))),l={url:a,options:{type:r,data:e.param(o),transition:t.jqmData("transition"),reverse:"reverse"===t.jqmData("direction"),reloadPage:!0}}),l))};e.mobile.document.delegate("form","submit",function(t){var n=i(e(this));n&&(e.mobile.changePage(n.url,n.options),t.preventDefault())}),e.mobile.document.bind("vclick",function(t){var n,o,s=t.target,r=!1;if(!(t.which>1)&&e.mobile.linkBindingEnabled){if(m=e(s),e.data(s,"mobile-button")){if(!i(e(s).closest("form"),!0))return;s.parentNode&&(s=s.parentNode)}else{if(s=d(s),!s||"#"===p.parseUrl(s.getAttribute("href")||"#").hash)return;if(!e(s).jqmHijackable().length)return}~s.className.indexOf("ui-link-inherit")?s.parentNode&&(o=e.data(s.parentNode,"buttonElements")):o=e.data(s,"buttonElements"),o?s=o.outer:r=!0,n=e(s),r&&(n=n.closest(".ui-btn")),n.length>0&&!n.hasClass("ui-disabled")&&(a(!0),f=n,f.addClass(e.mobile.activeBtnClass))}}),e.mobile.document.bind("click",function(i){if(e.mobile.linkBindingEnabled&&!i.isDefaultPrevented()){var o,s=d(i.target),r=e(s);if(s&&!(i.which>1)&&r.jqmHijackable().length){if(o=function(){t.setTimeout(function(){a(!0)},200)},r.is(":jqmData(rel='back')"))return e.mobile.back(),!1;var l=c(r),h=p.makeUrlAbsolute(r.attr("href")||"#",l);if(!e.mobile.ajaxEnabled&&!p.isEmbeddedPage(h))return o(),n;if(-1!==h.search("#")){if(h=h.replace(/[^#]*#/,""),!h)return i.preventDefault(),n;h=p.isPath(h)?p.makeUrlAbsolute(h,l):p.makeUrlAbsolute("#"+h,y.hrefNoHash)}var u=r.is("[rel='external']")||r.is(":jqmData(ajax='false')")||r.is("[target]"),m=u||p.isExternal(h)&&!p.isPermittedCrossDomainRequest(y,h);if(m)return o(),n;var f=r.jqmData("transition"),g="reverse"===r.jqmData("direction")||r.jqmData("back"),b=r.attr("data-"+e.mobile.ns+"rel")||n;e.mobile.changePage(h,{transition:f,reverse:g,role:b,link:r}),i.preventDefault()}}}),e.mobile.document.delegate(".ui-page","pageshow.prefetch",function(){var t=[];e(this).find("a:jqmData(prefetch)").each(function(){var i=e(this),n=i.attr("href");n&&-1===e.inArray(n,t)&&(t.push(n),e.mobile.loadPage(n,{role:i.attr("data-"+e.mobile.ns+"rel"),prefetch:!0}))})}),e.mobile._handleHashChange=function(i,a){var o=p.stripHash(i),s=0===e.mobile.urlHistory.stack.length?"none":n,r={changeHash:!1,fromHashChange:!0,reverse:"back"===a.direction};if(e.extend(r,a,{transition:(b.getLast()||{}).transition||s}),b.activeIndex>0&&o.indexOf(C)>-1&&b.initialDst!==o){if(e.mobile.activePage&&!e.mobile.activePage.is(".ui-dialog"))return"back"===a.direction?e.mobile.back():t.history.forward(),n;o=a.pageUrl;var l=e.mobile.urlHistory.getActive();e.extend(r,{role:l.role,transition:l.transition,reverse:"back"===a.direction})}o?(o=p.isPath(o)?o:p.makeUrlAbsolute("#"+o,w),o===p.makeUrlAbsolute("#"+b.initialDst,w)&&b.stack.length&&b.stack[0].url!==b.initialDst.replace(C,"")&&(o=e.mobile.firstPage),e.mobile.changePage(o,r)):e.mobile.changePage(e.mobile.firstPage,r)},h.bind("navigate",function(t,i){var n;t.originalEvent&&t.originalEvent.isDefaultPrevented()||(n=e.event.special.navigate.originalEventName.indexOf("hashchange")>-1?i.state.hash:i.state.url,n||(n=e.mobile.path.parseLocation().hash),n&&"#"!==n&&0!==n.indexOf("#"+e.mobile.path.uiStateKey)||(n=location.href),e.mobile._handleHashChange(n,i.state))}),e.mobile.document.bind("pageshow",e.mobile.resetActivePageHeight),e.mobile.window.bind("throttledresize",e.mobile.resetActivePageHeight)},e(function(){g.resolve()}),e.when(g,e.mobile.navreadyDeferred).done(function(){e.mobile._registerInternalEvents()})}(e),function(e){e.mobile.transitionFallbacks.flip="fade"}(e,this),function(e){e.mobile.transitionFallbacks.flow="fade"}(e,this),function(e){e.mobile.transitionFallbacks.pop="fade"}(e,this),function(e){e.mobile.transitionHandlers.slide=e.mobile.transitionHandlers.simultaneous,e.mobile.transitionFallbacks.slide="fade"}(e,this),function(e){e.mobile.transitionFallbacks.slidedown="fade"}(e,this),function(e){e.mobile.transitionFallbacks.slidefade="fade"}(e,this),function(e){e.mobile.transitionFallbacks.slideup="fade"}(e,this),function(e){e.mobile.transitionFallbacks.turn="fade"}(e,this),function(e){e.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},e.mobile.document.bind("pagecreate create",function(t){var i,n=e.mobile.closestPageData(e(t.target));n&&(i=n.options,e(t.target).find("input").not(n.keepNativeSelector()).each(function(){var t=e(this),n=this.getAttribute("type"),a=i.degradeInputs[n]||"text";if(i.degradeInputs[n]){var o=e("<div>").html(t.clone()).html(),s=o.indexOf(" type=")>-1,r=s?/\s+type=["']?\w+['"]?/:/\/?>/,l=' type="'+a+'" data-'+e.mobile.ns+'type="'+n+'"'+(s?"":">");t.replaceWith(o.replace(r,l))}}))})}(e),function(e){e.widget("mobile.dialog",e.mobile.widget,{options:{closeBtn:"left",closeBtnText:"Close",overlayTheme:"a",corners:!0,initSelector:":jqmData(role='dialog')"},_handlePageBeforeShow:function(){this._isCloseable=!0,this.options.overlayTheme&&this.element.page("removeContainerBackground").page("setContainerBackground",this.options.overlayTheme)},_create:function(){var t=this.element,i=this.options.corners?" ui-corner-all":"",n=e("<div/>",{role:"dialog","class":"ui-dialog-contain ui-overlay-shadow"+i});t.addClass("ui-dialog ui-overlay-"+this.options.overlayTheme),t.wrapInner(n),t.bind("vclick submit",function(t){var i,n=e(t.target).closest("vclick"===t.type?"a":"form");n.length&&!n.jqmData("transition")&&(i=e.mobile.urlHistory.getActive()||{},n.attr("data-"+e.mobile.ns+"transition",i.transition||e.mobile.defaultDialogTransition).attr("data-"+e.mobile.ns+"direction","reverse"))}),this._on(t,{pagebeforeshow:"_handlePageBeforeShow"}),e.extend(this,{_createComplete:!1}),this._setCloseBtn(this.options.closeBtn)},_setCloseBtn:function(t){var i,n,a=this;this._headerCloseButton&&(this._headerCloseButton.remove(),this._headerCloseButton=null),"none"!==t&&(n="left"===t?"left":"right",i=e("<a href='#' class='ui-btn-"+n+"' data-"+e.mobile.ns+"icon='delete' data-"+e.mobile.ns+"iconpos='notext'>"+this.options.closeBtnText+"</a>"),this.element.children().find(":jqmData(role='header')").first().prepend(i),this._createComplete&&e.fn.buttonMarkup&&i.buttonMarkup(),this._createComplete=!0,i.bind("click",function(){a.close()}),this._headerCloseButton=i)},_setOption:function(e,t){"closeBtn"===e&&this._setCloseBtn(t),this._super(e,t)},close:function(){var t,i,n=e.mobile.navigate.history;this._isCloseable&&(this._isCloseable=!1,e.mobile.hashListeningEnabled&&n.activeIndex>0?e.mobile.back():(t=Math.max(0,n.activeIndex-1),i=n.stack[t].pageUrl||n.stack[t].url,n.previousIndex=n.activeIndex,n.activeIndex=t,e.mobile.path.isPath(i)||(i=e.mobile.path.makeUrlAbsolute("#"+i)),e.mobile.changePage(i,{direction:"back",changeHash:!1,fromHashChange:!0})))}}),e.mobile.document.delegate(e.mobile.dialog.prototype.options.initSelector,"pagecreate",function(){e.mobile.dialog.prototype.enhance(this)})}(e,this),function(e){e.mobile.page.prototype.options.backBtnText="Back",e.mobile.page.prototype.options.addBackBtn=!1,e.mobile.page.prototype.options.backBtnTheme=null,e.mobile.page.prototype.options.headerTheme="a",e.mobile.page.prototype.options.footerTheme="a",e.mobile.page.prototype.options.contentTheme=null,e.mobile.document.bind("pagecreate",function(t){var i=e(t.target),n=i.data("mobile-page").options,a=i.jqmData("role"),o=n.theme;e(":jqmData(role='header'), :jqmData(role='footer'), :jqmData(role='content')",i).jqmEnhanceable().each(function(){var t,s,r,l,d=e(this),c=d.jqmData("role"),h=d.jqmData("theme"),u=h||n.contentTheme||"dialog"===a&&o;if(d.addClass("ui-"+c),"header"===c||"footer"===c){var p=h||("header"===c?n.headerTheme:n.footerTheme)||o;d.addClass("ui-bar-"+p).attr("role","header"===c?"banner":"contentinfo"),"header"===c&&(t=d.children("a, button"),s=t.hasClass("ui-btn-left"),r=t.hasClass("ui-btn-right"),s=s||t.eq(0).not(".ui-btn-right").addClass("ui-btn-left").length,r=r||t.eq(1).addClass("ui-btn-right").length),n.addBackBtn&&"header"===c&&e(".ui-page").length>1&&i.jqmData("url")!==e.mobile.path.stripHash(location.hash)&&!s&&(l=e("<a href='javascript:void(0);' class='ui-btn-left' data-"+e.mobile.ns+"rel='back' data-"+e.mobile.ns+"icon='arrow-l'>"+n.backBtnText+"</a>").attr("data-"+e.mobile.ns+"theme",n.backBtnTheme||p).prependTo(d)),d.children("h1, h2, h3, h4, h5, h6").addClass("ui-title").attr({role:"heading","aria-level":"1"})}else"content"===c&&(u&&d.addClass("ui-body-"+u),d.attr("role","main"))})})}(e),function(e,t){function n(e){for(var t;e&&(t="string"==typeof e.className&&e.className+" ",!(t&&t.indexOf("ui-btn ")>-1&&0>t.indexOf("ui-disabled ")));)e=e.parentNode;return e}function a(n,a,o,s,r){var l=e.data(n[0],"buttonElements");n.removeClass(a).addClass(o),l&&(l.bcls=e(i.createElement("div")).addClass(l.bcls+" "+o).removeClass(a).attr("class"),s!==t&&(l.hover=s),l.state=r)}var o=function(e,i){var n=e.getAttribute(i);return"true"===n?!0:"false"===n?!1:null===n?t:n};e.fn.buttonMarkup=function(n){var a,r=this,l="data-"+e.mobile.ns;n=n&&"object"===e.type(n)?n:{};for(var d=0;r.length>d;d++){var c,h,u,p,m,f,g=r.eq(d),b=g[0],v=e.extend({},e.fn.buttonMarkup.defaults,{icon:n.icon!==t?n.icon:o(b,l+"icon"),iconpos:n.iconpos!==t?n.iconpos:o(b,l+"iconpos"),theme:n.theme!==t?n.theme:o(b,l+"theme")||e.mobile.getInheritedTheme(g,"c"),inline:n.inline!==t?n.inline:o(b,l+"inline"),shadow:n.shadow!==t?n.shadow:o(b,l+"shadow"),corners:n.corners!==t?n.corners:o(b,l+"corners"),iconshadow:n.iconshadow!==t?n.iconshadow:o(b,l+"iconshadow"),mini:n.mini!==t?n.mini:o(b,l+"mini")},n),_="ui-btn-inner",C="ui-btn-text",x=!1,y="up";for(a in v)v[a]===t||null===v[a]?g.removeAttr(l+a):b.setAttribute(l+a,v[a]);for("popup"===o(b,l+"rel")&&g.attr("href")&&(b.setAttribute("aria-haspopup",!0),b.setAttribute("aria-owns",g.attr("href"))),f=e.data("INPUT"===b.tagName||"BUTTON"===b.tagName?b.parentNode:b,"buttonElements"),f?(b=f.outer,g=e(b),u=f.inner,p=f.text,e(f.icon).remove(),f.icon=null,x=f.hover,y=f.state):(u=i.createElement(v.wrapperEls),p=i.createElement(v.wrapperEls)),m=v.icon?i.createElement("span"):null,s&&!f&&s(),v.theme||(v.theme=e.mobile.getInheritedTheme(g,"c")),c="ui-btn ",c+=x?"ui-btn-hover-"+v.theme:"",c+=y?" ui-btn-"+y+"-"+v.theme:"",c+=v.shadow?" ui-shadow":"",c+=v.corners?" ui-btn-corner-all":"",v.mini!==t&&(c+=v.mini===!0?" ui-mini":" ui-fullsize"),v.inline!==t&&(c+=v.inline===!0?" ui-btn-inline":" ui-btn-block"),v.icon&&(v.icon="ui-icon-"+v.icon,v.iconpos=v.iconpos||"left",h="ui-icon "+v.icon,v.iconshadow&&(h+=" ui-icon-shadow")),v.iconpos&&(c+=" ui-btn-icon-"+v.iconpos,"notext"!==v.iconpos||g.attr("title")||g.attr("title",g.getEncodedText())),f&&g.removeClass(f.bcls||""),g.removeClass("ui-link").addClass(c),u.className=_,p.className=C,f||u.appendChild(p),m&&(m.className=h,f&&f.icon||(m.innerHTML="&#160;",u.appendChild(m)));b.firstChild&&!f;)p.appendChild(b.firstChild);f||b.appendChild(u),f={hover:x,state:y,bcls:c,outer:b,inner:u,text:p,icon:m},e.data(b,"buttonElements",f),e.data(u,"buttonElements",f),e.data(p,"buttonElements",f),m&&e.data(m,"buttonElements",f)}return this},e.fn.buttonMarkup.defaults={corners:!0,shadow:!0,iconshadow:!0,wrapperEls:"span"};var s=function(){var i,o,r=e.mobile.buttonMarkup.hoverDelay;e.mobile.document.bind({"vmousedown vmousecancel vmouseup vmouseover vmouseout focus blur scrollstart":function(s){var l,d=e(n(s.target)),c=s.originalEvent&&/^touch/.test(s.originalEvent.type),h=s.type;d.length&&(l=d.attr("data-"+e.mobile.ns+"theme"),"vmousedown"===h?c?i=setTimeout(function(){a(d,"ui-btn-up-"+l,"ui-btn-down-"+l,t,"down")},r):a(d,"ui-btn-up-"+l,"ui-btn-down-"+l,t,"down"):"vmousecancel"===h||"vmouseup"===h?a(d,"ui-btn-down-"+l,"ui-btn-up-"+l,t,"up"):"vmouseover"===h||"focus"===h?c?o=setTimeout(function(){a(d,"ui-btn-up-"+l,"ui-btn-hover-"+l,!0,"")},r):a(d,"ui-btn-up-"+l,"ui-btn-hover-"+l,!0,""):("vmouseout"===h||"blur"===h||"scrollstart"===h)&&(a(d,"ui-btn-hover-"+l+" ui-btn-down-"+l,"ui-btn-up-"+l,!1,"up"),i&&clearTimeout(i),o&&clearTimeout(o)))},"focusin focus":function(t){e(n(t.target)).addClass(e.mobile.focusClass)},"focusout blur":function(t){e(n(t.target)).removeClass(e.mobile.focusClass)}}),s=null};e.mobile.document.bind("pagecreate create",function(t){e(":jqmData(role='button'), .ui-bar > a, .ui-header > a, .ui-footer > a, .ui-bar > :jqmData(role='controlgroup') > a",t.target).jqmEnhanceable().not("button, input, .ui-btn, :jqmData(role='none'), :jqmData(role='nojs')").buttonMarkup()})}(e),function(e,t){e.widget("mobile.collapsible",e.mobile.widget,{options:{expandCueText:" click to expand contents",collapseCueText:" click to collapse contents",collapsed:!0,heading:"h1,h2,h3,h4,h5,h6,legend",collapsedIcon:"plus",expandedIcon:"minus",iconpos:"left",theme:null,contentTheme:null,inset:!0,corners:!0,mini:!1,initSelector:":jqmData(role='collapsible')"},_create:function(){var i=this.element,n=this.options,a=i.addClass("ui-collapsible"),o=i.children(n.heading).first(),s=a.wrapInner("<div class='ui-collapsible-content'></div>").children(".ui-collapsible-content"),r=i.closest(":jqmData(role='collapsible-set')").addClass("ui-collapsible-set"),l="";o.is("legend")&&(o=e("<div role='heading'>"+o.html()+"</div>").insertBefore(o),o.next().remove()),r.length?(n.theme||(n.theme=r.jqmData("theme")||e.mobile.getInheritedTheme(r,"c")),n.contentTheme||(n.contentTheme=r.jqmData("content-theme")),n.collapsedIcon=i.jqmData("collapsed-icon")||r.jqmData("collapsed-icon")||n.collapsedIcon,n.expandedIcon=i.jqmData("expanded-icon")||r.jqmData("expanded-icon")||n.expandedIcon,n.iconpos=i.jqmData("iconpos")||r.jqmData("iconpos")||n.iconpos,n.inset=r.jqmData("inset")!==t?r.jqmData("inset"):!0,n.corners=!1,n.mini||(n.mini=r.jqmData("mini"))):n.theme||(n.theme=e.mobile.getInheritedTheme(i,"c")),n.inset&&(l+=" ui-collapsible-inset",n.corners&&(l+=" ui-corner-all")),n.contentTheme&&(l+=" ui-collapsible-themed-content",s.addClass("ui-body-"+n.contentTheme)),""!==l&&a.addClass(l),o.insertBefore(s).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:n.iconpos,icon:n.collapsedIcon,mini:n.mini,theme:n.theme}),a.bind("expand collapse",function(t){if(!t.isDefaultPrevented()){var i=e(this),a="collapse"===t.type;t.preventDefault(),o.toggleClass("ui-collapsible-heading-collapsed",a).find(".ui-collapsible-heading-status").text(a?n.expandCueText:n.collapseCueText).end().find(".ui-icon").toggleClass("ui-icon-"+n.expandedIcon,!a).toggleClass("ui-icon-"+n.collapsedIcon,a||n.expandedIcon===n.collapsedIcon).end().find("a").first().removeClass(e.mobile.activeBtnClass),i.toggleClass("ui-collapsible-collapsed",a),s.toggleClass("ui-collapsible-content-collapsed",a).attr("aria-hidden",a),s.trigger("updatelayout")}}).trigger(n.collapsed?"collapse":"expand"),o.bind("tap",function(){o.find("a").first().addClass(e.mobile.activeBtnClass)}).bind("click",function(e){var t=o.is(".ui-collapsible-heading-collapsed")?"expand":"collapse";a.trigger(t),e.preventDefault(),e.stopPropagation()})}}),e.mobile.document.bind("pagecreate create",function(t){e.mobile.collapsible.prototype.enhanceWithin(t.target)})}(e),function(e){e.mobile.behaviors.addFirstLastClasses={_getVisibles:function(e,t){var i;return t?i=e.not(".ui-screen-hidden"):(i=e.filter(":visible"),0===i.length&&(i=e.not(".ui-screen-hidden"))),i},_addFirstLastClasses:function(e,t,i){e.removeClass("ui-first-child ui-last-child"),t.eq(0).addClass("ui-first-child").end().last().addClass("ui-last-child"),i||this.element.trigger("updatelayout")}}}(e),function(e,t){e.widget("mobile.collapsibleset",e.mobile.widget,e.extend({options:{initSelector:":jqmData(role='collapsible-set')"},_create:function(){var i=this.element.addClass("ui-collapsible-set"),n=this.options;n.theme||(n.theme=e.mobile.getInheritedTheme(i,"c")),n.contentTheme||(n.contentTheme=i.jqmData("content-theme")),n.corners||(n.corners=i.jqmData("corners")),i.jqmData("inset")!==t&&(n.inset=i.jqmData("inset")),n.inset=n.inset!==t?n.inset:!0,n.corners=n.corners!==t?n.corners:!0,n.corners&&n.inset&&i.addClass("ui-corner-all"),i.jqmData("collapsiblebound")||i.jqmData("collapsiblebound",!0).bind("expand",function(t){var i=e(t.target).closest(".ui-collapsible");i.parent().is(":jqmData(role='collapsible-set')")&&i.siblings(".ui-collapsible").trigger("collapse")})},_init:function(){var e=this.element,t=e.children(":jqmData(role='collapsible')"),i=t.filter(":jqmData(collapsed='false')");
+this._refresh("true"),i.trigger("expand")},_refresh:function(t){var i=this.element.children(":jqmData(role='collapsible')");e.mobile.collapsible.prototype.enhance(i.not(".ui-collapsible")),this._addFirstLastClasses(i,this._getVisibles(i,t),t)},refresh:function(){this._refresh(!1)}},e.mobile.behaviors.addFirstLastClasses)),e.mobile.document.bind("pagecreate create",function(t){e.mobile.collapsibleset.prototype.enhanceWithin(t.target)})}(e),function(e){e.fn.fieldcontain=function(){return this.addClass("ui-field-contain ui-body ui-br").contents().filter(function(){return 3===this.nodeType&&!/\S/.test(this.nodeValue)}).remove()},e(i).bind("pagecreate create",function(t){e(":jqmData(role='fieldcontain')",t.target).jqmEnhanceable().fieldcontain()})}(e),function(e){e.fn.grid=function(t){return this.each(function(){var i,n=e(this),a=e.extend({grid:null},t),o=n.children(),s={solo:1,a:2,b:3,c:4,d:5},r=a.grid;if(!r)if(5>=o.length)for(var l in s)s[l]===o.length&&(r=l);else r="a",n.addClass("ui-grid-duo");i=s[r],n.addClass("ui-grid-"+r),o.filter(":nth-child("+i+"n+1)").addClass("ui-block-a"),i>1&&o.filter(":nth-child("+i+"n+2)").addClass("ui-block-b"),i>2&&o.filter(":nth-child("+i+"n+3)").addClass("ui-block-c"),i>3&&o.filter(":nth-child("+i+"n+4)").addClass("ui-block-d"),i>4&&o.filter(":nth-child("+i+"n+5)").addClass("ui-block-e")})}}(e),function(e,t){e.widget("mobile.navbar",e.mobile.widget,{options:{iconpos:"top",grid:null,initSelector:":jqmData(role='navbar')"},_create:function(){var n=this.element,a=n.find("a"),o=a.filter(":jqmData(icon)").length?this.options.iconpos:t;n.addClass("ui-navbar ui-mini").attr("role","navigation").find("ul").jqmEnhanceable().grid({grid:this.options.grid}),a.buttonMarkup({corners:!1,shadow:!1,inline:!0,iconpos:o}),n.delegate("a","vclick",function(t){var n=e(t.target).is("a")?e(this):e(this).parent("a");if(!n.is(".ui-disabled, .ui-btn-active")){a.removeClass(e.mobile.activeBtnClass),e(this).addClass(e.mobile.activeBtnClass);var o=e(this);e(i).one("pagehide",function(){o.removeClass(e.mobile.activeBtnClass)})}}),n.closest(".ui-page").bind("pagebeforeshow",function(){a.filter(".ui-state-persist").addClass(e.mobile.activeBtnClass)})}}),e.mobile.document.bind("pagecreate create",function(t){e.mobile.navbar.prototype.enhanceWithin(t.target)})}(e),function(e){var t={};e.widget("mobile.listview",e.mobile.widget,e.extend({options:{theme:null,countTheme:"c",headerTheme:"b",dividerTheme:"b",icon:"arrow-r",splitIcon:"arrow-r",splitTheme:"b",corners:!0,shadow:!0,inset:!1,initSelector:":jqmData(role='listview')"},_create:function(){var e=this,t="";t+=e.options.inset?" ui-listview-inset":"",e.options.inset&&(t+=e.options.corners?" ui-corner-all":"",t+=e.options.shadow?" ui-shadow":""),e.element.addClass(function(e,i){return i+" ui-listview"+t}),e.refresh(!0)},_findFirstElementByTagName:function(e,t,i,n){var a={};for(a[i]=a[n]=!0;e;){if(a[e.nodeName])return e;e=e[t]}return null},_getChildrenByTagName:function(t,i,n){var a=[],o={};for(o[i]=o[n]=!0,t=t.firstChild;t;)o[t.nodeName]&&a.push(t),t=t.nextSibling;return e(a)},_addThumbClasses:function(t){var i,n,a=t.length;for(i=0;a>i;i++)n=e(this._findFirstElementByTagName(t[i].firstChild,"nextSibling","img","IMG")),n.length&&(n.addClass("ui-li-thumb"),e(this._findFirstElementByTagName(n[0].parentNode,"parentNode","li","LI")).addClass(n.is(".ui-li-icon")?"ui-li-has-icon":"ui-li-has-thumb"))},refresh:function(t){this.parentPage=this.element.closest(".ui-page"),this._createSubPages();var n,a,o,s,r,l,d,c,h,u,p,m,f=this.options,g=this.element,b=g.jqmData("dividertheme")||f.dividerTheme,v=g.jqmData("splittheme"),_=g.jqmData("spliticon"),C=g.jqmData("icon"),x=this._getChildrenByTagName(g[0],"li","LI"),y=!!e.nodeName(g[0],"ol"),w=!e.support.cssPseudoElement,T=g.attr("start"),D={};y&&w&&g.find(".ui-li-dec").remove(),y&&(T||0===T?w?d=parseInt(T,10):(c=parseInt(T,10)-1,g.css("counter-reset","listnumbering "+c)):w&&(d=1)),f.theme||(f.theme=e.mobile.getInheritedTheme(this.element,"c"));for(var P=0,k=x.length;k>P;P++){if(n=x.eq(P),a="ui-li",t||!n.hasClass("ui-li")){o=n.jqmData("theme")||f.theme,s=this._getChildrenByTagName(n[0],"a","A");var E="list-divider"===n.jqmData("role");s.length&&!E?(p=n.jqmData("icon"),n.buttonMarkup({wrapperEls:"div",shadow:!1,corners:!1,iconpos:"right",icon:s.length>1||p===!1?!1:p||C||f.icon,theme:o}),p!==!1&&1===s.length&&n.addClass("ui-li-has-arrow"),s.first().removeClass("ui-link").addClass("ui-link-inherit"),s.length>1&&(a+=" ui-li-has-alt",r=s.last(),l=v||r.jqmData("theme")||f.splitTheme,m=r.jqmData("icon"),r.appendTo(n).attr("title",e.trim(r.getEncodedText())).addClass("ui-li-link-alt").empty().buttonMarkup({shadow:!1,corners:!1,theme:o,icon:!1,iconpos:"notext"}).find(".ui-btn-inner").append(e(i.createElement("span")).buttonMarkup({shadow:!0,corners:!0,theme:l,iconpos:"notext",icon:m||p||_||f.splitIcon})))):E?(a+=" ui-li-divider ui-bar-"+(n.jqmData("theme")||b),n.attr("role","heading"),y&&(T||0===T?w?d=parseInt(T,10):(h=parseInt(T,10)-1,n.css("counter-reset","listnumbering "+h)):w&&(d=1))):a+=" ui-li-static ui-btn-up-"+o}y&&w&&0>a.indexOf("ui-li-divider")&&(u=a.indexOf("ui-li-static")>0?n:n.find(".ui-link-inherit"),u.addClass("ui-li-jsnumbering").prepend("<span class='ui-li-dec'>"+d++ +". </span>")),D[a]||(D[a]=[]),D[a].push(n[0])}for(a in D)e(D[a]).addClass(a).children(".ui-btn-inner").addClass(a);g.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 t=e(this);t.prependTo(t.parent())}).end().find(".ui-li-count").each(function(){e(this).closest("li").addClass("ui-li-has-count")}).addClass("ui-btn-up-"+(g.jqmData("counttheme")||this.options.countTheme)+" ui-btn-corner-all"),this._addThumbClasses(x),this._addThumbClasses(g.find(".ui-link-inherit")),this._addFirstLastClasses(x,this._getVisibles(x,t),t),this._trigger("afterrefresh")},_idStringEscape:function(e){return e.replace(/[^a-zA-Z0-9]/g,"-")},_createSubPages:function(){var i,a=this.element,o=a.closest(".ui-page"),s=o.jqmData("url"),r=s||o[0][e.expando],l=a.attr("id"),d=this.options,c="data-"+e.mobile.ns,h=this,u=o.find(":jqmData(role='footer')").jqmData("id");if(t[r]===n&&(t[r]=-1),l=l||++t[r],e(a.find("li>ul, li>ol").toArray().reverse()).each(function(t){var n,o,r=e(this),h=r.attr("id")||l+"-"+t,p=r.parent(),m=e(r.prevAll().toArray().reverse()),f=m.length?m:e("<span>"+e.trim(p.contents()[0].nodeValue)+"</span>"),g=f.first().getEncodedText(),b=(s||"")+"&"+e.mobile.subPageUrlKey+"="+h,v=r.jqmData("theme")||d.theme,_=r.jqmData("counttheme")||a.jqmData("counttheme")||d.countTheme;i=!0,n=r.detach().wrap("<div "+c+"role='page' "+c+"url='"+b+"' "+c+"theme='"+v+"' "+c+"count-theme='"+_+"'><div "+c+"role='content'></div></div>").parent().before("<div "+c+"role='header' "+c+"theme='"+d.headerTheme+"'><div class='ui-title'>"+g+"</div></div>").after(u?e("<div "+c+"role='footer' "+c+"id='"+u+"'>"):"").parent().appendTo(e.mobile.pageContainer),n.page(),o=p.find("a:first"),o.length||(o=e("<a/>").html(f||g).prependTo(p.empty())),o.attr("href","#"+b)}).listview(),i&&o.is(":jqmData(external-page='true')")&&o.data("mobile-page").options.domCache===!1){var p=function(t,i){var n,a=i.nextPage,r=new e.Event("pageremove");i.nextPage&&(n=a.jqmData("url"),0!==n.indexOf(s+"&"+e.mobile.subPageUrlKey)&&(h.childPages().remove(),o.trigger(r),r.isDefaultPrevented()||o.removeWithDependents()))};o.unbind("pagehide.remove").bind("pagehide.remove",p)}},childPages:function(){var t=this.parentPage.jqmData("url");return e(":jqmData(url^='"+t+"&"+e.mobile.subPageUrlKey+"')")}},e.mobile.behaviors.addFirstLastClasses)),e.mobile.document.bind("pagecreate create",function(t){e.mobile.listview.prototype.enhanceWithin(t.target)})}(e),function(e){var t=e("meta[name=viewport]"),i=t.attr("content"),n=i+",maximum-scale=1, user-scalable=no",a=i+",maximum-scale=10, user-scalable=yes",o=/(user-scalable[\s]*=[\s]*no)|(maximum-scale[\s]*=[\s]*1)[$,\s]/.test(i);e.mobile.zoom=e.extend({},{enabled:!o,locked:!1,disable:function(i){o||e.mobile.zoom.locked||(t.attr("content",n),e.mobile.zoom.enabled=!1,e.mobile.zoom.locked=i||!1)},enable:function(i){o||e.mobile.zoom.locked&&i!==!0||(t.attr("content",a),e.mobile.zoom.enabled=!0,e.mobile.zoom.locked=!1)},restore:function(){o||(t.attr("content",i),e.mobile.zoom.enabled=!0)}})}(e),function(e){e.widget("mobile.textinput",e.mobile.widget,{options:{theme:null,mini:!1,preventFocusZoom:/iPhone|iPad|iPod/.test(navigator.platform)&&navigator.userAgent.indexOf("AppleWebKit")>-1,initSelector:"input[type='text'], input[type='search'], :jqmData(type='search'), input[type='number'], :jqmData(type='number'), input[type='password'], input[type='email'], input[type='url'], input[type='tel'], textarea, input[type='time'], input[type='date'], input[type='month'], input[type='week'], input[type='datetime'], input[type='datetime-local'], input[type='color'], input:not([type]), input[type='file']",clearBtn:!1,clearSearchButtonText:null,clearBtnText:"clear text",disabled:!1},_create:function(){function t(){setTimeout(function(){a.toggleClass("ui-input-clear-hidden",!s.val())},0)}var i,a,o=this,s=this.element,r=this.options,l=r.theme||e.mobile.getInheritedTheme(this.element,"c"),d=" ui-body-"+l,c=r.mini?" ui-mini":"",h=s.is("[type='search'], :jqmData(type='search')"),u=r.clearSearchButtonText||r.clearBtnText,p=s.is("textarea, :jqmData(type='range')"),m=!!r.clearBtn&&!p,f=s.is("input")&&!s.is(":jqmData(type='range')");if(e("label[for='"+s.attr("id")+"']").addClass("ui-input-text"),i=s.addClass("ui-input-text ui-body-"+l),s[0].autocorrect===n||e.support.touchOverflow||(s[0].setAttribute("autocorrect","off"),s[0].setAttribute("autocomplete","off")),h?i=s.wrap("<div class='ui-input-search ui-shadow-inset ui-btn-corner-all ui-btn-shadow ui-icon-searchfield"+d+c+"'></div>").parent():f&&(i=s.wrap("<div class='ui-input-text ui-shadow-inset ui-corner-all ui-btn-shadow"+d+c+"'></div>").parent()),m||h?(a=e("<a href='#' class='ui-input-clear' title='"+u+"'>"+u+"</a>").bind("click",function(e){s.val("").focus().trigger("change"),a.addClass("ui-input-clear-hidden"),e.preventDefault()}).appendTo(i).buttonMarkup({icon:"delete",iconpos:"notext",corners:!0,shadow:!0,mini:r.mini}),h||i.addClass("ui-input-has-clear"),t(),s.bind("paste cut keyup input focus change blur",t)):f||h||s.addClass("ui-corner-all ui-shadow-inset"+d+c),s.focus(function(){r.preventFocusZoom&&e.mobile.zoom.disable(!0),i.addClass(e.mobile.focusClass)}).blur(function(){i.removeClass(e.mobile.focusClass),r.preventFocusZoom&&e.mobile.zoom.enable(!0)}),s.is("textarea")){var g,b=15,v=100;this._keyup=function(){var e=s[0].scrollHeight,t=s[0].clientHeight;if(e>t){var i=parseFloat(s.css("padding-top")),n=parseFloat(s.css("padding-bottom")),a=i+n;s.height(e-a+b)}},s.on("keyup change input paste",function(){clearTimeout(g),g=setTimeout(o._keyup,v)}),this._on(!0,e.mobile.document,{pagechange:"_keyup"}),e.trim(s.val())&&this._on(!0,e.mobile.window,{load:"_keyup"})}s.attr("disabled")&&this.disable()},disable:function(){var e,t=this.element.is("[type='search'], :jqmData(type='search')"),i=this.element.is("input")&&!this.element.is(":jqmData(type='range')"),n=this.element.attr("disabled",!0)&&(i||t);return e=n?this.element.parent():this.element,e.addClass("ui-disabled"),this._setOption("disabled",!0)},enable:function(){var e,t=this.element.is("[type='search'], :jqmData(type='search')"),i=this.element.is("input")&&!this.element.is(":jqmData(type='range')"),n=this.element.attr("disabled",!1)&&(i||t);return e=n?this.element.parent():this.element,e.removeClass("ui-disabled"),this._setOption("disabled",!1)}}),e.mobile.document.bind("pagecreate create",function(t){e.mobile.textinput.prototype.enhanceWithin(t.target,!0)})}(e),function(e){e.mobile.listview.prototype.options.filter=!1,e.mobile.listview.prototype.options.filterPlaceholder="Filter items...",e.mobile.listview.prototype.options.filterTheme="c",e.mobile.listview.prototype.options.filterReveal=!1;var t=function(e,t){return-1===(""+e).toLowerCase().indexOf(t)};e.mobile.listview.prototype.options.filterCallback=t,e.mobile.document.delegate("ul, ol","listviewcreate",function(){var i=e(this),n=i.data("mobile-listview");if(n&&n.options.filter){n.options.filterReveal&&i.children().addClass("ui-screen-hidden");var a=e("<form>",{"class":"ui-listview-filter ui-bar-"+n.options.filterTheme,role:"search"}).submit(function(e){e.preventDefault(),s.blur()}),o=function(){var a,o=e(this),s=this.value.toLowerCase(),r=null,l=i.children(),d=o.jqmData("lastval")+"",c=!1,h="",u=n.options.filterCallback!==t;if(!d||d!==s){if(n._trigger("beforefilter","beforefilter",{input:this}),o.jqmData("lastval",s),u||s.length<d.length||0!==s.indexOf(d)?r=i.children():(r=i.children(":not(.ui-screen-hidden)"),!r.length&&n.options.filterReveal&&(r=i.children(".ui-screen-hidden"))),s){for(var p=r.length-1;p>=0;p--)a=e(r[p]),h=a.jqmData("filtertext")||a.text(),a.is("li:jqmData(role=list-divider)")?(a.toggleClass("ui-filter-hidequeue",!c),c=!1):n.options.filterCallback(h,s,a)?a.toggleClass("ui-filter-hidequeue",!0):c=!0;r.filter(":not(.ui-filter-hidequeue)").toggleClass("ui-screen-hidden",!1),r.filter(".ui-filter-hidequeue").toggleClass("ui-screen-hidden",!0).toggleClass("ui-filter-hidequeue",!1)}else r.toggleClass("ui-screen-hidden",!!n.options.filterReveal);n._addFirstLastClasses(l,n._getVisibles(l,!1),!1)}},s=e("<input>",{placeholder:n.options.filterPlaceholder}).attr("data-"+e.mobile.ns+"type","search").jqmData("lastval","").bind("keyup change input",o).appendTo(a).textinput();n.options.inset&&a.addClass("ui-listview-filter-inset"),a.bind("submit",function(){return!1}).insertBefore(i)}})}(e),function(e){e.mobile.listview.prototype.options.autodividers=!1,e.mobile.listview.prototype.options.autodividersSelector=function(t){var i=e.trim(t.text())||null;return i?i=i.slice(0,1).toUpperCase():null},e.mobile.document.delegate("ul,ol","listviewcreate",function(){var t=e(this),n=t.data("mobile-listview");if(n&&n.options.autodividers){var a=function(){t.find("li:jqmData(role='list-divider')").remove();for(var a,o,s=t.find("li"),r=null,l=0;s.length>l;l++){if(a=s[l],o=n.options.autodividersSelector(e(a)),o&&r!==o){var d=i.createElement("li");d.appendChild(i.createTextNode(o)),d.setAttribute("data-"+e.mobile.ns+"role","list-divider"),a.parentNode.insertBefore(d,a)}r=o}},o=function(){t.unbind("listviewafterrefresh",o),a(),n.refresh(),t.bind("listviewafterrefresh",o)};o()}})}(e),function(e){e(i).bind("pagecreate create",function(t){e(":jqmData(role='nojs')",t.target).addClass("ui-nojs")})}(e),function(e){e.mobile.behaviors.formReset={_handleFormReset:function(){this._on(this.element.closest("form"),{reset:function(){this._delay("_reset")}})}}}(e),function(e){e.widget("mobile.checkboxradio",e.mobile.widget,e.extend({options:{theme:null,mini:!1,initSelector:"input[type='checkbox'],input[type='radio']"},_create:function(){var t=this,a=this.element,o=this.options,s=function(e,t){return e.jqmData(t)||e.closest("form, fieldset").jqmData(t)},r=e(a).closest("label"),l=r.length?r:e(a).closest("form, fieldset, :jqmData(role='page'), :jqmData(role='dialog')").find("label").filter("[for='"+a[0].id+"']").first(),d=a[0].type,c=s(a,"mini")||o.mini,h=d+"-on",u=d+"-off",p=s(a,"iconpos"),m="ui-"+h,f="ui-"+u;if("checkbox"===d||"radio"===d){e.extend(this,{label:l,inputtype:d,checkedClass:m,uncheckedClass:f,checkedicon:h,uncheckedicon:u}),o.theme||(o.theme=e.mobile.getInheritedTheme(this.element,"c")),l.buttonMarkup({theme:o.theme,icon:u,shadow:!1,mini:c,iconpos:p});var g=i.createElement("div");g.className="ui-"+d,a.add(l).wrapAll(g),l.bind({vmouseover:function(t){e(this).parent().is(".ui-disabled")&&t.stopPropagation()},vclick:function(e){return a.is(":disabled")?(e.preventDefault(),n):(t._cacheVals(),a.prop("checked","radio"===d&&!0||!a.prop("checked")),a.triggerHandler("click"),t._getInputSet().not(a).prop("checked",!1),t._updateAll(),!1)}}),a.bind({vmousedown:function(){t._cacheVals()},vclick:function(){var i=e(this);i.is(":checked")?(i.prop("checked",!0),t._getInputSet().not(i).prop("checked",!1)):i.prop("checked",!1),t._updateAll()},focus:function(){l.addClass(e.mobile.focusClass)},blur:function(){l.removeClass(e.mobile.focusClass)}}),this._handleFormReset(),this.refresh()}},_cacheVals:function(){this._getInputSet().each(function(){e(this).jqmData("cacheVal",this.checked)})},_getInputSet:function(){return"checkbox"===this.inputtype?this.element:this.element.closest("form, :jqmData(role='page'), :jqmData(role='dialog')").find("input[name='"+this.element[0].name+"'][type='"+this.inputtype+"']")},_updateAll:function(){var t=this;this._getInputSet().each(function(){var i=e(this);(this.checked||"checkbox"===t.inputtype)&&i.trigger("change")}).checkboxradio("refresh")},_reset:function(){this.refresh()},refresh:function(){var t=this.element[0],i=" "+e.mobile.activeBtnClass,n=this.checkedClass+(this.element.parents(".ui-controlgroup-horizontal").length?i:""),a=this.label;t.checked?a.removeClass(this.uncheckedClass+i).addClass(n).buttonMarkup({icon:this.checkedicon}):a.removeClass(n).addClass(this.uncheckedClass).buttonMarkup({icon:this.uncheckedicon}),t.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")}},e.mobile.behaviors.formReset)),e.mobile.document.bind("pagecreate create",function(t){e.mobile.checkboxradio.prototype.enhanceWithin(t.target,!0)})}(e),function(e){e.widget("mobile.button",e.mobile.widget,{options:{theme:null,icon:null,iconpos:null,corners:!0,shadow:!0,iconshadow:!0,inline:null,mini:null,initSelector:"button, [type='button'], [type='submit'], [type='reset']"},_create:function(){var t,i=this.element,a=function(e){var t,i={};for(t in e)null!==e[t]&&"initSelector"!==t&&(i[t]=e[t]);return i}(this.options),o="";return"A"===i[0].tagName?(i.hasClass("ui-btn")||i.buttonMarkup(),n):(this.options.theme||(this.options.theme=e.mobile.getInheritedTheme(this.element,"c")),~i[0].className.indexOf("ui-btn-left")&&(o="ui-btn-left"),~i[0].className.indexOf("ui-btn-right")&&(o="ui-btn-right"),("submit"===i.attr("type")||"reset"===i.attr("type"))&&(o?o+=" ui-submit":o="ui-submit"),e("label[for='"+i.attr("id")+"']").addClass("ui-submit"),this.button=e("<div></div>")[i.html()?"html":"text"](i.html()||i.val()).insertBefore(i).buttonMarkup(a).addClass(o).append(i.addClass("ui-btn-hidden")),t=this.button,i.bind({focus:function(){t.addClass(e.mobile.focusClass)},blur:function(){t.removeClass(e.mobile.focusClass)}}),this.refresh(),n)},_setOption:function(t,i){var n={};n[t]=i,"initSelector"!==t&&(this.button.buttonMarkup(n),this.element.attr("data-"+(e.mobile.ns||"")+t.replace(/([A-Z])/,"-$1").toLowerCase(),i)),this._super("_setOption",t,i)},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 t=this.element;t.prop("disabled")?this.disable():this.enable(),e(this.button.data("buttonElements").text)[t.html()?"html":"text"](t.html()||t.val())}}),e.mobile.document.bind("pagecreate create",function(t){e.mobile.button.prototype.enhanceWithin(t.target,!0)})}(e),function(e,n){e.widget("mobile.slider",e.mobile.widget,e.extend({widgetEventPrefix:"slide",options:{theme:null,trackTheme:null,disabled:!1,initSelector:"input[type='range'], :jqmData(type='range'), :jqmData(role='slider')",mini:!1,highlight:!1},_create:function(){var a,o,s=this,r=this.element,l=e.mobile.getInheritedTheme(r,"c"),d=this.options.theme||l,c=this.options.trackTheme||l,h=r[0].nodeName.toLowerCase(),u=(this.isToggleSwitch="select"===h,r.parent().is(":jqmData(role='rangeslider')")),p=this.isToggleSwitch?"ui-slider-switch":"",m=r.attr("id"),f=e("[for='"+m+"']"),g=f.attr("id")||m+"-label",b=f.attr("id",g),v=this.isToggleSwitch?0:parseFloat(r.attr("min")),_=this.isToggleSwitch?r.find("option").length-1:parseFloat(r.attr("max")),C=t.parseFloat(r.attr("step")||1),x=this.options.mini||r.jqmData("mini")?" ui-mini":"",y=i.createElement("a"),w=e(y),T=i.createElement("div"),D=e(T),P=this.options.highlight&&!this.isToggleSwitch?function(){var t=i.createElement("div");return t.className="ui-slider-bg "+e.mobile.activeBtnClass+" ui-btn-corner-all",e(t).prependTo(D)}():!1;if(y.setAttribute("href","#"),T.setAttribute("role","application"),T.className=[this.isToggleSwitch?"ui-slider ":"ui-slider-track ",p," ui-btn-down-",c," ui-btn-corner-all",x].join(""),y.className="ui-slider-handle",T.appendChild(y),w.buttonMarkup({corners:!0,theme:d,shadow:!0}).attr({role:"slider","aria-valuemin":v,"aria-valuemax":_,"aria-valuenow":this._value(),"aria-valuetext":this._value(),title:this._value(),"aria-labelledby":g}),e.extend(this,{slider:D,handle:w,type:h,step:C,max:_,min:v,valuebg:P,isRangeslider:u,dragging:!1,beforeStart:null,userModified:!1,mouseMoved:!1}),this.isToggleSwitch){o=i.createElement("div"),o.className="ui-slider-inneroffset";for(var k=0,E=T.childNodes.length;E>k;k++)o.appendChild(T.childNodes[k]);T.appendChild(o),w.addClass("ui-slider-handle-snapping"),a=r.find("option");for(var q=0,j=a.length;j>q;q++){var S=q?"a":"b",A=q?" "+e.mobile.activeBtnClass:" ui-btn-down-"+c,N=(i.createElement("div"),i.createElement("span"));N.className=["ui-slider-label ui-slider-label-",S,A," ui-btn-corner-all"].join(""),N.setAttribute("role","img"),N.appendChild(i.createTextNode(a[q].innerHTML)),e(N).prependTo(D)}s._labels=e(".ui-slider-label",D)}b.addClass("ui-slider"),r.addClass(this.isToggleSwitch?"ui-slider-switch":"ui-slider-input"),this._on(r,{change:"_controlChange",keyup:"_controlKeyup",blur:"_controlBlur",vmouseup:"_controlVMouseUp"}),D.bind("vmousedown",e.proxy(this._sliderVMouseDown,this)).bind("vclick",!1),this._on(i,{vmousemove:"_preventDocumentDrag"}),this._on(D.add(i),{vmouseup:"_sliderVMouseUp"}),D.insertAfter(r),this.isToggleSwitch||u||(o=this.options.mini?"<div class='ui-slider ui-mini'>":"<div class='ui-slider'>",r.add(D).wrapAll(o)),this.isToggleSwitch&&this.handle.bind({focus:function(){D.addClass(e.mobile.focusClass)},blur:function(){D.removeClass(e.mobile.focusClass)}}),this._on(this.handle,{vmousedown:"_handleVMouseDown",keydown:"_handleKeydown",keyup:"_handleKeyup"}),this.handle.bind("vclick",!1),this._handleFormReset(),this.refresh(n,n,!0)},_controlChange:function(e){return this._trigger("controlchange",e)===!1?!1:(this.mouseMoved||this.refresh(this._value(),!0),n)},_controlKeyup:function(){this.refresh(this._value(),!0,!0)},_controlBlur:function(){this.refresh(this._value(),!0)},_controlVMouseUp:function(){this._checkedRefresh()},_handleVMouseDown:function(){this.handle.focus()},_handleKeydown:function(t){var i=this._value();if(!this.options.disabled){switch(t.keyCode){case e.mobile.keyCode.HOME:case e.mobile.keyCode.END:case e.mobile.keyCode.PAGE_UP:case e.mobile.keyCode.PAGE_DOWN:case e.mobile.keyCode.UP:case e.mobile.keyCode.RIGHT:case e.mobile.keyCode.DOWN:case e.mobile.keyCode.LEFT:t.preventDefault(),this._keySliding||(this._keySliding=!0,this.handle.addClass("ui-state-active"))}switch(t.keyCode){case e.mobile.keyCode.HOME:this.refresh(this.min);break;case e.mobile.keyCode.END:this.refresh(this.max);break;case e.mobile.keyCode.PAGE_UP:case e.mobile.keyCode.UP:case e.mobile.keyCode.RIGHT:this.refresh(i+this.step);break;case e.mobile.keyCode.PAGE_DOWN:case e.mobile.keyCode.DOWN:case e.mobile.keyCode.LEFT:this.refresh(i-this.step)}}},_handleKeyup:function(){this._keySliding&&(this._keySliding=!1,this.handle.removeClass("ui-state-active"))},_sliderVMouseDown:function(e){return this.options.disabled||1!==e.which&&0!==e.which?!1:this._trigger("beforestart",e)===!1?!1:(this.dragging=!0,this.userModified=!1,this.mouseMoved=!1,this.isToggleSwitch&&(this.beforeStart=this.element[0].selectedIndex),this.refresh(e),this._trigger("start"),!1)},_sliderVMouseUp:function(){return this.dragging?(this.dragging=!1,this.isToggleSwitch&&(this.handle.addClass("ui-slider-handle-snapping"),this.mouseMoved?this.userModified?this.refresh(0===this.beforeStart?1:0):this.refresh(this.beforeStart):this.refresh(0===this.beforeStart?1:0)),this.mouseMoved=!1,this._trigger("stop"),!1):n},_preventDocumentDrag:function(e){return this._trigger("drag",e)===!1?!1:this.dragging&&!this.options.disabled?(this.mouseMoved=!0,this.isToggleSwitch&&this.handle.removeClass("ui-slider-handle-snapping"),this.refresh(e),this.userModified=this.beforeStart!==this.element[0].selectedIndex,!1):n},_checkedRefresh:function(){this.value!==this._value()&&this.refresh(this._value())},_value:function(){return this.isToggleSwitch?this.element[0].selectedIndex:parseFloat(this.element.val())},_reset:function(){this.refresh(n,!1,!0)},refresh:function(t,a,o){var s,r,l,d,c=this,h=e.mobile.getInheritedTheme(this.element,"c"),u=this.options.theme||h,p=this.options.trackTheme||h;c.slider[0].className=[this.isToggleSwitch?"ui-slider ui-slider-switch":"ui-slider-track"," ui-btn-down-"+p," ui-btn-corner-all",this.options.mini?" ui-mini":""].join(""),(this.options.disabled||this.element.attr("disabled"))&&this.disable(),this.value=this._value(),this.options.highlight&&!this.isToggleSwitch&&0===this.slider.find(".ui-slider-bg").length&&(this.valuebg=function(){var t=i.createElement("div");return t.className="ui-slider-bg "+e.mobile.activeBtnClass+" ui-btn-corner-all",e(t).prependTo(c.slider)}()),this.handle.buttonMarkup({corners:!0,theme:u,shadow:!0});var m,f,g=this.element,b=!this.isToggleSwitch,v=b?[]:g.find("option"),_=b?parseFloat(g.attr("min")):0,C=b?parseFloat(g.attr("max")):v.length-1,x=b&&parseFloat(g.attr("step"))>0?parseFloat(g.attr("step")):1;if("object"==typeof t){if(l=t,d=8,s=this.slider.offset().left,r=this.slider.width(),m=r/((C-_)/x),!this.dragging||s-d>l.pageX||l.pageX>s+r+d)return;f=m>1?100*((l.pageX-s)/r):Math.round(100*((l.pageX-s)/r))}else null==t&&(t=b?parseFloat(g.val()||0):g[0].selectedIndex),f=100*((parseFloat(t)-_)/(C-_));if(!isNaN(f)){var y=f/100*(C-_)+_,w=(y-_)%x,T=y-w;2*Math.abs(w)>=x&&(T+=w>0?x:-x);var D=100/((C-_)/x);if(y=parseFloat(T.toFixed(5)),m===n&&(m=r/((C-_)/x)),m>1&&b&&(f=(y-_)*D*(1/x)),0>f&&(f=0),f>100&&(f=100),_>y&&(y=_),y>C&&(y=C),this.handle.css("left",f+"%"),this.handle[0].setAttribute("aria-valuenow",b?y:v.eq(y).attr("value")),this.handle[0].setAttribute("aria-valuetext",b?y:v.eq(y).getEncodedText()),this.handle[0].setAttribute("title",b?y:v.eq(y).getEncodedText()),this.valuebg&&this.valuebg.css("width",f+"%"),this._labels){var P=100*(this.handle.width()/this.slider.width()),k=f&&P+(100-P)*f/100,E=100===f?0:Math.min(P+100-k,100);this._labels.each(function(){var t=e(this).is(".ui-slider-label-a");e(this).width((t?k:E)+"%")})}if(!o){var q=!1;if(b?(q=g.val()!==y,g.val(y)):(q=g[0].selectedIndex!==y,g[0].selectedIndex=y),this._trigger("beforechange",t)===!1)return!1;!a&&q&&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)}},e.mobile.behaviors.formReset)),e.mobile.document.bind("pagecreate create",function(t){e.mobile.slider.prototype.enhanceWithin(t.target,!0)})}(e),function(e){e.widget("mobile.rangeslider",e.mobile.widget,{options:{theme:null,trackTheme:null,disabled:!1,initSelector:":jqmData(role='rangeslider')",mini:!1,highlight:!0},_create:function(){var t,i=this.element,n=this.options.mini?"ui-rangeslider ui-mini":"ui-rangeslider",a=i.find("input").first(),o=i.find("input").last(),s=i.find("label").first(),r=e.data(a.get(0),"mobileSlider").slider,l=e.data(o.get(0),"mobileSlider").slider,d=e.data(a.get(0),"mobileSlider").handle,c=e('<div class="ui-rangeslider-sliders" />').appendTo(i);i.find("label").length>1&&(t=i.find("label").last().hide()),a.addClass("ui-rangeslider-first"),o.addClass("ui-rangeslider-last"),i.addClass(n),r.appendTo(c),l.appendTo(c),s.prependTo(i),d.prependTo(l),e.extend(this,{_inputFirst:a,_inputLast:o,_sliderFirst:r,_sliderLast:l,_targetVal:null,_sliderTarget:!1,_sliders:c,_proxy:!1}),this.refresh(),this._on(this.element.find("input.ui-slider-input"),{slidebeforestart:"_slidebeforestart",slidestop:"_slidestop",slidedrag:"_slidedrag",slidebeforechange:"_change",blur:"_change",keyup:"_change"}),this._on({mousedown:"_change"}),this._on(this.element.closest("form"),{reset:"_handleReset"}),this._on(d,{vmousedown:"_dragFirstHandle"})},_handleReset:function(){var e=this;setTimeout(function(){e._updateHighlight()},0)},_dragFirstHandle:function(t){return e.data(this._inputFirst.get(0),"mobileSlider").dragging=!0,e.data(this._inputFirst.get(0),"mobileSlider").refresh(t),!1},_slidedrag:function(t){var i=e(t.target).is(this._inputFirst),a=i?this._inputLast:this._inputFirst;return this._sliderTarget=!1,"first"===this._proxy&&i||"last"===this._proxy&&!i?(e.data(a.get(0),"mobileSlider").dragging=!0,e.data(a.get(0),"mobileSlider").refresh(t),!1):n},_slidestop:function(t){var i=e(t.target).is(this._inputFirst);this._proxy=!1,this.element.find("input").trigger("vmouseup"),this._sliderFirst.css("z-index",i?1:"")},_slidebeforestart:function(t){this._sliderTarget=!1,e(t.originalEvent.target).hasClass("ui-slider-track")&&(this._sliderTarget=!0,this._targetVal=e(t.target).val())},_setOption:function(e){this._superApply(e),this.refresh()},refresh:function(){var e=this.element,t=this.options;e.find("input").slider({theme:t.theme,trackTheme:t.trackTheme,disabled:t.disabled,mini:t.mini,highlight:t.highlight}).slider("refresh"),this._updateHighlight()},_change:function(t){if("keyup"===t.type)return this._updateHighlight(),!1;var i=this,a=parseFloat(this._inputFirst.val(),10),o=parseFloat(this._inputLast.val(),10),s=e(t.target).hasClass("ui-rangeslider-first"),r=s?this._inputFirst:this._inputLast,l=s?this._inputLast:this._inputFirst;if(this._inputFirst.val()>this._inputLast.val()&&"mousedown"===t.type&&!e(t.target).hasClass("ui-slider-handle"))r.blur();else if("mousedown"===t.type)return;return a>o&&!this._sliderTarget?(r.val(s?o:a).slider("refresh"),this._trigger("normalize")):a>o&&(r.val(this._targetVal).slider("refresh"),setTimeout(function(){l.val(s?a:o).slider("refresh"),e.data(l.get(0),"mobileSlider").handle.focus(),i._sliderFirst.css("z-index",s?"":1),i._trigger("normalize")},0),this._proxy=s?"first":"last"),a===o?(e.data(r.get(0),"mobileSlider").handle.css("z-index",1),e.data(l.get(0),"mobileSlider").handle.css("z-index",0)):(e.data(l.get(0),"mobileSlider").handle.css("z-index",""),e.data(r.get(0),"mobileSlider").handle.css("z-index","")),this._updateHighlight(),a>=o?!1:n},_updateHighlight:function(){var t=parseInt(e.data(this._inputFirst.get(0),"mobileSlider").handle.get(0).style.left,10),i=parseInt(e.data(this._inputLast.get(0),"mobileSlider").handle.get(0).style.left,10),n=i-t;this.element.find(".ui-slider-bg").css({"margin-left":t+"%",width:n+"%"})},_destroy:function(){this.element.removeClass("ui-rangeslider ui-mini").find("label").show(),this._inputFirst.after(this._sliderFirst),this._inputLast.after(this._sliderLast),this._sliders.remove(),this.element.find("input").removeClass("ui-rangeslider-first ui-rangeslider-last").slider("destroy")}}),e.widget("mobile.rangeslider",e.mobile.rangeslider,e.mobile.behaviors.formReset),e(i).bind("pagecreate create",function(t){e.mobile.rangeslider.prototype.enhanceWithin(t.target,!0)})}(e),function(e){e.widget("mobile.selectmenu",e.mobile.widget,e.extend({options:{theme:null,disabled:!1,icon:"arrow-d",iconpos:"right",inline:!1,corners:!0,shadow:!0,iconshadow:!0,overlayTheme:"a",dividerTheme:"b",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 e("<div/>")
+},_setDisabled:function(e){return this.element.attr("disabled",e),this.button.attr("aria-disabled",e),this._setOption("disabled",e)},_focusButton:function(){var e=this;setTimeout(function(){e.button.focus()},40)},_selectOptions:function(){return this.select.find("option")},_preExtension:function(){var t="";~this.element[0].className.indexOf("ui-btn-left")&&(t=" ui-btn-left"),~this.element[0].className.indexOf("ui-btn-right")&&(t=" ui-btn-right"),this.select=this.element.removeClass("ui-btn-left ui-btn-right").wrap("<div class='ui-select"+t+"'>"),this.selectID=this.select.attr("id"),this.label=e("label[for='"+this.selectID+"']").addClass("ui-select"),this.isMultiple=this.select[0].multiple,this.options.theme||(this.options.theme=e.mobile.getInheritedTheme(this.select,"c"))},_destroy:function(){var e=this.element.parents(".ui-select");e.length>0&&(e.is(".ui-btn-left, .ui-btn-right")&&this.element.addClass(e.is(".ui-btn-left")?"ui-btn-left":"ui-btn-right"),this.element.insertAfter(e),e.remove())},_create:function(){this._preExtension(),this._trigger("beforeCreate"),this.button=this._button();var i=this,n=this.options,a=n.inline||this.select.jqmData("inline"),o=n.mini||this.select.jqmData("mini"),s=n.icon?n.iconpos||this.select.jqmData("iconpos"):!1,r=(-1===this.select[0].selectedIndex?0:this.select[0].selectedIndex,this.button.insertBefore(this.select).buttonMarkup({theme:n.theme,icon:n.icon,iconpos:s,inline:a,corners:n.corners,shadow:n.shadow,iconshadow:n.iconshadow,mini:o}));this.setButtonText(),n.nativeMenu&&t.opera&&t.opera.version&&r.addClass("ui-select-nativeonly"),this.isMultiple&&(this.buttonCount=e("<span>").addClass("ui-li-count ui-btn-up-c ui-btn-corner-all").hide().appendTo(r.addClass("ui-li-has-count"))),(n.disabled||this.element.attr("disabled"))&&this.disable(),this.select.change(function(){i.refresh(),n.nativeMenu&&this.blur()}),this._handleFormReset(),this.build()},build:function(){var t=this;this.select.appendTo(t.button).bind("vmousedown",function(){t.button.addClass(e.mobile.activeBtnClass)}).bind("focus",function(){t.button.addClass(e.mobile.focusClass)}).bind("blur",function(){t.button.removeClass(e.mobile.focusClass)}).bind("focus vmouseover",function(){t.button.trigger("vmouseover")}).bind("vmousemove",function(){t.button.removeClass(e.mobile.activeBtnClass)}).bind("change blur vmouseout",function(){t.button.trigger("vmouseout").removeClass(e.mobile.activeBtnClass)}).bind("change blur",function(){t.button.removeClass("ui-btn-down-"+t.options.theme)}),t.button.bind("vmousedown",function(){t.options.preventFocusZoom&&e.mobile.zoom.disable(!0)}),t.label.bind("click focus",function(){t.options.preventFocusZoom&&e.mobile.zoom.disable(!0)}),t.select.bind("focus",function(){t.options.preventFocusZoom&&e.mobile.zoom.disable(!0)}),t.button.bind("mouseup",function(){t.options.preventFocusZoom&&setTimeout(function(){e.mobile.zoom.enable(!0)},0)}),t.select.bind("blur",function(){t.options.preventFocusZoom&&e.mobile.zoom.enable(!0)})},selected:function(){return this._selectOptions().filter(":selected")},selectedIndices:function(){var e=this;return this.selected().map(function(){return e._selectOptions().index(this)}).get()},setButtonText:function(){var t=this,n=this.selected(),a=this.placeholder,o=e(i.createElement("span"));this.button.find(".ui-btn-text").html(function(){return a=n.length?n.map(function(){return e(this).text()}).get().join(", "):t.placeholder,o.text(a).addClass(t.select.attr("class")).addClass(n.attr("class"))})},setButtonCount:function(){var e=this.selected();this.isMultiple&&this.buttonCount[e.length>1?"show":"hide"]().text(e.length)},_reset:function(){this.refresh()},refresh:function(){this.setButtonText(),this.setButtonCount()},open:e.noop,close:e.noop,disable:function(){this._setDisabled(!0),this.button.addClass("ui-disabled")},enable:function(){this._setDisabled(!1),this.button.removeClass("ui-disabled")}},e.mobile.behaviors.formReset)),e.mobile.document.bind("pagecreate create",function(t){e.mobile.selectmenu.prototype.enhanceWithin(t.target,!0)})}(e),function(e,n){function a(e,t,i,n){var a=n;return a=t>e?i+(e-t)/2:Math.min(Math.max(i,n-t/2),i+e-t)}function o(){var i=e.mobile.window;return{x:i.scrollLeft(),y:i.scrollTop(),cx:t.innerWidth||i.width(),cy:t.innerHeight||i.height()}}e.widget("mobile.popup",e.mobile.widget,{options:{theme:null,overlayTheme:null,shadow:!0,corners:!0,transition:"none",positionTo:"origin",tolerance:null,initSelector:":jqmData(role='popup')",closeLinkSelector:"a:jqmData(rel='back')",closeLinkEvents:"click.popup",navigateEvents:"navigate.popup",closeEvents:"navigate.popup pagebeforechange.popup",dismissible:!0,history:!e.mobile.browser.oldIE},_eatEventAndClose:function(e){return e.preventDefault(),e.stopImmediatePropagation(),this.options.dismissible&&this.close(),!1},_resizeScreen:function(){var e=this._ui.container.outerHeight(!0);this._ui.screen.removeAttr("style"),e>this._ui.screen.height()&&this._ui.screen.height(e)},_handleWindowKeyUp:function(t){return this._isOpen&&t.keyCode===e.mobile.keyCode.ESCAPE?this._eatEventAndClose(t):n},_expectResizeEvent:function(){var t=o();if(this._resizeData){if(t.x===this._resizeData.winCoords.x&&t.y===this._resizeData.winCoords.y&&t.cx===this._resizeData.winCoords.cx&&t.cy===this._resizeData.winCoords.cy)return!1;clearTimeout(this._resizeData.timeoutId)}return this._resizeData={timeoutId:setTimeout(e.proxy(this,"_resizeTimeout"),200),winCoords:t},!0},_resizeTimeout:function(){this._isOpen?this._expectResizeEvent()||(this._ui.container.hasClass("ui-popup-hidden")&&(this._ui.container.removeClass("ui-popup-hidden"),this.reposition({positionTo:"window"}),this._ignoreResizeEvents()),this._resizeScreen(),this._resizeData=null,this._orientationchangeInProgress=!1):(this._resizeData=null,this._orientationchangeInProgress=!1)},_ignoreResizeEvents:function(){var e=this;this._ignoreResizeTo&&clearTimeout(this._ignoreResizeTo),this._ignoreResizeTo=setTimeout(function(){e._ignoreResizeTo=0},1e3)},_handleWindowResize:function(){this._isOpen&&0===this._ignoreResizeTo&&(!this._expectResizeEvent()&&!this._orientationchangeInProgress||this._ui.container.hasClass("ui-popup-hidden")||this._ui.container.addClass("ui-popup-hidden").removeAttr("style"))},_handleWindowOrientationchange:function(){!this._orientationchangeInProgress&&this._isOpen&&0===this._ignoreResizeTo&&(this._expectResizeEvent(),this._orientationchangeInProgress=!0)},_handleDocumentFocusIn:function(t){var n,a=t.target,o=this._ui;if(this._isOpen){if(a!==o.container[0]){if(n=e(t.target),0===n.parents().filter(o.container[0]).length)return e(i.activeElement).one("focus",function(){n.blur()}),o.focusElement.focus(),t.preventDefault(),t.stopImmediatePropagation(),!1;o.focusElement[0]===o.container[0]&&(o.focusElement=n)}this._ignoreResizeEvents()}},_create:function(){var t={screen:e("<div class='ui-screen-hidden ui-popup-screen'></div>"),placeholder:e("<div style='display: none;'><!-- placeholder --></div>"),container:e("<div class='ui-popup-container ui-popup-hidden'></div>")},i=this.element.closest(".ui-page"),a=this.element.attr("id"),o=this;this.options.history=this.options.history&&e.mobile.ajaxEnabled&&e.mobile.hashListeningEnabled,0===i.length&&(i=e("body")),this.options.container=this.options.container||e.mobile.pageContainer,i.append(t.screen),t.container.insertAfter(t.screen),t.placeholder.insertAfter(this.element),a&&(t.screen.attr("id",a+"-screen"),t.container.attr("id",a+"-popup"),t.placeholder.html("<!-- placeholder for "+a+" -->")),t.container.append(this.element),t.focusElement=t.container,this.element.addClass("ui-popup"),e.extend(this,{_scrollTop:0,_page:i,_ui:t,_fallbackTransition:"",_currentTransition:!1,_prereqs:null,_isOpen:!1,_tolerance:null,_resizeData:null,_ignoreResizeTo:0,_orientationchangeInProgress:!1}),e.each(this.options,function(e,t){o.options[e]=n,o._setOption(e,t,!0)}),t.screen.bind("vclick",e.proxy(this,"_eatEventAndClose")),this._on(e.mobile.window,{orientationchange:e.proxy(this,"_handleWindowOrientationchange"),resize:e.proxy(this,"_handleWindowResize"),keyup:e.proxy(this,"_handleWindowKeyUp")}),this._on(e.mobile.document,{focusin:e.proxy(this,"_handleDocumentFocusIn")})},_applyTheme:function(e,t,i){for(var n,a=(e.attr("class")||"").split(" "),o=null,s=t+"";a.length>0;){if(o=a.pop(),n=RegExp("^ui-"+i+"-([a-z])$").exec(o),n&&n.length>1){o=n[1];break}o=null}t!==o&&(e.removeClass("ui-"+i+"-"+o),null!==t&&"none"!==t&&e.addClass("ui-"+i+"-"+s))},_setTheme:function(e){this._applyTheme(this.element,e,"body")},_setOverlayTheme:function(e){this._applyTheme(this._ui.screen,e,"overlay"),this._isOpen&&this._ui.screen.addClass("in")},_setShadow:function(e){this.element.toggleClass("ui-overlay-shadow",e)},_setCorners:function(e){this.element.toggleClass("ui-corner-all",e)},_applyTransition:function(t){this._ui.container.removeClass(this._fallbackTransition),t&&"none"!==t&&(this._fallbackTransition=e.mobile._maybeDegradeTransition(t),"none"===this._fallbackTransition&&(this._fallbackTransition=""),this._ui.container.addClass(this._fallbackTransition))},_setTransition:function(e){this._currentTransition||this._applyTransition(e)},_setTolerance:function(t){var i={t:30,r:15,b:30,l:15};if(t!==n){var a=(t+"").split(",");switch(e.each(a,function(e,t){a[e]=parseInt(t,10)}),a.length){case 1:isNaN(a[0])||(i.t=i.r=i.b=i.l=a[0]);break;case 2:isNaN(a[0])||(i.t=i.b=a[0]),isNaN(a[1])||(i.l=i.r=a[1]);break;case 4:isNaN(a[0])||(i.t=a[0]),isNaN(a[1])||(i.r=a[1]),isNaN(a[2])||(i.b=a[2]),isNaN(a[3])||(i.l=a[3]);break;default:}}this._tolerance=i},_setOption:function(t,i){var a,o="_set"+t.charAt(0).toUpperCase()+t.slice(1);this[o]!==n&&this[o](i),a=["initSelector","closeLinkSelector","closeLinkEvents","navigateEvents","closeEvents","history","container"],e.mobile.widget.prototype._setOption.apply(this,arguments),-1===e.inArray(t,a)&&this.element.attr("data-"+(e.mobile.ns||"")+t.replace(/([A-Z])/,"-$1").toLowerCase(),i)},_placementCoords:function(e){var t,n,s=o(),r={x:this._tolerance.l,y:s.y+this._tolerance.t,cx:s.cx-this._tolerance.l-this._tolerance.r,cy:s.cy-this._tolerance.t-this._tolerance.b};this._ui.container.css("max-width",r.cx),t={cx:this._ui.container.outerWidth(!0),cy:this._ui.container.outerHeight(!0)},n={x:a(r.cx,t.cx,r.x,e.x),y:a(r.cy,t.cy,r.y,e.y)},n.y=Math.max(0,n.y);var l=i.documentElement,d=i.body,c=Math.max(l.clientHeight,d.scrollHeight,d.offsetHeight,l.scrollHeight,l.offsetHeight);return n.y-=Math.min(n.y,Math.max(0,n.y+t.cy-c)),{left:n.x,top:n.y}},_createPrereqs:function(t,i,n){var a,o=this;a={screen:e.Deferred(),container:e.Deferred()},a.screen.then(function(){a===o._prereqs&&t()}),a.container.then(function(){a===o._prereqs&&i()}),e.when(a.screen,a.container).done(function(){a===o._prereqs&&(o._prereqs=null,n())}),o._prereqs=a},_animate:function(t){return this._ui.screen.removeClass(t.classToRemove).addClass(t.screenClassToAdd),t.prereqs.screen.resolve(),t.transition&&"none"!==t.transition&&(t.applyTransition&&this._applyTransition(t.transition),this._fallbackTransition)?(this._ui.container.animationComplete(e.proxy(t.prereqs.container,"resolve")).addClass(t.containerClassToAdd).removeClass(t.classToRemove),n):(this._ui.container.removeClass(t.classToRemove),t.prereqs.container.resolve(),n)},_desiredCoords:function(t){var i,n=null,a=o(),s=t.x,r=t.y,l=t.positionTo;if(l&&"origin"!==l)if("window"===l)s=a.cx/2+a.x,r=a.cy/2+a.y;else{try{n=e(l)}catch(d){n=null}n&&(n.filter(":visible"),0===n.length&&(n=null))}return n&&(i=n.offset(),s=i.left+n.outerWidth()/2,r=i.top+n.outerHeight()/2),("number"!==e.type(s)||isNaN(s))&&(s=a.cx/2+a.x),("number"!==e.type(r)||isNaN(r))&&(r=a.cy/2+a.y),{x:s,y:r}},_reposition:function(e){e={x:e.x,y:e.y,positionTo:e.positionTo},this._trigger("beforeposition",e),this._ui.container.offset(this._placementCoords(this._desiredCoords(e)))},reposition:function(e){this._isOpen&&this._reposition(e)},_openPrereqsComplete:function(){this._ui.container.addClass("ui-popup-active"),this._isOpen=!0,this._resizeScreen(),this._ui.container.attr("tabindex","0").focus(),this._ignoreResizeEvents(),this._trigger("afteropen")},_open:function(t){var i=e.extend({},this.options,t),n=function(){var e=navigator.userAgent,t=e.match(/AppleWebKit\/([0-9\.]+)/),i=!!t&&t[1],n=e.match(/Android (\d+(?:\.\d+))/),a=!!n&&n[1],o=e.indexOf("Chrome")>-1;return null!==n&&"4.0"===a&&i&&i>534.13&&!o?!0:!1}();this._createPrereqs(e.noop,e.noop,e.proxy(this,"_openPrereqsComplete")),this._currentTransition=i.transition,this._applyTransition(i.transition),this.options.theme||this._setTheme(this._page.jqmData("theme")||e.mobile.getInheritedTheme(this._page,"c")),this._ui.screen.removeClass("ui-screen-hidden"),this._ui.container.removeClass("ui-popup-hidden"),this._reposition(i),this.options.overlayTheme&&n&&this.element.closest(".ui-page").addClass("ui-popup-open"),this._animate({additionalCondition:!0,transition:i.transition,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-popup-hidden").removeAttr("style")},_closePrereqsDone:function(){this.options,this._ui.container.removeAttr("tabindex"),e.mobile.popup.active=n,this._trigger("afterclose")},_close:function(t){this._ui.container.removeClass("ui-popup-active"),this._page.removeClass("ui-popup-open"),this._isOpen=!1,this._createPrereqs(e.proxy(this,"_closePrereqScreen"),e.proxy(this,"_closePrereqContainer"),e.proxy(this,"_closePrereqsDone")),this._animate({additionalCondition:this._ui.screen.hasClass("in"),transition:t?"none":this._currentTransition,classToRemove:"in",screenClassToAdd:"out",containerClassToAdd:"reverse out",applyTransition:!0,prereqs:this._prereqs})},_unenhance:function(){this._setTheme("none"),this.element.detach().insertAfter(this._ui.placeholder).removeClass("ui-popup ui-overlay-shadow ui-corner-all"),this._ui.screen.remove(),this._ui.container.remove(),this._ui.placeholder.remove()},_destroy:function(){e.mobile.popup.active===this?(this.element.one("popupafterclose",e.proxy(this,"_unenhance")),this.close()):this._unenhance()},_closePopup:function(i,n){var a,o,s=this.options,r=!1;t.scrollTo(0,this._scrollTop),i&&"pagebeforechange"===i.type&&n&&(a="string"==typeof n.toPage?n.toPage:n.toPage.jqmData("url"),a=e.mobile.path.parseUrl(a),o=a.pathname+a.search+a.hash,this._myUrl!==e.mobile.path.makeUrlAbsolute(o)?r=!0:i.preventDefault()),s.container.unbind(s.closeEvents),this.element.undelegate(s.closeLinkSelector,s.closeLinkEvents),this._close(r)},_bindContainerClose:function(){this.options.container.one(this.options.closeEvents,e.proxy(this,"_closePopup"))},open:function(i){var a,o,s,r,l,d,c=this,h=this.options;if(!e.mobile.popup.active){if(e.mobile.popup.active=this,this._scrollTop=e.mobile.window.scrollTop(),!h.history)return c._open(i),c._bindContainerClose(),c.element.delegate(h.closeLinkSelector,h.closeLinkEvents,function(e){c.close(),e.preventDefault()}),n;if(d=e.mobile.urlHistory,o=e.mobile.dialogHashKey,s=e.mobile.activePage,r=s.is(".ui-dialog"),this._myUrl=a=d.getActive().url,l=a.indexOf(o)>-1&&!r&&d.activeIndex>0)return c._open(i),c._bindContainerClose(),n;-1!==a.indexOf(o)||r?a=e.mobile.path.parseLocation().hash+o:a+=a.indexOf("#")>-1?o:"#"+o,0===d.activeIndex&&a===d.initialDst&&(a+=o),e(t).one("beforenavigate",function(e){e.preventDefault(),c._open(i),c._bindContainerClose()}),this.urlAltered=!0,e.mobile.navigate(a,{role:"dialog"})}},close:function(){e.mobile.popup.active===this&&(this._scrollTop=e.mobile.window.scrollTop(),this.options.history&&this.urlAltered?(e.mobile.back(),this.urlAltered=!1):this._closePopup())}}),e.mobile.popup.handleLink=function(t){var i,n=t.closest(":jqmData(role='page')"),a=0===n.length?e("body"):n,o=e(e.mobile.path.parseUrl(t.attr("href")).hash,a[0]);o.data("mobile-popup")&&(i=t.offset(),o.popup("open",{x:i.left+t.outerWidth()/2,y:i.top+t.outerHeight()/2,transition:t.jqmData("transition"),positionTo:t.jqmData("position-to")})),setTimeout(function(){var i=t.parent().parent();i.hasClass("ui-li")&&(t=i.parent()),t.removeClass(e.mobile.activeBtnClass)},300)},e.mobile.document.bind("pagebeforechange",function(t,i){"popup"===i.options.role&&(e.mobile.popup.handleLink(i.options.link),t.preventDefault())}),e.mobile.document.bind("pagecreate create",function(t){e.mobile.popup.prototype.enhanceWithin(t.target,!0)})}(e),function(e,t){var n=function(n){var a,o,s,r=(n.select,n._destroy),l=n.selectID,d=l?l:(e.mobile.ns||"")+"uuid-"+n.uuid,c=d+"-listbox",h=d+"-dialog",u=n.label,p=n.select.closest(".ui-page"),m=n._selectOptions(),f=n.isMultiple=n.select[0].multiple,g=l+"-button",b=l+"-menu",v=e("<div data-"+e.mobile.ns+"role='dialog' id='"+h+"' data-"+e.mobile.ns+"theme='"+n.options.theme+"' data-"+e.mobile.ns+"overlay-theme='"+n.options.overlayTheme+"'>"+"<div data-"+e.mobile.ns+"role='header'>"+"<div class='ui-title'>"+u.getEncodedText()+"</div>"+"</div>"+"<div data-"+e.mobile.ns+"role='content'></div>"+"</div>"),_=e("<div id='"+c+"' class='ui-selectmenu'>").insertAfter(n.select).popup({theme:n.options.overlayTheme}),C=e("<ul>",{"class":"ui-selectmenu-list",id:b,role:"listbox","aria-labelledby":g}).attr("data-"+e.mobile.ns+"theme",n.options.theme).attr("data-"+e.mobile.ns+"divider-theme",n.options.dividerTheme).appendTo(_),x=e("<div>",{"class":"ui-header ui-bar-"+n.options.theme}).prependTo(_),y=e("<h1>",{"class":"ui-title"}).appendTo(x);n.isMultiple&&(s=e("<a>",{text:n.options.closeText,href:"#","class":"ui-btn-left"}).attr("data-"+e.mobile.ns+"iconpos","notext").attr("data-"+e.mobile.ns+"icon","delete").appendTo(x).buttonMarkup()),e.extend(n,{select:n.select,selectID:l,buttonId:g,menuId:b,popupID:c,dialogID:h,thisPage:p,menuPage:v,label:u,selectOptions:m,isMultiple:f,theme:n.options.theme,listbox:_,list:C,header:x,headerTitle:y,headerClose:s,menuPageContent:a,menuPageClose:o,placeholder:"",build:function(){var i=this;i.refresh(),i._origTabIndex===t&&(i._origTabIndex=null===i.select[0].getAttribute("tabindex")?!1:i.select.attr("tabindex")),i.select.attr("tabindex","-1").focus(function(){e(this).blur(),i.button.focus()}),i.button.bind("vclick keydown",function(t){i.options.disabled||i.isOpen||("vclick"===t.type||t.keyCode&&(t.keyCode===e.mobile.keyCode.ENTER||t.keyCode===e.mobile.keyCode.SPACE))&&(i._decideFormat(),"overlay"===i.menuType?i.button.attr("href","#"+i.popupID).attr("data-"+(e.mobile.ns||"")+"rel","popup"):i.button.attr("href","#"+i.dialogID).attr("data-"+(e.mobile.ns||"")+"rel","dialog"),i.isOpen=!0)}),i.list.attr("role","listbox").bind("focusin",function(t){e(t.target).attr("tabindex","0").trigger("vmouseover")}).bind("focusout",function(t){e(t.target).attr("tabindex","-1").trigger("vmouseout")}).delegate("li:not(.ui-disabled, .ui-li-divider)","click",function(t){var a=i.select[0].selectedIndex,o=i.list.find("li:not(.ui-li-divider)").index(this),s=i._selectOptions().eq(o)[0];s.selected=i.isMultiple?!s.selected:!0,i.isMultiple&&e(this).find(".ui-icon").toggleClass("ui-icon-checkbox-on",s.selected).toggleClass("ui-icon-checkbox-off",!s.selected),(i.isMultiple||a!==o)&&i.select.trigger("change"),i.isMultiple?i.list.find("li:not(.ui-li-divider)").eq(o).addClass("ui-btn-down-"+n.options.theme).find("a").first().focus():i.close(),t.preventDefault()}).keydown(function(t){var i,a,o=e(t.target),s=o.closest("li");switch(t.keyCode){case 38:return i=s.prev().not(".ui-selectmenu-placeholder"),i.is(".ui-li-divider")&&(i=i.prev()),i.length&&(o.blur().attr("tabindex","-1"),i.addClass("ui-btn-down-"+n.options.theme).find("a").first().focus()),!1;case 40:return a=s.next(),a.is(".ui-li-divider")&&(a=a.next()),a.length&&(o.blur().attr("tabindex","-1"),a.addClass("ui-btn-down-"+n.options.theme).find("a").first().focus()),!1;case 13:case 32:return o.trigger("click"),!1}}),i.menuPage.bind("pagehide",function(){e.mobile._bindPageRemove.call(i.thisPage)}),i.listbox.bind("popupafterclose",function(){i.close()}),i.isMultiple&&i.headerClose.click(function(){return"overlay"===i.menuType?(i.close(),!1):t}),i.thisPage.addDependents(this.menuPage)},_isRebuildRequired:function(){var e=this.list.find("li"),t=this._selectOptions();return t.text()!==e.text()},selected:function(){return this._selectOptions().filter(":selected:not( :jqmData(placeholder='true') )")},refresh:function(t){var i,n=this;this.element,this.isMultiple,(t||this._isRebuildRequired())&&n._buildList(),i=this.selectedIndices(),n.setButtonText(),n.setButtonCount(),n.list.find("li:not(.ui-li-divider)").removeClass(e.mobile.activeBtnClass).attr("aria-selected",!1).each(function(t){if(e.inArray(t,i)>-1){var a=e(this);a.attr("aria-selected",!0),n.isMultiple?a.find(".ui-icon").removeClass("ui-icon-checkbox-off").addClass("ui-icon-checkbox-on"):a.is(".ui-selectmenu-placeholder")?a.next().addClass(e.mobile.activeBtnClass):a.addClass(e.mobile.activeBtnClass)}})},close:function(){if(!this.options.disabled&&this.isOpen){var e=this;"page"===e.menuType?(e.menuPage.dialog("close"),e.list.appendTo(e.listbox)):e.listbox.popup("close"),e._focusButton(),e.isOpen=!1}},open:function(){this.button.click()},_decideFormat:function(){function t(){var t=i.list.find("."+e.mobile.activeBtnClass+" a");0===t.length&&(t=i.list.find("li.ui-btn:not( :jqmData(placeholder='true') ) a")),t.first().focus().closest("li").addClass("ui-btn-down-"+n.options.theme)}var i=this,a=e.mobile.window,o=i.list.parent(),s=o.outerHeight(),r=(o.outerWidth(),e("."+e.mobile.activePageClass),a.scrollTop()),l=i.button.offset().top,d=a.height();a.width(),s>d-80||!e.support.scrollTop?(i.menuPage.appendTo(e.mobile.pageContainer).page(),i.menuPageContent=v.find(".ui-content"),i.menuPageClose=v.find(".ui-header a"),i.thisPage.unbind("pagehide.remove"),0===r&&l>d&&i.thisPage.one("pagehide",function(){e(this).jqmData("lastScroll",l)}),i.menuPage.one("pageshow",function(){t()}).one("pagehide",function(){i.close()}),i.menuType="page",i.menuPageContent.append(i.list),i.menuPage.find("div .ui-title").text(i.label.text())):(i.menuType="overlay",i.listbox.one("popupafteropen",t))},_buildList:function(){var t=this,n=this.options,a=this.placeholder,o=!0,s=t.isMultiple?"checkbox-off":"false";t.list.empty().filter(".ui-listview").listview("destroy");for(var r,l=t.select.find("option"),d=l.length,c=this.select[0],h="data-"+e.mobile.ns,u=h+"option-index",p=h+"icon",m=h+"role",f=h+"placeholder",g=i.createDocumentFragment(),b=!1,v=0;d>v;v++,b=!1){var _=l[v],C=e(_),x=_.parentNode,y=C.text(),w=i.createElement("a"),T=[];if(w.setAttribute("href","#"),w.appendChild(i.createTextNode(y)),x!==c&&"optgroup"===x.nodeName.toLowerCase()){var D=x.getAttribute("label");if(D!==r){var P=i.createElement("li");P.setAttribute(m,"list-divider"),P.setAttribute("role","option"),P.setAttribute("tabindex","-1"),P.appendChild(i.createTextNode(D)),g.appendChild(P),r=D}}!o||_.getAttribute("value")&&0!==y.length&&!C.jqmData("placeholder")||(o=!1,b=!0,null===_.getAttribute(f)&&(this._removePlaceholderAttr=!0),_.setAttribute(f,!0),n.hidePlaceholderMenuItems&&T.push("ui-selectmenu-placeholder"),a!==y&&(a=t.placeholder=y));var k=i.createElement("li");_.disabled&&(T.push("ui-disabled"),k.setAttribute("aria-disabled",!0)),k.setAttribute(u,v),k.setAttribute(p,s),b&&k.setAttribute(f,!0),k.className=T.join(" "),k.setAttribute("role","option"),w.setAttribute("tabindex","-1"),k.appendChild(w),g.appendChild(k)}t.list[0].appendChild(g),this.isMultiple||a.length?this.headerTitle.text(this.placeholder):this.header.hide(),t.list.listview()},_button:function(){return e("<a>",{href:"#",role:"button",id:this.buttonId,"aria-haspopup":"true","aria-owns":this.menuId})},_destroy:function(){this.close(),this._origTabIndex!==t&&(this._origTabIndex!==!1?this.select.attr("tabindex",this._origTabIndex):this.select.removeAttr("tabindex")),this._removePlaceholderAttr&&this._selectOptions().removeAttr("data-"+e.mobile.ns+"placeholder"),this.listbox.remove(),r.apply(this,arguments)}})};e.mobile.document.bind("selectmenubeforecreate",function(t){var i=e(t.target).data("mobile-selectmenu");i.options.nativeMenu||0!==i.element.parents(":jqmData(role='popup')").length||n(i)})}(e),function(e,t){e.widget("mobile.controlgroup",e.mobile.widget,e.extend({options:{shadow:!1,corners:!0,excludeInvisible:!0,type:"vertical",mini:!1,initSelector:":jqmData(role='controlgroup')"},_create:function(){var i=this.element,n={inner:e("<div class='ui-controlgroup-controls'></div>"),legend:e("<div role='heading' class='ui-controlgroup-label'></div>")},a=i.children("legend"),o=this;i.wrapInner(n.inner),a.length&&n.legend.append(a).insertBefore(i.children(0)),i.addClass("ui-corner-all ui-controlgroup"),e.extend(this,{_initialRefresh:!0}),e.each(this.options,function(e,i){o.options[e]=t,o._setOption(e,i,!0)})},_init:function(){this.refresh()},_setOption:function(i,n){var a="_set"+i.charAt(0).toUpperCase()+i.slice(1);this[a]!==t&&this[a](n),this._super(i,n),this.element.attr("data-"+(e.mobile.ns||"")+i.replace(/([A-Z])/,"-$1").toLowerCase(),n)},_setType:function(e){this.element.removeClass("ui-controlgroup-horizontal ui-controlgroup-vertical").addClass("ui-controlgroup-"+e),this.refresh()},_setCorners:function(e){this.element.toggleClass("ui-corner-all",e)},_setShadow:function(e){this.element.toggleClass("ui-shadow",e)},_setMini:function(e){this.element.toggleClass("ui-mini",e)},container:function(){return this.element.children(".ui-controlgroup-controls")},refresh:function(){var t=this.element.find(".ui-btn").not(".ui-slider-handle"),i=this._initialRefresh;e.mobile.checkboxradio&&this.element.find(":mobile-checkboxradio").checkboxradio("refresh"),this._addFirstLastClasses(t,this.options.excludeInvisible?this._getVisibles(t,i):t,i),this._initialRefresh=!1}},e.mobile.behaviors.addFirstLastClasses)),e(function(){e.mobile.document.bind("pagecreate create",function(t){e.mobile.controlgroup.prototype.enhanceWithin(t.target,!0)})})}(e),function(e){e(i).bind("pagecreate create",function(t){e(t.target).find("a").jqmEnhanceable().not(".ui-btn, .ui-link-inherit, :jqmData(role='none'), :jqmData(role='nojs')").addClass("ui-link")})}(e),function(e,t){e.widget("mobile.fixedtoolbar",e.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, .ui-panel, .ui-panel-dismiss-open",hideDuringFocus:"input, textarea, select",updatePagePadding:!0,trackPersistentToolbars:!0,supportBlacklist:function(){return!e.support.fixedPosition},initSelector:":jqmData(position='fixed')"},_create:function(){var i=this,n=i.options,a=i.element,o=a.is(":jqmData(role='header')")?"header":"footer",s=a.closest(".ui-page");return n.supportBlacklist()?(i.destroy(),t):(a.addClass("ui-"+o+"-fixed"),n.fullscreen?(a.addClass("ui-"+o+"-fullscreen"),s.addClass("ui-page-"+o+"-fullscreen")):s.addClass("ui-page-"+o+"-fixed"),e.extend(this,{_thisPage:null}),i._addTransitionClass(),i._bindPageEvents(),i._bindToggleHandlers(),t)},_addTransitionClass:function(){var e=this.options.transition;e&&"none"!==e&&("slide"===e&&(e=this.element.is(".ui-header")?"slidedown":"slideup"),this.element.addClass(e))},_bindPageEvents:function(){this._thisPage=this.element.closest(".ui-page"),this._on(this._thisPage,{pagebeforeshow:"_handlePageBeforeShow",webkitAnimationStart:"_handleAnimationStart",animationstart:"_handleAnimationStart",updatelayout:"_handleAnimationStart",pageshow:"_handlePageShow",pagebeforehide:"_handlePageBeforeHide"})},_handlePageBeforeShow:function(){var t=this.options;t.disablePageZoom&&e.mobile.zoom.disable(!0),t.visibleOnPageShow||this.hide(!0)},_handleAnimationStart:function(){this.options.updatePagePadding&&this.updatePagePadding(this._thisPage)},_handlePageShow:function(){this.updatePagePadding(this._thisPage),this.options.updatePagePadding&&this._on(e.mobile.window,{throttledresize:"updatePagePadding"})},_handlePageBeforeHide:function(t,i){var n=this.options;if(n.disablePageZoom&&e.mobile.zoom.enable(!0),n.updatePagePadding&&this._off(e.mobile.window,"throttledresize"),n.trackPersistentToolbars){var a=e(".ui-footer-fixed:jqmData(id)",this._thisPage),o=e(".ui-header-fixed:jqmData(id)",this._thisPage),s=a.length&&i.nextPage&&e(".ui-footer-fixed:jqmData(id='"+a.jqmData("id")+"')",i.nextPage)||e(),r=o.length&&i.nextPage&&e(".ui-header-fixed:jqmData(id='"+o.jqmData("id")+"')",i.nextPage)||e();(s.length||r.length)&&(s.add(r).appendTo(e.mobile.pageContainer),i.nextPage.one("pageshow",function(){r.prependTo(this),s.appendTo(this)}))}},_visible:!0,updatePagePadding:function(i){var n=this.element,a=n.is(".ui-header"),o=parseFloat(n.css(a?"top":"bottom"));this.options.fullscreen||(i=i&&i.type===t&&i||this._thisPage||n.closest(".ui-page"),e(i).css("padding-"+(a?"top":"bottom"),n.outerHeight()+o))},_useTransition:function(t){var i=e.mobile.window,n=this.element,a=i.scrollTop(),o=n.height(),s=n.closest(".ui-page").height(),r=e.mobile.getScreenHeight(),l=n.is(":jqmData(role='header')")?"header":"footer";return!t&&(this.options.transition&&"none"!==this.options.transition&&("header"===l&&!this.options.fullscreen&&a>o||"footer"===l&&!this.options.fullscreen&&s-o>a+r)||this.options.fullscreen)},show:function(e){var t="ui-fixed-hidden",i=this.element;this._useTransition(e)?i.removeClass("out "+t).addClass("in").animationComplete(function(){i.removeClass("in")}):i.removeClass(t),this._visible=!0},hide:function(e){var t="ui-fixed-hidden",i=this.element,n="out"+("slide"===this.options.transition?" reverse":"");this._useTransition(e)?i.addClass(n).removeClass("in").animationComplete(function(){i.addClass(t).removeClass(n)}):i.addClass(t).removeClass(n),this._visible=!1},toggle:function(){this[this._visible?"hide":"show"]()},_bindToggleHandlers:function(){var t,i,n=this,a=n.options,o=n.element,s=!0;o.closest(".ui-page").bind("vclick",function(t){a.tapToggle&&!e(t.target).closest(a.tapToggleBlacklist).length&&n.toggle()}).bind("focusin focusout",function(o){1025>screen.width&&e(o.target).is(a.hideDuringFocus)&&!e(o.target).closest(".ui-header-fixed, .ui-footer-fixed").length&&("focusout"!==o.type||s?"focusin"===o.type&&s&&(clearTimeout(t),s=!1,i=setTimeout(function(){n.hide()},0)):(s=!0,clearTimeout(i),t=setTimeout(function(){n.show()},0)))})},_destroy:function(){var e=this.element,t=e.is(".ui-header");e.closest(".ui-page").css("padding-"+(t?"top":"bottom"),""),e.removeClass("ui-header-fixed ui-footer-fixed ui-header-fullscreen ui-footer-fullscreen in out fade slidedown slideup ui-fixed-hidden"),e.closest(".ui-page").removeClass("ui-page-header-fixed ui-page-footer-fixed ui-page-header-fullscreen ui-page-footer-fullscreen")}}),e.mobile.document.bind("pagecreate create",function(t){e(t.target).jqmData("fullscreen")&&e(e.mobile.fixedtoolbar.prototype.options.initSelector,t.target).not(":jqmData(fullscreen)").jqmData("fullscreen",!0),e.mobile.fixedtoolbar.prototype.enhanceWithin(t.target)})}(e),function(e){e.widget("mobile.fixedtoolbar",e.mobile.fixedtoolbar,{_create:function(){this._super(),this._workarounds()},_workarounds:function(){var e=navigator.userAgent,t=navigator.platform,i=e.match(/AppleWebKit\/([0-9]+)/),n=!!i&&i[1],a=null,o=this;if(t.indexOf("iPhone")>-1||t.indexOf("iPad")>-1||t.indexOf("iPod")>-1)a="ios";else{if(!(e.indexOf("Android")>-1))return;a="android"}if("ios"===a)o._bindScrollWorkaround();else{if(!("android"===a&&n&&534>n))return;o._bindScrollWorkaround(),o._bindListThumbWorkaround()}},_viewportOffset:function(){var t=this.element,i=t.is(".ui-header"),n=Math.abs(t.offset().top-e.mobile.window.scrollTop());return i||(n=Math.round(n-e.mobile.window.height()+t.outerHeight())-60),n},_bindScrollWorkaround:function(){var t=this;this._on(e.mobile.window,{scrollstop:function(){var e=t._viewportOffset();e>2&&t._visible&&t._triggerRedraw()}})},_bindListThumbWorkaround:function(){this.element.closest(".ui-page").addClass("ui-android-2x-fixed")},_triggerRedraw:function(){var t=parseFloat(e(".ui-page-active").css("padding-bottom"));
+e(".ui-page-active").css("padding-bottom",t+1+"px"),setTimeout(function(){e(".ui-page-active").css("padding-bottom",t+"px")},0)},destroy:function(){this._super(),this.element.closest(".ui-page-active").removeClass("ui-android-2x-fix")}})}(e),function(e,n){e.widget("mobile.panel",e.mobile.widget,{options:{classes:{panel:"ui-panel",panelOpen:"ui-panel-open",panelClosed:"ui-panel-closed",panelFixed:"ui-panel-fixed",panelInner:"ui-panel-inner",modal:"ui-panel-dismiss",modalOpen:"ui-panel-dismiss-open",pagePanel:"ui-page-panel",pagePanelOpen:"ui-page-panel-open",contentWrap:"ui-panel-content-wrap",contentWrapOpen:"ui-panel-content-wrap-open",contentWrapClosed:"ui-panel-content-wrap-closed",contentFixedToolbar:"ui-panel-content-fixed-toolbar",contentFixedToolbarOpen:"ui-panel-content-fixed-toolbar-open",contentFixedToolbarClosed:"ui-panel-content-fixed-toolbar-closed",animate:"ui-panel-animate"},animate:!0,theme:"c",position:"left",dismissible:!0,display:"reveal",initSelector:":jqmData(role='panel')",swipeClose:!0,positionFixed:!1},_panelID:null,_closeLink:null,_page:null,_modal:null,_panelInner:null,_wrapper:null,_fixedToolbar:null,_create:function(){var t=this,i=t.element,n=i.closest(":jqmData(role='page')"),a=function(){var t=e.data(n[0],"mobilePage").options.theme,i="ui-body-"+t;return i},o=function(){var e=i.find("."+t.options.classes.panelInner);return 0===e.length&&(e=i.children().wrapAll('<div class="'+t.options.classes.panelInner+'" />').parent()),e},s=function(){var i=n.find("."+t.options.classes.contentWrap);return 0===i.length&&(i=n.children(".ui-header:not(:jqmData(position='fixed')), .ui-content:not(:jqmData(role='popup')), .ui-footer:not(:jqmData(position='fixed'))").wrapAll('<div class="'+t.options.classes.contentWrap+" "+a()+'" />').parent(),e.support.cssTransform3d&&t.options.animate&&i.addClass(t.options.classes.animate)),i},r=function(){var i=n.find("."+t.options.classes.contentFixedToolbar);return 0===i.length&&(i=n.find(".ui-header:jqmData(position='fixed'), .ui-footer:jqmData(position='fixed')").addClass(t.options.classes.contentFixedToolbar),e.support.cssTransform3d&&t.options.animate&&i.addClass(t.options.classes.animate)),i};e.extend(this,{_panelID:i.attr("id"),_closeLink:i.find(":jqmData(rel='close')"),_page:i.closest(":jqmData(role='page')"),_pageTheme:a(),_panelInner:o(),_wrapper:s(),_fixedToolbar:r()}),t._addPanelClasses(),t._wrapper.addClass(this.options.classes.contentWrapClosed),t._fixedToolbar.addClass(this.options.classes.contentFixedToolbarClosed),t._page.addClass(t.options.classes.pagePanel),e.support.cssTransform3d&&t.options.animate&&this.element.addClass(t.options.classes.animate),t._bindUpdateLayout(),t._bindCloseEvents(),t._bindLinkListeners(),t._bindPageEvents(),t.options.dismissible&&t._createModal(),t._bindSwipeEvents()},_createModal:function(){var t=this;t._modal=e("<div class='"+t.options.classes.modal+"' data-panelid='"+t._panelID+"'></div>").on("mousedown",function(){t.close()}).appendTo(this._page)},_getPosDisplayClasses:function(e){return e+"-position-"+this.options.position+" "+e+"-display-"+this.options.display},_getPanelClasses:function(){var e=this.options.classes.panel+" "+this._getPosDisplayClasses(this.options.classes.panel)+" "+this.options.classes.panelClosed;return this.options.theme&&(e+=" ui-body-"+this.options.theme),this.options.positionFixed&&(e+=" "+this.options.classes.panelFixed),e},_addPanelClasses:function(){this.element.addClass(this._getPanelClasses())},_bindCloseEvents:function(){var e=this;e._closeLink.on("click.panel",function(t){return t.preventDefault(),e.close(),!1}),e.element.on("click.panel","a:jqmData(ajax='false')",function(){e.close()})},_positionPanel:function(){var t=this,i=t._panelInner.outerHeight(),n=i>e.mobile.getScreenHeight();n||!t.options.positionFixed?(n&&(t._unfixPanel(),e.mobile.resetActivePageHeight(i)),t._scrollIntoView(i)):t._fixPanel()},_scrollIntoView:function(i){e(t).scrollTop()>i&&t.scrollTo(0,0)},_bindFixListener:function(){this._on(e(t),{throttledresize:"_positionPanel"})},_unbindFixListener:function(){this._off(e(t),"throttledresize")},_unfixPanel:function(){this.options.positionFixed&&e.support.fixedPosition&&this.element.removeClass(this.options.classes.panelFixed)},_fixPanel:function(){this.options.positionFixed&&e.support.fixedPosition&&this.element.addClass(this.options.classes.panelFixed)},_bindUpdateLayout:function(){var e=this;e.element.on("updatelayout",function(){e._open&&e._positionPanel()})},_bindLinkListeners:function(){var t=this;t._page.on("click.panel","a",function(i){if(this.href.split("#")[1]===t._panelID&&t._panelID!==n){i.preventDefault();var a=e(this);return a.hasClass("ui-link")||(a.addClass(e.mobile.activeBtnClass),t.element.one("panelopen panelclose",function(){a.removeClass(e.mobile.activeBtnClass)})),t.toggle(),!1}})},_bindSwipeEvents:function(){var e=this,t=e._modal?e.element.add(e._modal):e.element;e.options.swipeClose&&("left"===e.options.position?t.on("swipeleft.panel",function(){e.close()}):t.on("swiperight.panel",function(){e.close()}))},_bindPageEvents:function(){var e=this;e._page.on("panelbeforeopen",function(t){e._open&&t.target!==e.element[0]&&e.close()}).on("pagehide",function(){e._open&&e.close(!0)}).on("keyup.panel",function(t){27===t.keyCode&&e._open&&e.close()})},_open:!1,_contentWrapOpenClasses:null,_fixedToolbarOpenClasses:null,_modalOpenClasses:null,open:function(t){if(!this._open){var i=this,n=i.options,a=function(){i._page.off("panelclose"),i._page.jqmData("panel","open"),!t&&e.support.cssTransform3d&&n.animate?i.element.add(i._wrapper).on(i._transitionEndEvents,o):setTimeout(o,0),i.options.theme&&"overlay"!==i.options.display&&i._page.removeClass(i._pageTheme).addClass("ui-body-"+i.options.theme),i.element.removeClass(n.classes.panelClosed).addClass(n.classes.panelOpen),i._positionPanel(),i.options.theme&&"overlay"!==i.options.display&&i._wrapper.css("min-height",i._page.css("min-height")),i._contentWrapOpenClasses=i._getPosDisplayClasses(n.classes.contentWrap),i._wrapper.removeClass(n.classes.contentWrapClosed).addClass(i._contentWrapOpenClasses+" "+n.classes.contentWrapOpen),i._fixedToolbarOpenClasses=i._getPosDisplayClasses(n.classes.contentFixedToolbar),i._fixedToolbar.removeClass(n.classes.contentFixedToolbarClosed).addClass(i._fixedToolbarOpenClasses+" "+n.classes.contentFixedToolbarOpen),i._modalOpenClasses=i._getPosDisplayClasses(n.classes.modal)+" "+n.classes.modalOpen,i._modal&&i._modal.addClass(i._modalOpenClasses)},o=function(){i.element.add(i._wrapper).off(i._transitionEndEvents,o),i._page.addClass(n.classes.pagePanelOpen),i._bindFixListener(),i._trigger("open")};0>this.element.closest(".ui-page-active").length&&(t=!0),i._trigger("beforeopen"),"open"===i._page.jqmData("panel")?i._page.on("panelclose",function(){a()}):a(),i._open=!0}},close:function(t){if(this._open){var i=this.options,n=this,a=function(){!t&&e.support.cssTransform3d&&i.animate?n.element.add(n._wrapper).on(n._transitionEndEvents,o):setTimeout(o,0),n._page.removeClass(i.classes.pagePanelOpen),n.element.removeClass(i.classes.panelOpen),n._wrapper.removeClass(i.classes.contentWrapOpen),n._fixedToolbar.removeClass(i.classes.contentFixedToolbarOpen),n._modal&&n._modal.removeClass(n._modalOpenClasses)},o=function(){n.options.theme&&"overlay"!==n.options.display&&(n._page.removeClass("ui-body-"+n.options.theme).addClass(n._pageTheme),n._wrapper.css("min-height","")),n.element.add(n._wrapper).off(n._transitionEndEvents,o),n.element.addClass(i.classes.panelClosed),n._wrapper.removeClass(n._contentWrapOpenClasses).addClass(i.classes.contentWrapClosed),n._fixedToolbar.removeClass(n._fixedToolbarOpenClasses).addClass(i.classes.contentFixedToolbarClosed),n._fixPanel(),n._unbindFixListener(),e.mobile.resetActivePageHeight(),n._page.jqmRemoveData("panel"),n._trigger("close")};0>this.element.closest(".ui-page-active").length&&(t=!0),n._trigger("beforeclose"),a(),n._open=!1}},toggle:function(){this[this._open?"close":"open"]()},_transitionEndEvents:"webkitTransitionEnd oTransitionEnd otransitionend transitionend msTransitionEnd",_destroy:function(){var t=this.options.classes,i=this.options.theme,n=this.element.siblings("."+t.panel).length;n?this._open&&(this._wrapper.removeClass(t.contentWrapOpen),this._fixedToolbar.removeClass(t.contentFixedToolbarOpen),this._page.jqmRemoveData("panel"),this._page.removeClass(t.pagePanelOpen),i&&this._page.removeClass("ui-body-"+i).addClass(this._pageTheme)):(this._wrapper.children().unwrap(),this._page.find("a").unbind("panelopen panelclose"),this._page.removeClass(t.pagePanel),this._open&&(this._page.jqmRemoveData("panel"),this._page.removeClass(t.pagePanelOpen),i&&this._page.removeClass("ui-body-"+i).addClass(this._pageTheme),e.mobile.resetActivePageHeight())),this._panelInner.children().unwrap(),this.element.removeClass([this._getPanelClasses(),t.panelAnimate].join(" ")).off("swipeleft.panel swiperight.panel").off("panelbeforeopen").off("panelhide").off("keyup.panel").off("updatelayout"),this._closeLink.off("click.panel"),this._modal&&this._modal.remove(),this.element.off(this._transitionEndEvents).removeClass([t.panelUnfixed,t.panelClosed,t.panelOpen].join(" "))}}),e(i).bind("pagecreate create",function(t){e.mobile.panel.prototype.enhanceWithin(t.target)})}(e),function(e,t){e.widget("mobile.table",e.mobile.widget,{options:{classes:{table:"ui-table"},initSelector:":jqmData(role='table')"},_create:function(){var e=this;e.refresh(!0)},refresh:function(i){var n=this,a=this.element.find("thead tr");i&&this.element.addClass(this.options.classes.table),n.headers=this.element.find("tr:eq(0)").children(),n.allHeaders=n.headers.add(a.children()),a.each(function(){var o=0;e(this).children().each(function(){var s=parseInt(e(this).attr("colspan"),10),r=":nth-child("+(o+1)+")";if(e(this).jqmData("colstart",o+1),s)for(var l=0;s-1>l;l++)o++,r+=", :nth-child("+(o+1)+")";i===t&&e(this).jqmData("cells",""),e(this).jqmData("cells",n.element.find("tr").not(a.eq(0)).not(this).children(r)),o++})}),i===t&&this.element.trigger("refresh")}}),e.mobile.document.bind("pagecreate create",function(t){e.mobile.table.prototype.enhanceWithin(t.target)})}(e),function(e,t){e.mobile.table.prototype.options.mode="columntoggle",e.mobile.table.prototype.options.columnBtnTheme=null,e.mobile.table.prototype.options.columnPopupTheme=null,e.mobile.table.prototype.options.columnBtnText="Columns...",e.mobile.table.prototype.options.classes=e.extend(e.mobile.table.prototype.options.classes,{popup:"ui-table-columntoggle-popup",columnBtn:"ui-table-columntoggle-btn",priorityPrefix:"ui-table-priority-",columnToggleTable:"ui-table-columntoggle"}),e.mobile.document.delegate(":jqmData(role='table')","tablecreate refresh",function(i){var n,a,o,s,r=e(this),l=r.data("mobile-table"),d=i.type,c=l.options,h=e.mobile.ns,u=(r.attr("id")||c.classes.popup)+"-popup";"columntoggle"===c.mode&&("refresh"!==d&&(l.element.addClass(c.classes.columnToggleTable),n=e("<a href='#"+u+"' class='"+c.classes.columnBtn+"' data-"+h+"rel='popup' data-"+h+"mini='true'>"+c.columnBtnText+"</a>"),a=e("<div data-"+h+"role='popup' data-"+h+"role='fieldcontain' class='"+c.classes.popup+"' id='"+u+"'></div>"),o=e("<fieldset data-"+h+"role='controlgroup'></fieldset>")),l.headers.not("td").each(function(t){var i=e(this).jqmData("priority"),n=e(this).add(e(this).jqmData("cells"));i&&(n.addClass(c.classes.priorityPrefix+i),"refresh"!==d?e("<label><input type='checkbox' checked />"+e(this).text()+"</label>").appendTo(o).children(0).jqmData("cells",n).checkboxradio({theme:c.columnPopupTheme}):e("#"+u+" fieldset div:eq("+t+")").find("input").jqmData("cells",n))}),"refresh"!==d&&o.appendTo(a),s=o===t?e("#"+u+" fieldset"):o,"refresh"!==d&&(s.on("change","input",function(){this.checked?e(this).jqmData("cells").removeClass("ui-table-cell-hidden").addClass("ui-table-cell-visible"):e(this).jqmData("cells").removeClass("ui-table-cell-visible").addClass("ui-table-cell-hidden")}),n.insertBefore(r).buttonMarkup({theme:c.columnBtnTheme}),a.insertBefore(r).popup()),l.update=function(){s.find("input").each(function(){this.checked?(this.checked="table-cell"===e(this).jqmData("cells").eq(0).css("display"),"refresh"===d&&e(this).jqmData("cells").addClass("ui-table-cell-visible")):e(this).jqmData("cells").addClass("ui-table-cell-hidden"),e(this).checkboxradio("refresh")})},e.mobile.window.on("throttledresize",l.update),l.update())})}(e),function(e){e.mobile.table.prototype.options.mode="reflow",e.mobile.table.prototype.options.classes=e.extend(e.mobile.table.prototype.options.classes,{reflowTable:"ui-table-reflow",cellLabels:"ui-table-cell-label"}),e.mobile.document.delegate(":jqmData(role='table')","tablecreate refresh",function(t){var i=e(this),n=t.type,a=i.data("mobile-table"),o=a.options;if("reflow"===o.mode){"refresh"!==n&&a.element.addClass(o.classes.reflowTable);var s=e(a.allHeaders.get().reverse());s.each(function(){var t=e(this).jqmData("cells"),i=e(this).jqmData("colstart"),n=t.not(this).filter("thead th").length&&" ui-table-cell-label-top",a=e(this).text();if(""!==a)if(n){var s=parseInt(e(this).attr("colspan"),10),r="";s&&(r="td:nth-child("+s+"n + "+i+")"),t.filter(r).prepend("<b class='"+o.classes.cellLabels+n+"'>"+a+"</b>")}else t.prepend("<b class='"+o.classes.cellLabels+"'>"+a+"</b>")})}})}(e),function(e,t){function i(e){o=e.originalEvent,d=o.accelerationIncludingGravity,s=Math.abs(d.x),r=Math.abs(d.y),l=Math.abs(d.z),!t.orientation&&(s>7||(l>6&&8>r||8>l&&r>6)&&s>5)?c.enabled&&c.disable():c.enabled||c.enable()}e.mobile.iosorientationfixEnabled=!0;var a=navigator.userAgent;if(!(/iPhone|iPad|iPod/.test(navigator.platform)&&/OS [1-5]_[0-9_]* like Mac OS X/i.test(a)&&a.indexOf("AppleWebKit")>-1))return e.mobile.iosorientationfixEnabled=!1,n;var o,s,r,l,d,c=e.mobile.zoom;e.mobile.document.on("mobileinit",function(){e.mobile.iosorientationfixEnabled&&e.mobile.window.bind("orientationchange.iosorientationfix",c.enable).bind("devicemotion.iosorientationfix",i)})}(e,this),function(e,t){function n(){a.removeClass("ui-mobile-rendering")}var a=e("html"),o=(e("head"),e.mobile.window);e(t.document).trigger("mobileinit"),e.mobile.gradeA()&&(e.mobile.ajaxBlacklist&&(e.mobile.ajaxEnabled=!1),a.addClass("ui-mobile ui-mobile-rendering"),setTimeout(n,5e3),e.extend(e.mobile,{initializePage:function(){var t=e.mobile.path,a=e(":jqmData(role='page'), :jqmData(role='dialog')"),s=t.stripHash(t.stripQueryParams(t.parseLocation().hash)),r=i.getElementById(s);a.length||(a=e("body").wrapInner("<div data-"+e.mobile.ns+"role='page'></div>").children(0)),a.each(function(){var t=e(this);t.jqmData("url")||t.attr("data-"+e.mobile.ns+"url",t.attr("id")||location.pathname+location.search)}),e.mobile.firstPage=a.first(),e.mobile.pageContainer=e.mobile.firstPage.parent().addClass("ui-mobile-viewport"),o.trigger("pagecontainercreate"),e.mobile.showPageLoadingMsg(),n(),e.mobile.hashListeningEnabled&&e.mobile.path.isHashValid(location.hash)&&(e(r).is(':jqmData(role="page")')||e.mobile.path.isPath(s)||s===e.mobile.dialogHashKey)?e.event.special.navigate.isPushStateEnabled()?(e.mobile.navigate.history.stack=[],e.mobile.navigate(e.mobile.path.isPath(location.hash)?location.hash:location.href)):o.trigger("hashchange",[!0]):(e.mobile.path.isHashValid(location.hash)&&(e.mobile.urlHistory.initialDst=s.replace("#","")),e.event.special.navigate.isPushStateEnabled()&&e.mobile.navigate.navigator.squash(t.parseLocation().href),e.mobile.changePage(e.mobile.firstPage,{transition:"none",reverse:!0,changeHash:!1,fromHashChange:!0}))}}),e.mobile.navreadyDeferred.resolve(),e(function(){t.scrollTo(0,1),e.mobile.defaultHomeScroll=e.support.scrollTop&&1!==e.mobile.window.scrollTop()?1:0,e.mobile.autoInitializePage&&e.mobile.initializePage(),o.load(e.mobile.silentScroll),e.support.cssPointerEvents||e.mobile.document.delegate(".ui-disabled","vclick",function(e){e.preventDefault(),e.stopImmediatePropagation()})}))}(e,this)});
+//@ sourceMappingURL=jquery.mobile-1.3.1.min.map
\ No newline at end of file
diff --git a/ism/data/remote-input/jquery.mobile-1.3.1_custom.css b/ism/data/remote-input/jquery.mobile-1.3.1_custom.css
new file mode 100644 (file)
index 0000000..61192b8
--- /dev/null
@@ -0,0 +1,3366 @@
+/*
+* jQuery Mobile 1.3.1
+* Git HEAD hash: 74b4bec049fd93e4fe40205e6157de16eb64eb46 <> Date: Wed Apr 10 2013 21:57:23 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2013 jQuery Foundation, Inc. and other contributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+/* Swatches */
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-a {
+       border: 1px solid               #333 /*{a-bar-border}*/;
+       background:                     #111 /*{a-bar-background-color}*/;
+       color:                                  #fff /*{a-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 0 /*{a-bar-shadow-radius}*/ #000 /*{a-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/);
+}
+.ui-bar-a,
+.ui-bar-a input,
+.ui-bar-a select,
+.ui-bar-a textarea,
+.ui-bar-a button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-a .ui-link-inherit {
+       color: #fff /*{a-bar-color}*/;
+}
+.ui-bar-a a.ui-link {
+       color: #7cc4e7 /*{a-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-a a.ui-link:visited {
+    color: #2489ce /*{a-bar-link-visited}*/;
+}
+.ui-bar-a a.ui-link:hover {
+       color: #2489ce /*{a-bar-link-hover}*/;
+}
+.ui-bar-a a.ui-link:active {
+       color: #2489ce /*{a-bar-link-active}*/;
+}
+.ui-body-a,
+.ui-overlay-a {
+       border: 1px solid               #444 /*{a-body-border}*/;
+       background:                     #222 /*{a-body-background-color}*/;
+       color:                                  #fff /*{a-body-color}*/;
+       text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/;
+       font-weight: normal;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/);
+}
+.ui-overlay-a {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-a,
+.ui-body-a input,
+.ui-body-a select,
+.ui-body-a textarea,
+.ui-body-a button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-a .ui-link-inherit {
+       color:  #fff /*{a-body-color}*/;
+}
+.ui-body-a .ui-link {
+       color: #2489ce /*{a-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-a .ui-link:visited {
+    color: #2489ce /*{a-body-link-visited}*/;
+}
+.ui-body-a .ui-link:hover {
+       color: #2489ce /*{a-body-link-hover}*/;
+}
+.ui-body-a .ui-link:active {
+       color: #2489ce /*{a-body-link-active}*/;
+}
+.ui-btn-up-a {
+       border: 1px solid               #111 /*{a-bup-border}*/;
+       background:                     #333 /*{a-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bup-color}*/;
+       text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 0 /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/);
+}
+.ui-btn-up-a:visited,
+.ui-btn-up-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bup-color}*/;
+}
+.ui-btn-hover-a {
+       border: 1px solid               #000 /*{a-bhover-border}*/;
+       background:                     #444 /*{a-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bhover-color}*/;
+       text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 0 /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/);
+}
+.ui-btn-hover-a:visited,
+.ui-btn-hover-a:hover,
+.ui-btn-hover-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bhover-color}*/;
+}
+.ui-btn-down-a {
+       border: 1px solid               #000 /*{a-bdown-border}*/;
+       background:                     #222 /*{a-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bdown-color}*/;
+       text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 0 /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/);
+}
+.ui-btn-down-a:visited,
+.ui-btn-down-a:hover,
+.ui-btn-down-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bdown-color}*/;
+}
+.ui-btn-up-a,
+.ui-btn-hover-a,
+.ui-btn-down-a {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-b {
+       border: 1px solid               #456f9a /*{b-bar-border}*/;
+       background:                     #5e87b0 /*{b-bar-background-color}*/;
+       color:                                  #fff /*{b-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 0 /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/);
+}
+.ui-bar-b,
+.ui-bar-b input,
+.ui-bar-b select,
+.ui-bar-b textarea,
+.ui-bar-b button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-b .ui-link-inherit {
+       color:  #fff /*{b-bar-color}*/;
+}
+.ui-bar-b a.ui-link {
+       color: #ddf0f8 /*{b-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-b a.ui-link:visited {
+    color: #ddf0f8 /*{b-bar-link-visited}*/;
+}
+.ui-bar-b a.ui-link:hover {
+       color: #ddf0f8 /*{b-bar-link-hover}*/;
+}
+.ui-bar-b a.ui-link:active {
+       color: #ddf0f8 /*{b-bar-link-active}*/;
+}
+.ui-body-b,
+.ui-overlay-b {
+       border: 1px solid               #999 /*{b-body-border}*/;
+       background:                     #f3f3f3 /*{b-body-background-color}*/;
+       color:                                  #222 /*{b-body-color}*/;
+       text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/;
+       font-weight: normal;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/);
+}
+.ui-overlay-b {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-b,
+.ui-body-b input,
+.ui-body-b select,
+.ui-body-b textarea,
+.ui-body-b button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-b .ui-link-inherit {
+       color:  #333 /*{b-body-color}*/;
+}
+.ui-body-b .ui-link {
+       color: #2489ce /*{b-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-b .ui-link:visited {
+    color: #2489ce /*{b-body-link-visited}*/;
+}
+.ui-body-b .ui-link:hover {
+       color: #2489ce /*{b-body-link-hover}*/;
+}
+.ui-body-b .ui-link:active {
+       color: #2489ce /*{b-body-link-active}*/;
+}
+.ui-btn-up-b {
+       border: 1px solid               #044062 /*{b-bup-border}*/;
+       background:                     #396b9e /*{b-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bup-color}*/;
+       text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 0 /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/);
+}
+.ui-btn-up-b:visited,
+.ui-btn-up-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bup-color}*/;
+}
+.ui-btn-hover-b {
+       border: 1px solid               #00415e /*{b-bhover-border}*/;
+       background:                     #4b88b6 /*{b-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bhover-color}*/;
+       text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 0 /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/);
+}
+.ui-btn-hover-b:visited,
+.ui-btn-hover-b:hover,
+.ui-btn-hover-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bhover-color}*/;
+}
+.ui-btn-down-b {
+       border: 1px solid               #225377 /*{b-bdown-border}*/;
+       background:                     #4e89c5 /*{b-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bdown-color}*/;
+       text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 0 /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/);
+}
+.ui-btn-down-b:visited,
+.ui-btn-down-b:hover,
+.ui-btn-down-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bdown-color}*/;
+}
+.ui-btn-up-b,
+.ui-btn-hover-b,
+.ui-btn-down-b {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* C
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-c {
+       border: 1px solid               #b3b3b3 /*{c-bar-border}*/;
+       background:                     #eee /*{c-bar-background-color}*/;
+       color:                                  #3e3e3e /*{c-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 0 /*{c-bar-shadow-radius}*/        #fff /*{c-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/);
+}
+.ui-bar-c .ui-link-inherit {
+       color:  #3e3e3e /*{c-bar-color}*/;
+}
+.ui-bar-c a.ui-link {
+       color: #7cc4e7 /*{c-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-c a.ui-link:visited {
+    color: #2489ce /*{c-bar-link-visited}*/;
+}
+.ui-bar-c a.ui-link:hover {
+       color: #2489ce /*{c-bar-link-hover}*/;
+}
+.ui-bar-c a.ui-link:active {
+       color: #2489ce /*{c-bar-link-active}*/;
+}
+.ui-bar-c,
+.ui-bar-c input,
+.ui-bar-c select,
+.ui-bar-c textarea,
+.ui-bar-c button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-c,
+.ui-overlay-c {
+       border: 1px solid               #aaa /*{c-body-border}*/;
+       color:                                  #333 /*{c-body-color}*/;
+       text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/;
+       background:                     #f9f9f9 /*{c-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eee /*{c-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/);
+}
+.ui-overlay-c {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-c,
+.ui-body-c input,
+.ui-body-c select,
+.ui-body-c textarea,
+.ui-body-c button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-c .ui-link-inherit {
+       color:  #333 /*{c-body-color}*/;
+}
+.ui-body-c .ui-link {
+       color: #2489ce /*{c-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-c .ui-link:visited {
+    color: #2489ce /*{c-body-link-visited}*/;
+}
+.ui-body-c .ui-link:hover {
+       color: #2489ce /*{c-body-link-hover}*/;
+}
+.ui-body-c .ui-link:active {
+       color: #2489ce /*{c-body-link-active}*/;
+}
+.ui-btn-up-c {
+       border: 1px solid               #ccc /*{c-bup-border}*/;
+       background:                     #eee /*{c-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{c-bup-color}*/;
+       text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #fff /*{c-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/);
+}
+.ui-btn-up-c:visited,
+.ui-btn-up-c a.ui-link-inherit {
+       color:                                  #2f3e46 /*{c-bup-color}*/;
+}
+.ui-btn-hover-c {
+       border: 1px solid               #bbb /*{c-bhover-border}*/;
+       background:                     #dfdfdf /*{c-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{c-bhover-color}*/;
+       text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #fff /*{c-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/);
+}
+.ui-btn-hover-c:visited,
+.ui-btn-hover-c:hover,
+.ui-btn-hover-c a.ui-link-inherit {
+       color:                                  #2f3e46 /*{c-bhover-color}*/;
+}
+.ui-btn-down-c {
+       border: 1px solid               #bbb /*{c-bdown-border}*/;
+       background:                     #d6d6d6 /*{c-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{c-bdown-color}*/;
+       text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #fff /*{c-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/);
+}
+.ui-btn-down-c:visited,
+.ui-btn-down-c:hover,
+.ui-btn-down-c a.ui-link-inherit {
+       color:                                  #2f3e46 /*{c-bdown-color}*/;
+}
+.ui-btn-up-c,
+.ui-btn-hover-c,
+.ui-btn-down-c {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* D
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-d {
+       border: 1px solid               #bbb /*{d-bar-border}*/;
+       background:                     #bbb /*{d-bar-background-color}*/;
+       color:                                  #333 /*{d-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/);
+}
+.ui-bar-d,
+.ui-bar-d input,
+.ui-bar-d select,
+.ui-bar-d textarea,
+.ui-bar-d button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-d .ui-link-inherit {
+       color:  #333 /*{d-bar-color}*/;
+}
+.ui-bar-d a.ui-link {
+       color: #2489ce /*{d-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-d a.ui-link:visited {
+    color: #2489ce /*{d-bar-link-visited}*/;
+}
+.ui-bar-d a.ui-link:hover {
+       color: #2489ce /*{d-bar-link-hover}*/;
+}
+.ui-bar-d a.ui-link:active {
+       color: #2489ce /*{d-bar-link-active}*/;
+}
+.ui-body-d,
+.ui-overlay-d {
+       border: 1px solid               #bbb /*{d-body-border}*/;
+       color:                                  #333 /*{d-body-color}*/;
+       text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/     #fff /*{d-body-shadow-color}*/;
+       background:                     #fff /*{d-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{d-body-background-start}*/), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/);
+}
+.ui-overlay-d {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-d,
+.ui-body-d input,
+.ui-body-d select,
+.ui-body-d textarea,
+.ui-body-d button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-d .ui-link-inherit {
+       color:  #333 /*{d-body-color}*/;
+}
+.ui-body-d .ui-link {
+       color: #2489ce /*{d-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-d .ui-link:visited {
+    color: #2489ce /*{d-body-link-visited}*/;
+}
+.ui-body-d .ui-link:hover {
+       color: #2489ce /*{d-body-link-hover}*/;
+}
+.ui-body-d .ui-link:active {
+       color: #2489ce /*{d-body-link-active}*/;
+}
+.ui-btn-up-d {
+       border: 1px solid               #bbb /*{d-bup-border}*/;
+       background:                     #fff /*{d-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #333 /*{d-bup-color}*/;
+       text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa /*{d-bup-background-start}*/), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/);
+}
+.ui-btn-up-d:visited,
+.ui-btn-up-d a.ui-link-inherit {
+       color:                                  #333 /*{d-bup-color}*/;
+}
+.ui-btn-hover-d {
+       border: 1px solid               #aaa /*{d-bhover-border}*/;
+       background:                     #eee /*{d-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #333 /*{d-bhover-color}*/;
+       cursor: pointer;
+       text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/       #fff /*{d-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #eee /*{d-bhover-background-start}*/), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/);
+}
+.ui-btn-hover-d:visited,
+.ui-btn-hover-d:hover,
+.ui-btn-hover-d a.ui-link-inherit {
+       color:                                  #333 /*{d-bhover-color}*/;
+}
+.ui-btn-down-d {
+       border: 1px solid               #aaa /*{d-bdown-border}*/;
+       background:                     #eee /*{d-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #333 /*{d-bdown-color}*/;
+       text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/  #fff /*{d-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/);
+}
+.ui-btn-down-d:visited,
+.ui-btn-down-d:hover,
+.ui-btn-down-d a.ui-link-inherit {
+       color:                                  #333 /*{d-bdown-color}*/;
+}
+.ui-btn-up-d,
+.ui-btn-hover-d,
+.ui-btn-down-d {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+/* E
+-----------------------------------------------------------------------------------------------------------*/
+.ui-bar-e {
+       border: 1px solid               #f7c942 /*{e-bar-border}*/;
+       background:                     #fadb4e /*{e-bar-background-color}*/;
+       color:                                  #333 /*{e-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/        #fff /*{e-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/);
+}
+.ui-bar-e,
+.ui-bar-e input,
+.ui-bar-e select,
+.ui-bar-e textarea,
+.ui-bar-e button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-e .ui-link-inherit {
+       color:  #333 /*{e-bar-color}*/;
+}
+.ui-bar-e a.ui-link {
+       color: #2489ce /*{e-bar-link-color}*/;
+       font-weight: bold;
+}
+.ui-bar-e a.ui-link:visited {
+    color: #2489ce /*{e-bar-link-visited}*/;
+}
+.ui-bar-e a.ui-link:hover {
+       color: #2489ce /*{e-bar-link-hover}*/;
+}
+.ui-bar-e a.ui-link:active {
+       color: #2489ce /*{e-bar-link-active}*/;
+}
+.ui-body-e,
+.ui-overlay-e {
+       border: 1px solid               #f7c942 /*{e-body-border}*/;
+       color:                                  #222 /*{e-body-color}*/;
+       text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/     #fff /*{e-body-shadow-color}*/;
+       background:                     #fff9df /*{e-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/);
+}
+.ui-overlay-e {
+       background-image: none;
+       border-width: 0;
+}
+.ui-body-e,
+.ui-body-e input,
+.ui-body-e select,
+.ui-body-e textarea,
+.ui-body-e button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-e .ui-link-inherit {
+       color:  #222 /*{e-body-color}*/;
+}
+.ui-body-e .ui-link {
+       color: #2489ce /*{e-body-link-color}*/;
+       font-weight: bold;
+}
+.ui-body-e .ui-link:visited {
+    color: #2489ce /*{e-body-link-visited}*/;
+}
+.ui-body-e .ui-link:hover {
+       color: #2489ce /*{e-body-link-hover}*/;
+}
+.ui-body-e .ui-link:active {
+       color: #2489ce /*{e-body-link-active}*/;
+}
+.ui-btn-up-e {
+       border: 1px solid               #f4c63f /*{e-bup-border}*/;
+       background:                     #fadb4e /*{e-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{e-bup-color}*/;
+       text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/        #fff /*{e-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/);
+}
+.ui-btn-up-e:visited,
+.ui-btn-up-e a.ui-link-inherit {
+       color:                                  #222 /*{e-bup-color}*/;
+}
+.ui-btn-hover-e {
+       border: 1px solid               #f2c43d /*{e-bhover-border}*/;
+       background:                     #fbe26f /*{e-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bhover-color}*/;
+       text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/       #fff /*{e-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/);
+}
+.ui-btn-hover-e:visited,
+.ui-btn-hover-e:hover,
+.ui-btn-hover-e a.ui-link-inherit {
+       color:                                  #333 /*{e-bhover-color}*/;
+}
+.ui-btn-down-e {
+       border: 1px solid               #f2c43d /*{e-bdown-border}*/;
+       background:                     #fceda7 /*{e-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bdown-color}*/;
+       text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/  #fff /*{e-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/);
+}
+.ui-btn-down-e:visited,
+.ui-btn-down-e:hover,
+.ui-btn-down-e a.ui-link-inherit {
+       color:                                  #333 /*{e-bdown-color}*/;
+}
+.ui-btn-up-e,
+.ui-btn-hover-e,
+.ui-btn-down-e {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       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
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-active {
+       border: 1px solid               #2373a5 /*{global-active-border}*/;
+       background:                     #5393c5 /*{global-active-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{global-active-color}*/;
+       cursor: pointer;
+       text-shadow: 0 /*{global-active-shadow-x}*/ 1px /*{global-active-shadow-y}*/ 0 /*{global-active-shadow-radius}*/ #3373a5 /*{global-active-shadow-color}*/;
+       text-decoration: none;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #5393c5 /*{global-active-background-start}*/), to( #6facd5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/);
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-btn-active:visited,
+.ui-btn-active:hover,
+.ui-btn-active a.ui-link-inherit {
+       color:                                  #fff /*{global-active-color}*/;
+}
+/* button inner top highlight
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-inner {
+       border-top: 1px solid   #fff;
+       border-color:                   rgba(255,255,255,.3);
+}
+/* corner rounding classes
+-----------------------------------------------------------------------------------------------------------*/
+.ui-corner-all {
+       -webkit-border-radius:                          .6em /*{global-radii-blocks}*/;
+       border-radius:                                          .6em /*{global-radii-blocks}*/;
+}
+/* Form field separator
+-----------------------------------------------------------------------------------------------------------*/
+.ui-br {
+       border-color: rgb(130,130,130);
+       border-color: rgba(130,130,130,.3);
+       border-style: solid;
+}
+/* Interaction cues
+-----------------------------------------------------------------------------------------------------------*/
+.ui-disabled {
+       filter: Alpha(Opacity=30);
+       opacity: .3;
+       zoom: 1;
+}
+.ui-disabled,
+.ui-disabled a {
+       cursor: default !important;
+       pointer-events: none;
+}
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon,
+.ui-icon-searchfield:after {
+       background-color:                                               #666 /*{global-icon-color}*/;
+       background-color:                                               rgba(0,0,0,.4) /*{global-icon-disc}*/;
+       background-image: url(images/icons-18-white.png) /*{global-icon-set}*/;
+       background-repeat: no-repeat;
+       -webkit-border-radius:                          9px;
+       border-radius:                                          9px;
+}
+/* Alt icon color
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon-alt .ui-icon,
+.ui-icon-alt .ui-icon-searchfield:after {
+       background-color:                                               #fff;
+       background-color:                                               rgba(255,255,255,.3);
+       background-image: url(images/icons-18-black.png);
+       background-repeat: no-repeat;
+}
+/* No disc
+-----------------------------------------------------------------------------------------------------------*/
+.ui-icon-nodisc .ui-icon,
+.ui-icon-nodisc .ui-icon-searchfield:after,
+.ui-icon-nodisc .ui-icon-alt .ui-icon,
+.ui-icon-nodisc .ui-icon-alt .ui-icon-searchfield:after {
+       background-color: transparent;
+}
+/* Icon sprite
+-----------------------------------------------------------------------------------------------------------*/
+/* plus minus */
+.ui-icon-plus {
+       background-position:    -1px -1px;
+}
+.ui-icon-minus {
+       background-position:    -37px -1px;
+}
+/* delete/close */
+.ui-icon-delete {
+       background-position:    -73px -1px;
+}
+/* arrows */
+.ui-icon-arrow-r {
+       background-position:    -108px -1px;
+}
+.ui-icon-arrow-l {
+       background-position:    -144px -1px;
+}
+.ui-icon-arrow-u {
+       background-position:    -180px -1px;
+}
+.ui-icon-arrow-d {
+       background-position:    -216px -1px;
+}
+/* misc */
+.ui-icon-check {
+       background-position:    -252px -1px;
+}
+.ui-icon-gear {
+       background-position:    -288px -1px;
+}
+.ui-icon-refresh {
+       background-position:    -323px -1px;
+}
+.ui-icon-forward {
+       background-position:    -360px -1px;
+}
+.ui-icon-back {
+       background-position:    -396px -1px;
+}
+.ui-icon-grid {
+       background-position:    -432px -1px;
+}
+.ui-icon-star {
+       background-position:    -467px -1px;
+}
+.ui-icon-alert {
+       background-position:    -503px -1px;
+}
+.ui-icon-info {
+       background-position:    -539px -1px;
+}
+.ui-icon-home {
+       background-position:    -575px -1px;
+}
+/* search */
+.ui-icon-search,
+.ui-icon-searchfield:after {
+       background-position:    -611px -1px;
+}
+/* checkbox radio */
+.ui-icon-checkbox-on {
+       background-position:    -647px -1px;
+}
+.ui-icon-checkbox-off {
+       background-position:    -683px -1px;
+}
+.ui-icon-radio-on {
+       background-position:    -718px -1px;
+}
+.ui-icon-radio-off {
+       background-position:    -754px -1px;
+}
+/* menu edit */
+.ui-icon-bars {
+       background-position:    -788px -1px;
+}
+.ui-icon-edit {
+       background-position:    -824px -1px;
+}
+/* HD/"retina" sprite
+-----------------------------------------------------------------------------------------------------------*/
+@media only screen and (-webkit-min-device-pixel-ratio: 1.3),
+       only screen and (min--moz-device-pixel-ratio: 1.3),
+       only screen and (min-resolution: 200dpi) {
+
+       .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r,
+       .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check,
+       .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back,
+       .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-bars, .ui-icon-edit,
+       .ui-icon-search, .ui-icon-searchfield:after,
+       .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on {
+               background-image: url(images/icons-36-white.png);
+               -moz-background-size: 864px 18px;
+               -o-background-size: 864px 18px;
+               -webkit-background-size: 864px 18px;
+               background-size: 864px 18px;
+       }
+       .ui-icon-alt .ui-icon {
+               background-image: url(images/icons-36-black.png);
+       }
+       .ui-icon-plus {
+               background-position:    0 50%;
+       }
+       .ui-icon-minus {
+               background-position:    -36px 50%;
+       }
+       .ui-icon-delete {
+               background-position:    -72px 50%;
+       }
+       .ui-icon-arrow-r {
+               background-position:    -108px 50%;
+       }
+       .ui-icon-arrow-l {
+               background-position:    -144px 50%;
+       }
+       .ui-icon-arrow-u {
+               background-position:    -179px 50%;
+       }
+       .ui-icon-arrow-d {
+               background-position:    -215px 50%;
+       }
+       .ui-icon-check {
+               background-position:    -252px 50%;
+       }
+       .ui-icon-gear {
+               background-position:    -287px 50%;
+       }
+       .ui-icon-refresh {
+               background-position:    -323px 50%;
+       }
+       .ui-icon-forward {
+               background-position:    -360px 50%;
+       }
+       .ui-icon-back {
+               background-position:    -395px 50%;
+       }
+       .ui-icon-grid {
+               background-position:    -431px 50%;
+       }
+       .ui-icon-star {
+               background-position:    -467px 50%;
+       }
+       .ui-icon-alert {
+               background-position:    -503px 50%;
+       }
+       .ui-icon-info {
+               background-position:    -538px 50%;
+       }
+       .ui-icon-home {
+               background-position:    -575px 50%;
+       }
+       .ui-icon-search,
+       .ui-icon-searchfield:after {
+               background-position:    -611px 50%;
+       }
+       .ui-icon-checkbox-on {
+               background-position:    -647px 50%;
+       }
+       .ui-icon-checkbox-off {
+               background-position:    -683px 50%;
+       }
+       .ui-icon-radio-on {
+               background-position:    -718px 50%;
+       }
+       .ui-icon-radio-off {
+               background-position:    -754px 50%;
+       }
+       .ui-icon-bars {
+               background-position:    -788px 50%;
+
+       }.ui-icon-edit {
+               background-position:    -824px 50%;
+       }
+}
+/* checks,radios */
+.ui-checkbox .ui-icon,
+.ui-selectmenu-list .ui-icon {
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+.ui-icon-checkbox-off,
+.ui-icon-radio-off {
+       background-color: transparent;
+}
+.ui-checkbox-on .ui-icon,
+.ui-radio-on .ui-icon {
+       background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */
+}
+/* loading icon */
+.ui-icon-loading {
+       background: url(images/ajax-loader.gif);
+       background-size: 46px 46px;
+}
+/* Button corner class
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-corner-all {
+       -webkit-border-radius:                          1em /*{global-radii-buttons}*/;
+       border-radius:                                          1em /*{global-radii-buttons}*/;
+}
+/* radius clip workaround for cleaning up corner trapping */
+.ui-corner-all,
+.ui-btn-corner-all {
+       -webkit-background-clip: padding;
+       background-clip: padding-box;
+}
+/* Overlay / modal
+-----------------------------------------------------------------------------------------------------------*/
+.ui-overlay {
+       background: #666;
+       filter: Alpha(Opacity=50);
+       opacity: .5;
+       position: absolute;
+       width: 100%;
+       height: 100%;
+}
+.ui-overlay-shadow {
+       -moz-box-shadow: 0 0 12px                       rgba(0,0,0,.6);
+       -webkit-box-shadow: 0 0 12px            rgba(0,0,0,.6);
+       box-shadow: 0 0 12px                            rgba(0,0,0,.6);
+}
+.ui-shadow {
+       -moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/                         rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+       -webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/              rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+       box-shadow: 0 1px 3px /*{global-box-shadow-size}*/                              rgba(0,0,0,.2) /*{global-box-shadow-color}*/
+}
+.ui-bar-a .ui-shadow,
+.ui-bar-b .ui-shadow ,
+.ui-bar-c .ui-shadow  {
+       -moz-box-shadow: 0 1px 0                                rgba(255,255,255,.3);
+       -webkit-box-shadow: 0 1px 0                     rgba(255,255,255,.3);
+       box-shadow: 0 1px 0                                     rgba(255,255,255,.3);
+}
+.ui-shadow-inset {
+       -moz-box-shadow: inset 0 1px 4px                rgba(0,0,0,.2);
+       -webkit-box-shadow: inset 0 1px 4px     rgba(0,0,0,.2);
+       box-shadow: inset 0 1px 4px                     rgba(0,0,0,.2);
+}
+.ui-icon-shadow {
+       -moz-box-shadow: 0 1px 0                                rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+       -webkit-box-shadow: 0 1px 0                     rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+       box-shadow: 0 1px 0                                     rgba(255,255,255,.4) /*{global-icon-shadow}*/;
+}
+/* Focus state - set here for specificity (note: these classes are added by JavaScript)
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn:focus, .ui-link-inherit:focus {
+       outline: 0;
+}
+.ui-btn.ui-focus {
+       z-index: 1;
+}
+.ui-focus,
+.ui-btn:focus {
+       -moz-box-shadow: inset 0 0 3px          #387bbe /*{global-active-background-color}*/, 0 0 9px           #387bbe /*{global-active-background-color}*/;
+       -webkit-box-shadow: inset 0 0 3px       #387bbe /*{global-active-background-color}*/, 0 0 9px           #387bbe /*{global-active-background-color}*/;
+       box-shadow: inset 0 0 3px                       #387bbe /*{global-active-background-color}*/, 0 0 9px           #387bbe /*{global-active-background-color}*/;
+}
+.ui-input-text.ui-focus,
+.ui-input-search.ui-focus {
+       -moz-box-shadow: 0 0 12px                       #387bbe /*{global-active-background-color}*/;
+       -webkit-box-shadow: 0 0 12px            #387bbe /*{global-active-background-color}*/;
+       box-shadow: 0 0 12px                                    #387bbe /*{global-active-background-color}*/;
+}
+/* unset box shadow in browsers that don't do it right
+-----------------------------------------------------------------------------------------------------------*/
+.ui-mobile-nosupport-boxshadow * {
+       -moz-box-shadow: none !important;
+       -webkit-box-shadow: none !important;
+       box-shadow: none !important;
+}
+/* ...and bring back focus */
+.ui-mobile-nosupport-boxshadow .ui-focus,
+.ui-mobile-nosupport-boxshadow .ui-btn:focus,
+.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus {
+       outline-width: 1px;
+       outline-style: auto;
+}
+/* some unsets - more probably needed */
+.ui-mobile, .ui-mobile body { height: 99.9%; }
+.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; }
+.ui-mobile a img, .ui-mobile fieldset { border-width: 0; }
+/* responsive page widths */
+.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: 100%; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
+/* Issue #2066 */
+body.ui-mobile-viewport,
+div.ui-mobile-viewport { overflow-x: hidden; }
+/* "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%; min-height: 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; }
+/*orientations from js are available */
+@media screen and (orientation: portrait){
+.ui-mobile .ui-page { min-height: 420px; }
+}
+@media screen and (orientation: landscape){
+.ui-mobile .ui-page { min-height: 300px; }
+}
+/* loading screen */
+.ui-loading .ui-loader { display: block; }
+.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; left: 50%; border:0; }
+.ui-loader-default { background: none; filter: Alpha(Opacity=18); opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; }
+.ui-loader-verbose { width: 200px; filter: Alpha(Opacity=88); opacity: .88; box-shadow: 0 1px 1px -1px #fff; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; }
+.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; }
+.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; }
+.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; border-radius: 36px; }
+.ui-loader-verbose .ui-icon { margin: 0 auto 10px; filter: Alpha(Opacity=75); opacity: .75; }
+.ui-loader-textonly { padding: 15px; margin-left: -115px; }
+.ui-loader-textonly .ui-icon { display: none; }
+.ui-loader-fakefix { position: absolute; }
+/*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 { position: relative; zoom: 1; }
+.ui-mobile .ui-header, .ui-mobile .ui-footer { border-left-width: 0; border-right-width: 0; }
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right,
+.ui-footer .ui-btn-left,
+.ui-footer .ui-btn-right,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-left,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-right { position: absolute; top: 3px; }
+.ui-header-fixed .ui-btn-left,
+.ui-header-fixed .ui-btn-right { top: 4px;}
+.ui-header .ui-btn-left,
+.ui-footer .ui-btn-left { left: 5px; }
+.ui-header .ui-btn-right,
+.ui-footer .ui-btn-right { right: 5px; }
+.ui-footer > .ui-btn-icon-notext,
+.ui-header > .ui-btn-icon-notext,
+.ui-header-fixed.ui-fixed-hidden > .ui-btn-icon-notext { top: 6px; }
+.ui-header-fixed > .ui-btn-icon-notext { top: 7px;}
+.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; }
+.ui-footer .ui-title { margin: .6em 15px .8em; }
+/* content area*/
+.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; }
+/* corner styling for dialogs and popups */
+.ui-corner-all > .ui-header:first-child,
+.ui-corner-all > .ui-content:first-child,
+.ui-corner-all > .ui-footer:first-child {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+}
+.ui-corner-all > .ui-header:last-child,
+.ui-corner-all > .ui-content:last-child,
+.ui-corner-all > .ui-footer:last-child {
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+/* icons sizing */
+.ui-icon { width: 18px; height: 18px; }
+/* non-js content hiding */
+.ui-nojs { position: absolute; left: -9999px; }
+/* accessible content hiding */
+.ui-hide-label label.ui-input-text, .ui-hide-label label.ui-select, .ui-hide-label label.ui-slider, .ui-hide-label label.ui-submit, .ui-hide-label .ui-controlgroup-label,
+.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+/* 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;
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+}
+.ui-page-pre-in {
+       opacity: 0;
+}
+.in {
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+       animation-timing-function: ease-out;
+       animation-duration: 350ms;
+}
+.out {
+       -webkit-animation-timing-function: ease-in;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-timing-function: ease-in;
+       -moz-animation-duration: 225ms;
+       animation-timing-function: ease-in;
+       animation-duration: 225ms;
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@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; }
+}
+@keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+.fade.out {
+       opacity: 0;
+       -webkit-animation-duration: 125ms;
+       -webkit-animation-name: fadeout;
+       -moz-animation-duration: 125ms;
+       -moz-animation-name: fadeout;
+       animation-duration: 125ms;
+       animation-name: fadeout;
+}
+.fade.in {
+       opacity: 1;
+       -webkit-animation-duration: 225ms;
+       -webkit-animation-name: fadein;
+       -moz-animation-duration: 225ms;
+       -moz-animation-name: fadein;
+       animation-duration: 225ms;
+       animation-name: fadein;
+}
+.pop {
+       -webkit-transform-origin: 50% 50%;
+       -moz-transform-origin: 50% 50%;
+       transform-origin: 50% 50%;
+}
+.pop.in {
+       -webkit-transform: scale(1);
+       -webkit-animation-name: popin;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: scale(1);
+       -moz-animation-name: popin;
+       -moz-animation-duration: 350ms;
+       transform: scale(1);
+       animation-name: popin;
+       animation-duration: 350ms;
+    opacity: 1;
+}
+.pop.out {
+       -webkit-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-name: fadeout;
+       -moz-animation-duration: 100ms;
+       animation-name: fadeout;
+       animation-duration: 100ms;
+       opacity: 0;
+}
+.pop.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+       animation-name: fadein;
+}
+.pop.out.reverse {
+       -webkit-transform: scale(.8);
+       -webkit-animation-name: popout;
+       -moz-transform: scale(.8);
+       -moz-animation-name: popout;
+       transform: scale(.8);
+       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;
+    }
+}
+@keyframes popin {
+    from {
+        transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        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;
+    }
+}
+@keyframes popout {
+    from {
+        transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        transform: scale(.8);
+        opacity: 0;
+    }
+}
+/* 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: translateX(100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromright {
+    from { transform: translateX(100%); }
+    to { transform: translateX(0); }
+}
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translate3d(-100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromleft {
+    from { -moz-transform: translateX(-100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromleft {
+    from { transform: translateX(-100%); }
+    to { transform: translateX(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: translateX(0); }
+    to { -moz-transform: translateX(-100%); }
+}
+@keyframes slideouttoleft {
+    from { transform: translateX(0); }
+    to { transform: translateX(-100%); }
+}
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(100%,0,0); }
+}
+@-moz-keyframes slideouttoright {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(100%); }
+}
+@keyframes slideouttoright {
+    from { transform: translateX(0); }
+    to { transform: translateX(100%); }
+}
+.slide.out, .slide.in {
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+       animation-timing-function: ease-out;
+       animation-duration: 350ms;
+}
+.slide.out {
+       -webkit-transform: translate3d(-100%,0,0);
+       -webkit-animation-name: slideouttoleft;
+       -moz-transform: translateX(-100%);
+       -moz-animation-name: slideouttoleft;
+       transform: translateX(-100%);
+       animation-name: slideouttoleft;
+}
+.slide.in {
+       -webkit-transform: translate3d(0,0,0);
+       -webkit-animation-name: slideinfromright;
+       -moz-transform: translateX(0);
+       -moz-animation-name: slideinfromright;
+       transform: translateX(0);
+       animation-name: slideinfromright;
+}
+.slide.out.reverse {
+       -webkit-transform: translate3d(100%,0,0);
+       -webkit-animation-name: slideouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: slideouttoright;
+       transform: translateX(100%);
+       animation-name: slideouttoright;
+}
+.slide.in.reverse {
+       -webkit-transform: translate3d(0,0,0);
+       -webkit-animation-name: slideinfromleft;
+       -moz-transform: translateX(0);
+       -moz-animation-name: slideinfromleft;
+       transform: translateX(0);
+       animation-name: slideinfromleft;
+}
+.slidefade.out {
+       -webkit-transform: translateX(-100%);
+       -webkit-animation-name: slideouttoleft;
+       -webkit-animation-duration: 225ms;
+       -moz-transform: translateX(-100%);
+       -moz-animation-name: slideouttoleft;
+       -moz-animation-duration: 225ms;
+       transform: translateX(-100%);
+       animation-name: slideouttoleft;
+       animation-duration: 225ms;
+}
+.slidefade.in {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateX(0);
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 200ms;
+       transform: translateX(0);
+       animation-name: fadein;
+       animation-duration: 200ms;
+}
+.slidefade.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: slideouttoright;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: slideouttoright;
+       -moz-animation-duration: 200ms;
+       transform: translateX(100%);
+       animation-name: slideouttoright;
+       animation-duration: 200ms;
+}
+.slidefade.in.reverse {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateX(0);
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 200ms;
+       transform: translateX(0);
+       animation-name: fadein;
+       animation-duration: 200ms;
+}
+/* slide down */
+.slidedown.out {
+       -webkit-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-name: fadeout;
+       -moz-animation-duration: 100ms;
+       animation-name: fadeout;
+       animation-duration: 100ms;
+}
+.slidedown.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfromtop;
+       -webkit-animation-duration: 250ms;
+       -moz-transform: translateY(0);
+       -moz-animation-name: slideinfromtop;
+       -moz-animation-duration: 250ms;
+       transform: translateY(0);
+       animation-name: slideinfromtop;
+       animation-duration: 250ms;
+}
+.slidedown.in.reverse {
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 150ms;
+       animation-name: fadein;
+       animation-duration: 150ms;
+}
+.slidedown.out.reverse {
+       -webkit-transform: translateY(-100%);
+       -webkit-animation-name: slideouttotop;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateY(-100%);
+       -moz-animation-name: slideouttotop;
+       -moz-animation-duration: 200ms;
+       transform: translateY(-100%);
+       animation-name: slideouttotop;
+       animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translateY(-100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfromtop {
+    from { -moz-transform: translateY(-100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfromtop {
+    from { transform: translateY(-100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(-100%); }
+}
+@-moz-keyframes slideouttotop {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(-100%); }
+}
+@keyframes slideouttotop {
+    from { transform: translateY(0); }
+    to { transform: translateY(-100%); }
+}
+/* slide up */
+.slideup.out {
+       -webkit-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-name: fadeout;
+       -moz-animation-duration: 100ms;
+       animation-name: fadeout;
+       animation-duration: 100ms;
+}
+.slideup.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfrombottom;
+       -webkit-animation-duration: 250ms;
+       -moz-transform: translateY(0);
+       -moz-animation-name: slideinfrombottom;
+       -moz-animation-duration: 250ms;
+       transform: translateY(0);
+       animation-name: slideinfrombottom;
+       animation-duration: 250ms;
+}
+.slideup.in.reverse {
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 150ms;
+       animation-name: fadein;
+       animation-duration: 150ms;
+}
+.slideup.out.reverse {
+       -webkit-transform: translateY(100%);
+       -webkit-animation-name: slideouttobottom;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateY(100%);
+       -moz-animation-name: slideouttobottom;
+       -moz-animation-duration: 200ms;
+       transform: translateY(100%);
+       animation-name: slideouttobottom;
+       animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translateY(100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfrombottom {
+    from { -moz-transform: translateY(100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfrombottom {
+    from { transform: translateY(100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(100%); }
+}
+@-moz-keyframes slideouttobottom {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(100%); }
+}
+@keyframes slideouttobottom {
+    from { transform: translateY(0); }
+    to { transform: translateY(100%); }
+}
+/* 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 {
+       -webkit-perspective: 1000;
+       -moz-perspective: 1000;
+       perspective: 1000;
+       position: absolute;
+}
+.flip {
+       -webkit-backface-visibility: hidden;
+       -webkit-transform: translateX(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: translateX(0);
+       backface-visibility: hidden;
+       transform: translateX(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;
+       transform: rotateY(-90deg) scale(.9);
+       animation-name: flipouttoleft;
+       animation-duration: 175ms;
+}
+.flip.in {
+       -webkit-animation-name: flipintoright;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-name: flipintoright;
+       -moz-animation-duration: 225ms;
+       animation-name: flipintoright;
+       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;
+       transform: rotateY(90deg) scale(.9);
+       animation-name: flipouttoright;
+}
+.flip.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+       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); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { 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); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { 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); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { 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); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* 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: 200px;
+       -moz-perspective: 200px;
+       -ms-perspective: 200px;
+       perspective: 200px;
+       position: absolute;
+}
+.turn {
+       -webkit-backface-visibility: hidden;
+       -webkit-transform: translateX(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: translateX(0);
+       -moz-transform-origin: 0;
+
+       backface-visibility :hidden;
+       transform: translateX(0);
+       transform-origin: 0;
+}
+.turn.out {
+       -webkit-transform: rotateY(-90deg) scale(.9);
+       -webkit-animation-name: flipouttoleft;
+       -webkit-animation-duration: 125ms;
+       -moz-transform: rotateY(-90deg) scale(.9);
+       -moz-animation-name: flipouttoleft;
+       -moz-animation-duration: 125ms;
+       transform: rotateY(-90deg) scale(.9);
+       animation-name: flipouttoleft;
+       animation-duration: 125ms;
+}
+.turn.in {
+       -webkit-animation-name: flipintoright;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-name: flipintoright;
+       -moz-animation-duration: 250ms;
+       animation-name: flipintoright;
+       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;
+       transform: rotateY(90deg) scale(.9);
+       animation-name: flipouttoright;
+}
+.turn.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+       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); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { 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); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { 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); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { 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); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* flow transition */
+.flow {
+       -webkit-transform-origin: 50% 30%;
+       -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4);
+       -moz-transform-origin: 50% 30%;
+       -moz-box-shadow: 0 0 20px rgba(0,0,0,.4);
+       transform-origin: 50% 30%;
+       box-shadow: 0 0 20px rgba(0,0,0,.4);
+}
+.ui-dialog.flow {
+       -webkit-transform-origin: none;
+       -webkit-box-shadow: none;
+       -moz-transform-origin: none;
+       -moz-box-shadow: none;
+       transform-origin: none;
+       box-shadow: none;
+}
+.flow.out {
+       -webkit-transform: translateX(-100%) scale(.7);
+       -webkit-animation-name: flowouttoleft;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translateX(-100%) scale(.7);
+       -moz-animation-name: flowouttoleft;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+       transform: translateX(-100%) scale(.7);
+       animation-name: flowouttoleft;
+       animation-timing-function: ease;
+       animation-duration: 350ms;
+}
+.flow.in {
+       -webkit-transform: translateX(0) scale(1);
+       -webkit-animation-name: flowinfromright;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translateX(0) scale(1);
+       -moz-animation-name: flowinfromright;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+       transform: translateX(0) scale(1);
+       animation-name: flowinfromright;
+       animation-timing-function: ease;
+       animation-duration: 350ms;
+}
+.flow.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: flowouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: flowouttoright;
+       transform: translateX(100%);
+       animation-name: flowouttoright;
+}
+.flow.in.reverse {
+       -webkit-animation-name: flowinfromleft;
+       -moz-animation-name: flowinfromleft;
+       animation-name: flowinfromleft;
+}
+@-webkit-keyframes flowouttoleft {
+    0% { -webkit-transform: translateX(0) scale(1); }
+       60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(-100%) scale(.7); }
+}
+@-moz-keyframes flowouttoleft {
+    0% { -moz-transform: translateX(0) scale(1); }
+       60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(-100%) scale(.7); }
+}
+@keyframes flowouttoleft {
+    0% { transform: translateX(0) scale(1); }
+       60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(-100%) scale(.7); }
+}
+@-webkit-keyframes flowouttoright {
+    0% { -webkit-transform: translateX(0) scale(1); }
+       60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform:  translateX(100%) scale(.7); }
+}
+@-moz-keyframes flowouttoright {
+    0% { -moz-transform: translateX(0) scale(1); }
+       60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(100%) scale(.7); }
+}
+@keyframes flowouttoright {
+    0% { transform: translateX(0) scale(1); }
+       60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(100%) scale(.7); }
+}
+@-webkit-keyframes flowinfromleft {
+    0% { -webkit-transform: translateX(-100%) scale(.7); }
+       30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromleft {
+    0% { -moz-transform: translateX(-100%) scale(.7); }
+       30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromleft {
+    0% { transform: translateX(-100%) scale(.7); }
+       30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+@-webkit-keyframes flowinfromright {
+    0% { -webkit-transform: translateX(100%) scale(.7); }
+       30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromright {
+    0% { -moz-transform: translateX(100%) scale(.7); }
+       30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromright {
+    0% { transform: translateX(100%) scale(.7); }
+       30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+/* 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; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+/* grid solo: 100 - single item fallback */
+.ui-grid-solo .ui-block-a { display: block; float: none; }
+/* Lower percentages for older browsers (i.e. IE7) to prevent wrapping. -.5px to fix BB5 wrap issue. */
+/* grid a: 50/50 */
+.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 49.95%; }
+.ui-grid-a > :nth-child(n) { width: 50%; margin-right: -.5px; }
+.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.25%; }
+.ui-grid-b > :nth-child(n) { width: 33.333%; margin-right: -.5px; }
+.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: 24.925%; }
+.ui-grid-c > :nth-child(n) { width: 25%; margin-right: -.5px; }
+.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: 19.925%; }
+.ui-grid-d > :nth-child(n) { width: 20%; }
+.ui-grid-d .ui-block-a { clear: left; }
+/* preset breakpoint to switch to stacked grid styles below 35em (560px) */
+@media all and (max-width: 35em) {
+       .ui-responsive .ui-block-a,
+       .ui-responsive .ui-block-b,
+       .ui-responsive .ui-block-c,
+       .ui-responsive .ui-block-d,
+       .ui-responsive .ui-block-e {
+               width: 100%;
+               float:none;
+       }
+}
+/* fixed page header & footer configuration */
+.ui-header-fixed,
+.ui-footer-fixed {
+       left: 0;
+       right: 0;
+       width: 100%;
+       position: fixed;
+       z-index: 1000;
+}
+.ui-header-fixed {
+       top: -1px;
+       padding-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden {
+       top: 0;
+       padding-top: 0;
+}
+.ui-footer-fixed {
+       bottom: -1px;
+       padding-bottom: 1px;
+}
+.ui-footer-fixed.ui-fixed-hidden {
+       bottom: 0;
+       padding-bottom: 0;
+}
+.ui-header-fullscreen,
+.ui-footer-fullscreen {
+       filter: Alpha(Opacity=90);
+       opacity: .9;
+}
+.ui-page-header-fixed {
+       padding-top: 2.6875em;
+}
+.ui-page-footer-fixed {
+       padding-bottom: 2.6875em;
+}
+.ui-page-header-fullscreen > .ui-content,
+.ui-page-footer-fullscreen > .ui-content {
+       padding: 0;
+}
+.ui-fixed-hidden {
+       position: absolute;
+}
+.ui-page-header-fullscreen .ui-fixed-hidden,
+.ui-page-footer-fullscreen .ui-fixed-hidden {
+       left: -9999px;
+}
+.ui-header-fixed .ui-btn,
+.ui-footer-fixed .ui-btn {
+       z-index: 10;
+}
+/* workarounds for other widgets */
+.ui-android-2x-fixed .ui-li-has-thumb {
+       -webkit-transform: translate3d(0,0,0);
+}
+.ui-navbar { max-width: 100%; }
+.ui-navbar.ui-mini { margin: 0; }
+.ui-navbar ul:before, .ui-navbar ul:after { content: " "; display: table; }
+.ui-navbar ul:after { clear: both; }
+.ui-navbar ul { list-style:none; margin: 0; padding: 0; position: relative; display: block; border: 0; max-width: 100%; overflow: visible; zoom: 1; }
+.ui-navbar li .ui-btn { display: block; text-align: center; margin: 0 -1px 0 0; border-right-width: 0; }
+.ui-navbar li .ui-btn-icon-right .ui-icon { right: 6px; }
+/* add border if not in header/footer (full width) */
+.ui-navbar li:last-child .ui-btn,
+.ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: 0; border-right-width: 1px; }
+.ui-header .ui-navbar li:last-child .ui-btn,
+.ui-footer .ui-navbar li:last-child .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: -1px; border-right-width: 0; }
+.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn { margin-right: -1px; border-right-width: 1px; }
+.ui-header .ui-navbar li .ui-btn,
+.ui-footer .ui-navbar li .ui-btn { border-top-width: 0; border-bottom-width: 0; }
+/* fixing gaps caused by subpixel problem */
+.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn,
+.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn { margin-right: -5px; }
+.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,
+.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,
+.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn,
+.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn { margin-right: -4px; }
+.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,
+.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,
+.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon { right: 8px; }
+.ui-navbar li .ui-btn .ui-btn-inner { padding-top: .7em; padding-bottom: .8em }
+.ui-navbar li .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; }
+.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; }
+.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 0; padding: 0; }
+.ui-mini { margin-top: .25em; margin-bottom: .25em; }
+.ui-btn-left, .ui-btn-right, .ui-input-clear, .ui-btn-inline,
+.ui-grid-a .ui-btn, .ui-grid-b .ui-btn, .ui-grid-c .ui-btn, .ui-grid-d .ui-btn, .ui-grid-e .ui-btn, .ui-grid-solo .ui-btn { margin-right: 5px; margin-left: 5px; }
+.ui-btn-inner { font-size: 16px; padding: .6em 20px; min-width: .75em; display: block; position: relative; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; zoom: 1; }
+.ui-btn input, .ui-btn button { z-index: 2; }
+.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; vertical-align: middle; }
+.ui-mobile .ui-btn-left, .ui-mobile .ui-btn-right, .ui-btn-left > .ui-btn, .ui-btn-right > .ui-btn { margin: 0; } /* .ui-mobile to increase specificity level */
+.ui-btn-block { display: block; }
+.ui-header > .ui-btn,
+.ui-footer > .ui-btn { display: inline-block; margin: 0; }
+.ui-header .ui-btn-block,
+.ui-footer .ui-btn-block { display: block; }
+.ui-header .ui-btn-inner,
+.ui-footer .ui-btn-inner,
+.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; }
+.ui-fullsize .ui-btn-inner,
+.ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 20px; }
+.ui-btn-icon-notext { width: 24px; height: 24px; }
+.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; }
+.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; float: left; }
+.ui-btn-text { position: relative; z-index: 1; width: 100%; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; }
+div.ui-btn-text { width: auto; }
+.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; }
+.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; }
+.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; }
+.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; }
+.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; }
+.ui-header .ui-btn-icon-left .ui-btn-inner,
+.ui-footer .ui-btn-icon-left .ui-btn-inner,
+.ui-mini.ui-btn-icon-left .ui-btn-inner,
+.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; }
+.ui-header .ui-btn-icon-right .ui-btn-inner,
+.ui-footer .ui-btn-icon-right .ui-btn-inner,
+.ui-mini.ui-btn-icon-right .ui-btn-inner,
+.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; }
+.ui-header .ui-btn-icon-top .ui-btn-inner,
+.ui-footer .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; }
+.ui-mini.ui-btn-icon-top .ui-btn-inner,
+.ui-mini .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; }
+.ui-header .ui-btn-icon-bottom .ui-btn-inner,
+.ui-footer .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; }
+.ui-mini.ui-btn-icon-bottom .ui-btn-inner,
+.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; }
+/* Corner styling inheritance */
+.ui-btn-inner {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+/*btn icon positioning*/
+.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;}
+.ui-btn-icon-left > .ui-btn-inner > .ui-icon, .ui-btn-icon-right > .ui-btn-inner > .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
+.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; }
+.ui-btn-icon-left .ui-icon { left: 10px; }
+.ui-btn-icon-right .ui-icon { right: 10px; }
+.ui-btn-icon-top .ui-icon { top: 10px; }
+.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; }
+.ui-header .ui-btn-icon-left .ui-icon,
+.ui-footer .ui-btn-icon-left .ui-icon,
+.ui-mini.ui-btn-icon-left .ui-icon,
+.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; }
+.ui-header .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-btn-icon-right .ui-icon,
+.ui-mini.ui-btn-icon-right .ui-icon,
+.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; }
+.ui-header .ui-btn-icon-top .ui-icon,
+.ui-footer .ui-btn-icon-top .ui-icon,
+.ui-mini.ui-btn-icon-top .ui-icon,
+.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; }
+.ui-header .ui-btn-icon-bottom .ui-icon,
+.ui-footer .ui-btn-icon-bottom .ui-icon,
+.ui-mini.ui-btn-icon-bottom .ui-icon,
+.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; }
+/*hiding native button,inputs */
+.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: none; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=0); opacity: .1; font-size: 1px; border: none; text-indent: -9999px; }
+/* Fixes IE/WP filter alpha opacity bugs */
+.ui-disabled .ui-btn-hidden { display: none; }
+.ui-disabled { z-index: 1; }
+.ui-field-contain .ui-btn.ui-submit { margin: 0; }
+label.ui-submit { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; }
+@media all and (min-width: 28em){
+       .ui-field-contain label.ui-submit { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-btn.ui-submit { width: 78%; display: inline-block; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+       .ui-hide-label .ui-btn.ui-submit { width: auto; display: block; }
+}
+.ui-collapsible-inset { margin: .5em 0; }
+.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -15px; padding: 0; position: relative; }
+.ui-collapsible-inset .ui-collapsible-heading { margin: 0; }
+.ui-collapsible-heading .ui-btn { text-align: left; margin: 0; border-left-width: 0; border-right-width: 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-btn-inner { padding-left: 12px; padding-right: 12px; }
+.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; }
+.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-right: 40px; }
+.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,
+.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { text-align: center; }
+.ui-collapsible-heading .ui-btn-icon-left.ui-mini .ui-btn-inner { padding-left: 30px; }
+.ui-collapsible-heading .ui-btn-icon-right.ui-mini .ui-btn-inner { padding-right: 30px; }
+.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: 10px 15px;
+       border-left-width: 0;
+       border-right-width: 0;
+       border-top: none;      /* Overrides ui-body-* */
+       background-image: none; /* Overrides ui-body-* */
+}
+.ui-collapsible-inset .ui-collapsible-content { margin: 0; border-right-width: 1px; border-left-width: 1px; }
+.ui-collapsible-content-collapsed { display: none; }
+.ui-collapsible-set > .ui-collapsible.ui-corner-all {
+       -webkit-border-radius: 0;
+       border-radius: 0;
+}
+.ui-collapsible-heading,
+.ui-collapsible-heading > .ui-btn {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+}
+.ui-collapsible-content,
+.ui-collapsible-set .ui-collapsible.ui-last-child {
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-collapsible-themed-content:not(.ui-collapsible-collapsed) > .ui-collapsible-heading {
+       -webkit-border-bottom-right-radius: 0;
+       border-bottom-right-radius: 0;
+       -webkit-border-bottom-left-radius: 0;
+       border-bottom-left-radius: 0;
+}
+.ui-collapsible-set { margin: .5em 0; }
+.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; }
+.ui-collapsible-set .ui-collapsible.ui-first-child { margin-top: 0; }
+.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: .5em 0; zoom: 1; }
+.ui-controlgroup.ui-mini, fieldset.ui-controlgroup.ui-mini { margin: .25em 0; }
+.ui-field-contain .ui-controlgroup, .ui-field-contain fieldset.ui-controlgroup { margin: 0; }
+.ui-bar .ui-controlgroup { margin: 0 5px; }
+.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; }
+.ui-controlgroup-controls label.ui-select,
+.ui-controlgroup-controls label.ui-submit { position: absolute; left: -9999px; }
+.ui-controlgroup li { list-style: none; }
+.ui-controlgroup .ui-btn { margin: 0; }
+.ui-controlgroup .ui-btn-icon-notext { width: auto; height: auto; top: auto; }
+.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 20px; padding: .6em 20px .6em 20px }
+.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner { width: 18px; }
+.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner,
+.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner,
+.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 16px; padding: .55em 11px .5em 11px; }
+.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; right: 50%; margin: -9px -9px 0 0; }
+.ui-controlgroup-horizontal .ui-btn-inner { text-align: center; }
+.ui-controlgroup-horizontal.ui-mini .ui-btn-inner { height: 16px; line-height: 16px; }
+.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls:before,
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after { content: ""; display: table; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after { clear: both; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls { display: inline-block; vertical-align: middle; zoom: 1; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls > .ui-btn, .ui-controlgroup-horizontal .ui-controlgroup-controls li > .ui-btn,
+.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio,
+.ui-controlgroup-horizontal .ui-select { float: left; clear: none; margin: 0; }
+/* On IE7 the floating selects will be displayed as block if .ui-btn-text has width 100% */
+.ui-controlgroup-horizontal .ui-select .ui-btn-text { width: auto; }
+.ui-controlgroup-vertical .ui-btn {    border-bottom-width: 0; }
+.ui-controlgroup-vertical .ui-btn.ui-last-child { border-bottom-width: 1px; }
+.ui-controlgroup-horizontal .ui-btn { border-right-width: 0; }
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {    border-right-width: 1px; }
+.ui-controlgroup .ui-btn-corner-all {
+       -webkit-border-radius: 0;
+       border-radius: 0;
+}
+.ui-controlgroup .ui-controlgroup-controls,
+.ui-controlgroup .ui-radio,
+.ui-controlgroup .ui-checkbox,
+.ui-controlgroup .ui-select,
+.ui-controlgroup li {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-first-child {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-last-child {
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-first-child {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+.ui-controlgroup .ui-shadow:not(.ui-focus) {
+       -moz-box-shadow: none;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+@media all and (min-width: 28em){
+       .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-controlgroup-controls { width: 78%; display: inline-block; }
+       .ui-field-contain .ui-controlgroup .ui-select { width: 100%; display: block; }
+       .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; }
+       .ui-hide-label .ui-controlgroup-controls { width: 100%; }
+}
+.ui-dialog {
+        background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */
+}
+.ui-dialog-contain {
+       width: 92.5%;
+       max-width: 500px;
+       margin: 10% auto 15px auto;
+       padding: 0;
+       position: relative;
+       top: -15px;
+}
+.ui-dialog-contain > .ui-header,
+.ui-dialog-contain > .ui-content,
+.ui-dialog-contain > .ui-footer {
+       display: block;
+       position: relative;
+       width: auto;
+       margin: 0;
+}
+.ui-dialog-contain > .ui-header {
+       border: none;
+       overflow: hidden;
+       z-index: 10;
+       padding: 0;
+}
+.ui-dialog-contain > .ui-content {
+       padding: 15px;
+}
+.ui-dialog-contain > .ui-footer {
+       z-index: 10;
+       padding: 0 15px;
+}
+.ui-popup-open .ui-header-fixed,
+.ui-popup-open .ui-footer-fixed {
+       position: absolute !important;  /* See line #553 of popup.js */
+}
+.ui-popup-screen {
+       background-image: url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 1px;
+       position: absolute;
+       filter: Alpha(Opacity=0);
+       opacity: 0;
+       z-index: 1099;
+}
+.ui-popup-screen.in {
+       opacity: 0.5;
+       filter: Alpha(Opacity=50);
+}
+.ui-popup-screen.out {
+       opacity: 0;
+       filter: Alpha(Opacity=0);
+}
+.ui-popup-container {
+       z-index: 1100;
+       display: inline-block;
+       position: absolute;
+       padding: 0;
+       outline: 0;
+}
+.ui-popup {
+       position: relative;
+}
+.ui-popup.ui-content,
+.ui-popup .ui-content {
+       overflow: visible;
+}
+.ui-popup > p,
+.ui-popup > h1,
+.ui-popup > h2,
+.ui-popup > h3,
+.ui-popup > h4,
+.ui-popup > h5,
+.ui-popup > h6 {
+       margin: .5em 7px;
+}
+.ui-popup > span {
+       display: block;
+       margin: .5em 7px;
+}
+.ui-popup .ui-title {
+       font-size: 16px;
+       font-weight: bold;
+       margin-top: .5em;
+       margin-bottom: .5em;
+}
+.ui-popup-container .ui-content > p,
+.ui-popup-container .ui-content > h1,
+.ui-popup-container .ui-content > h2,
+.ui-popup-container .ui-content > h3,
+.ui-popup-container .ui-content > h4,
+.ui-popup-container .ui-content > h5,
+.ui-popup-container .ui-content > h6 {
+       margin: .5em 0;
+}
+.ui-popup-container .ui-content > span {
+       margin: 0;
+}
+.ui-popup-container .ui-content > p:first-child,
+.ui-popup-container .ui-content > h1:first-child,
+.ui-popup-container .ui-content > h2:first-child,
+.ui-popup-container .ui-content > h3:first-child,
+.ui-popup-container .ui-content > h4:first-child,
+.ui-popup-container .ui-content > h5:first-child,
+.ui-popup-container .ui-content > h6:first-child {
+       margin-top: 0;
+}
+.ui-popup-container .ui-content > p:last-child,
+.ui-popup-container .ui-content > h1:last-child,
+.ui-popup-container .ui-content > h2:last-child,
+.ui-popup-container .ui-content > h3:last-child,
+.ui-popup-container .ui-content > h4:last-child,
+.ui-popup-container .ui-content > h5:last-child,
+.ui-popup-container .ui-content > h6:last-child {
+       margin-bottom: 0;
+}
+.ui-popup > img {
+       width: auto;
+       height: auto;
+       max-width: 100%;
+       max-height: 100%;
+       vertical-align: middle;
+}
+.ui-popup:not(.ui-content) > img:only-child,
+.ui-popup:not(.ui-content) > .ui-btn-left:first-child + img:last-child,
+.ui-popup:not(.ui-content) > .ui-btn-right:first-child + img:last-child {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-popup iframe {
+       vertical-align: middle;
+}
+@media all and (min-width: 28em){
+       .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; }
+.ui-popup-hidden { top: -99999px; left: -9999px; }
+.ui-checkbox, .ui-radio { position: relative; clear: both; margin: 0; z-index: 1; }
+.ui-checkbox .ui-btn, .ui-radio .ui-btn { text-align: left; z-index: 2; }
+.ui-controlgroup .ui-checkbox .ui-btn, .ui-controlgroup .ui-radio .ui-btn { margin: 0; }
+.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; }
+.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; }
+.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; }
+.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; }
+.ui-checkbox .ui-btn-icon-top .ui-btn-inner, .ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; }
+.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; }
+.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; }
+.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; }
+.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; }
+.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; }
+.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; }
+.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-icon,
+.ui-controlgroup-horizontal .ui-radio .ui-icon { display: none; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn-inner,
+.ui-controlgroup-horizontal .ui-radio .ui-btn-inner { padding: .6em 20px; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-mini .ui-btn-inner,
+.ui-controlgroup-horizontal .ui-radio .ui-mini .ui-btn-inner { padding: .55em 11px .5em; }
+/* input, label positioning */
+.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; }
+.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; }
+.ui-field-contain:last-child { border-bottom-width: 0; }
+.ui-field-contain { max-width: 100%; } /* This prevents horizontal scrollbar in IE7 */
+@media all and (min-width: 28em){
+       .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; }
+}
+.ui-select { display: block; position: relative; }
+.ui-select select { position: absolute; left: -9999px; top: -9999px; }
+.ui-select .ui-btn { opacity: 1; }
+.ui-field-contain .ui-select .ui-btn { margin: 0; }
+/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
+.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: none; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; filter: Alpha(Opacity=0); opacity: 0; z-index: 2; }
+.ui-select .ui-disabled { opacity: .3; }
+/* Display none because of issues with IE/WP's filter alpha opacity */
+.ui-select .ui-disabled select { display: none; }
+@-moz-document url-prefix() { .ui-select .ui-btn select { opacity: 0.0001; }}
+.ui-select .ui-btn.ui-select-nativeonly { border-radius: 0; border: 0; }
+.ui-select .ui-btn.ui-select-nativeonly select { opacity: 1; text-indent: 0; display: block; }
+.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner { opacity: 0; }
+.ui-select .ui-btn-icon-right .ui-btn-inner, .ui-select .ui-li-has-count .ui-btn-inner { padding-right: 45px; }
+.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 32px; }
+.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 80px; }
+.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 67px; }
+.ui-select .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; }
+.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 45px; }
+.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 32px; }
+/* 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; overflow: hidden !important;
+/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ }
+.ui-select .ui-btn-text { text-overflow: ellipsis; }
+.ui-selectmenu { padding: 6px; min-width: 160px; }
+.ui-selectmenu .ui-listview { margin: 0; }
+.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; }
+.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 { margin: 0; padding: 0; }
+.ui-selectmenu.ui-popup .ui-header { -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; }
+.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; }
+@media all and (min-width: 28em){
+       .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-select { width: 78%; display: inline-block; }
+       .ui-hide-label .ui-select { width: 100%; }
+}
+/* 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; }
+label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; }
+input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; margin: .5em 0; min-height: 1.4em; line-height: 1.4em; font-size: 16px; display: block; width: 100%; outline: 0; }
+input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; }
+div.ui-input-text input.ui-input-text, div.ui-input-text textarea.ui-input-text,
+.ui-input-search input.ui-input-text { border: none; width: 100%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; }
+.ui-input-search, div.ui-input-text { margin: .5em 0; background-image: none; position: relative; }
+.ui-input-search { padding: 0 30px; }
+div.ui-input-text { padding: 0 .4em; }
+div.ui-input-has-clear { padding: 0 30px 0 .4em; }
+input.ui-input-text.ui-mini, textarea.ui-input-text.ui-mini,
+.ui-input-search.ui-mini, div.ui-input-text.ui-mini { margin: .25em 0; }
+.ui-field-contain input.ui-input-text, .ui-field-contain textarea.ui-input-text,
+.ui-field-contain .ui-input-search, .ui-field-contain div.ui-input-text { margin: 0; }
+textarea.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+input.ui-input-text { -webkit-appearance: none; }
+textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; }
+textarea.ui-mini { height: 45px; }
+.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; }
+.ui-input-search .ui-input-clear, .ui-input-text .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; }
+.ui-mini .ui-input-clear { right: -3px; }
+.ui-input-search .ui-input-clear-hidden, .ui-input-text .ui-input-clear-hidden { display: none; }
+/* Resolves issue #5166: Added to support issue introduced in Firefox 15. We can likely remove this in the future. */
+input::-moz-placeholder, textarea::-moz-placeholder { color: #aaa; }
+/* Resolves issue #5131: Width of textinput depends on its type, for Android 4.1 */
+input[type=number]::-webkit-outer-spin-button { margin: 0; }
+@media all and (min-width: 28em){
+       .ui-field-contain label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 }
+       .ui-field-contain input.ui-input-text,
+       .ui-field-contain textarea.ui-input-text,
+       .ui-field-contain .ui-input-search,
+       .ui-field-contain div.ui-input-text { width: 78%; display: inline-block; }
+       .ui-field-contain .ui-input-search,
+       .ui-field-contain div.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+       .ui-hide-label input.ui-input-text,
+       .ui-hide-label textarea.ui-input-text,
+       .ui-hide-label .ui-input-search,
+       .ui-hide-label div.ui-input-text,
+       .ui-input-search input.ui-input-text,
+       div.ui-input-text input.ui-input-text { width: 100%; }
+}
+.ui-rangeslider {
+       zoom: 1;
+       margin: 0;
+}
+.ui-rangeslider:before,
+.ui-rangeslider:after {
+       content: "";
+       display: table;
+}
+.ui-rangeslider:after {
+       clear: both;
+}
+/* Margin-top/bottom: .5em * 16px/14px to make it equal to ui-rangeslider-sliders margin (input font-size is 14px) */
+.ui-rangeslider input.ui-input-text.ui-slider-input {
+       margin: .57143em 0;
+}
+.ui-rangeslider.ui-mini input.ui-slider-input {
+       margin: .28571em 0;
+}
+.ui-rangeslider input.ui-slider-input.ui-rangeslider-last {
+       float: right;
+}
+.ui-rangeslider .ui-rangeslider-sliders {
+       position: relative;
+       overflow: visible;
+       height: 30px;
+       margin: .5em 68px;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+       margin: .25em 68px;
+}
+.ui-field-contain .ui-rangeslider input.ui-slider-input,
+.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,
+.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+       margin-top: 0;
+       margin-bottom: 0;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track {
+       position: absolute;
+       top: 6px;
+       right: 0;
+       left: 0;
+       margin: 0;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track {
+       top: 8px;
+}
+.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg {
+       display: none;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+       background-color: transparent;
+       background: none;
+       border-width: 0;
+       height: 0;
+}
+/* this makes ie6 and ie7 set height to 0 to fix z-index problem */
+html >/**/body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+       height: 15px;
+       border-width: 1px;
+}
+html >/**/body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child {
+       height: 12px;
+}
+@media all and (min-width: 28em){
+       .ui-field-contain .ui-rangeslider label.ui-slider {
+               float: left;
+       }
+       .ui-field-contain .ui-rangeslider input.ui-slider-input {
+               position: relative;
+               z-index: 1;
+       }
+       .ui-field-contain .ui-rangeslider input.ui-slider-input.ui-rangeslider-first,
+       .ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input.ui-rangeslider-first {
+               margin-right: 17px;
+       }
+       .ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+       .ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+               float: left;
+               width: 78%;
+               margin: 0 -68px;
+       }
+       .ui-field-contain .ui-rangeslider .ui-slider-track,
+       .ui-field-contain .ui-rangeslider.ui-mini .ui-slider-track {
+               right: 68px;
+               left: 68px;
+       }
+       .ui-field-contain.ui-hide-label .ui-rangeslider input.ui-slider-input.ui-rangeslider-first {
+               margin: 0;
+       }
+       .ui-field-contain.ui-hide-label .ui-rangeslider .ui-rangeslider-sliders,
+       .ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+               width: auto;
+               float: none;
+               margin: 0 68px;
+       }
+       .ui-field-contain.ui-hide-label .ui-rangeslider .ui-slider-track,
+       .ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-slider-track {
+               right: 0;
+               left: 0;
+       }
+}
+.ui-listview { margin: 0; }
+ol.ui-listview, ol.ui-listview .ui-li-divider { counter-reset: listnumbering; }
+.ui-content .ui-listview, .ui-panel-inner > .ui-listview { margin: -15px; }
+.ui-collapsible-content > .ui-listview { margin: -10px -15px; }
+.ui-content .ui-listview-inset, .ui-panel-inner .ui-listview-inset { margin: 1em 0; }
+.ui-collapsible-content .ui-listview-inset { margin: .5em 0; }
+.ui-listview, .ui-li { list-style: none; padding: 0; }
+.ui-li, .ui-li.ui-field-contain { display: block; margin: 0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; }
+.ui-li.ui-btn, .ui-li.ui-field-contain, .ui-li-divider, .ui-li-static { margin: 0; }
+.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; }
+.ui-li.ui-last-child, .ui-li.ui-field-contain.ui-last-child { border-bottom-width: 1px; }
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > .ui-li.ui-first-child { border-top-width: 0; }
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > .ui-li.ui-last-child { border-bottom-width: 0; }
+.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-static { background-image: none; }
+.ui-li-divider { padding: .5em 15px; font-size: 14px; font-weight: bold; }
+ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal; counter-increment: listnumbering; content: counter(listnumbering) ". "; }
+ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */
+.ui-listview .ui-li > .ui-btn-text {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-listview > .ui-li.ui-first-child,
+.ui-listview .ui-btn.ui-first-child > .ui-li > .ui-btn-text > .ui-link-inherit {
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+}
+.ui-listview > .ui-li.ui-last-child,
+.ui-listview .ui-btn.ui-last-child > .ui-li > .ui-btn-text > .ui-link-inherit,
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset),
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li.ui-last-child {
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-listview > .ui-li.ui-first-child .ui-li-link-alt {
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+}
+.ui-listview > .ui-li.ui-last-child .ui-li-link-alt {
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+.ui-listview > .ui-li.ui-first-child .ui-li-thumb:not(.ui-li-icon) {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+}
+.ui-listview > .ui-li.ui-last-child .ui-li-thumb:not(.ui-li-icon) {
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; }
+.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px; display: block; }
+.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb  { min-height: 59px; padding-left: 100px; }
+.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; }
+.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count, .ui-li-divider.ui-li-has-count { padding-right: 45px; }
+.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 40px; }
+.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; }
+.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+ol.ui-listview > .ui-li .ui-li-heading { display: inline-block; width: 100%; margin-left: -1.3em; text-indent: 1.3em; vertical-align: middle; }
+ol.ui-listview > .ui-li .ui-li-desc:not(.ui-li-aside) { text-indent: 1.55em; }
+.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; }
+.ui-listview .ui-li-icon { max-height: 16px; max-width: 16px; left: 10px; top: .9em; }
+.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; }
+.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; }
+@media all and (min-width: 480px){
+        .ui-li-aside { width: 45%; }
+}
+.ui-li-divider { cursor: default; }
+.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 53px; }
+.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt.ui-li-has-count { padding-right: 88px; }
+.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 10px; }
+.ui-li-has-count.ui-li-divider .ui-li-count, .ui-li-has-count .ui-link-inherit .ui-li-count { margin-top: -.95em; }
+.ui-li-has-arrow.ui-li-has-count .ui-li-count { right: 40px; }
+.ui-li-has-alt.ui-li-has-count .ui-li-count { right: 53px; }
+.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; }
+.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -13px 0 0 0; border-bottom-width: 1px; z-index: -1;}
+.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;}
+.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; }
+.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
+.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0; }
+.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px; }
+.ui-collapsible-content .ui-listview-filter { margin: -10px -15px 10px -15px; border-bottom: inherit; }
+.ui-listview-filter-inset { margin: -15px -5px; background: transparent; }
+.ui-collapsible-content .ui-listview-filter-inset { margin: -5px; border-bottom-width: 0; }
+.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; }
+.ui-li.ui-screen-hidden{ display:none; }
+/* Odd iPad positioning issue. */
+@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
+    .ui-li .ui-btn-text { overflow:  visible; }
+}
+label.ui-slider {
+       font-size: 16px;
+       line-height: 1.4;
+       font-weight: normal;
+       margin: 0;
+       display: block;
+}
+.ui-field-contain label.ui-slider {
+       margin-bottom: .4em;
+}
+div.ui-slider {
+       height: 30px;
+       margin: .5em 0;
+       zoom: 1;
+}
+div.ui-slider.ui-mini {
+       margin: .25em 0;
+}
+.ui-field-contain div.ui-slider,
+.ui-field-contain div.ui-slider.ui-mini {
+       margin: 0;
+}
+div.ui-slider:before, div.ui-slider:after {
+       content: "";
+       display: table;
+}
+div.ui-slider:after {
+       clear: both;
+}
+/* High level of specificity to override Textinput CSS. */
+input.ui-input-text.ui-slider-input {
+       display: block;
+       float: left;
+       margin: 0;
+       padding: 4px;
+       width: 40px;
+       height: 22px;
+       line-height: 22px;
+       font-size: 14px;
+       border-width: 0;
+       background-image: none;
+       font-weight: bold;
+       text-align: center;
+       vertical-align: text-bottom;
+       outline: 0;
+       -webkit-box-sizing: content-box;
+       -moz-box-sizing: content-box;
+       -ms-box-sizing: content-box;
+       box-sizing: content-box;
+}
+.ui-slider-input::-webkit-outer-spin-button,
+.ui-slider-input::-webkit-inner-spin-button {
+       -webkit-appearance: none;
+       margin: 0;
+}
+.ui-slider-track,
+.ui-slider-switch {
+       position: relative;
+       overflow: visible;
+       height: 15px;
+       margin: 0 15px 0 68px;
+       top: 6px;
+}
+.ui-slider-track.ui-mini {
+       height: 12px;
+       top: 8px;
+}
+.ui-slider-bg {
+       border: none;
+       height: 100%;
+}
+/* High level of specificity to override button margins in grids */
+.ui-slider-track .ui-btn.ui-slider-handle,
+.ui-slider-switch .ui-btn.ui-slider-handle {
+       position: absolute;
+       z-index: 1;
+       top: 50%;
+       width: 28px;
+       height: 28px;
+       margin: -15px 0 0 -15px;
+       outline: 0;
+}
+.ui-slider-track.ui-mini .ui-slider-handle {
+       height: 14px;
+       width: 14px;
+       margin: -8px 0 0 -7px;
+}
+.ui-slider-handle .ui-btn-inner {
+       padding: 0;
+       height: 100%;
+}
+.ui-slider-track.ui-mini .ui-slider-handle .ui-btn-inner {
+       height: 30px;
+       width: 30px;
+       padding: 0;
+       margin: -9px 0 0 -9px;
+       border-top: none;
+}
+select.ui-slider-switch {
+       display: none;
+}
+div.ui-slider-switch {
+       display: inline-block;
+       height: 32px;
+       width: 5.8em;
+       margin: .5em 0;
+       top: 0;
+}
+/* reset the clearfix */
+div.ui-slider-switch:before, div.ui-slider-switch:after {
+       display: none;
+       clear: none;
+}
+div.ui-slider-switch.ui-mini {
+       width: 5em;
+       height: 29px;
+       margin: .25em 0;
+       top: 0;
+}
+.ui-field-contain .ui-slider-switch,
+.ui-field-contain .ui-slider-switch.ui-mini {
+       margin: 0;
+}
+.ui-slider-inneroffset {
+       margin: 0 16px;
+       position: relative;
+       z-index: 1;
+}
+.ui-slider-switch.ui-mini .ui-slider-inneroffset {
+       margin: 0 15px 0 14px;
+}
+.ui-slider-switch .ui-btn.ui-slider-handle {
+       margin: 1px 0 0 -15px;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle {
+       width: 25px;
+       height: 25px;
+       margin: 1px 0 0 -13px;
+       padding: 0;
+}
+.ui-slider-handle-snapping {
+       -webkit-transition: left 70ms linear;
+       -moz-transition: left 70ms linear;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle .ui-btn-inner {
+       height: 30px;
+       width: 30px;
+       padding: 0;
+       margin: 0;
+       border-top: none;
+}
+.ui-slider-switch .ui-slider-label {
+       position: absolute;
+       text-align: center;
+       width: 100%;
+       overflow: hidden;
+       font-size: 16px;
+       top: 0;
+       line-height: 2;
+       min-height: 100%;
+       border-width: 0;
+       white-space: nowrap;
+       cursor: pointer;
+}
+.ui-slider-switch.ui-mini .ui-slider-label {
+       font-size: 14px;
+}
+.ui-slider-switch .ui-slider-label-a {
+       z-index: 1;
+       left: 0;
+       text-indent: -1.5em;
+}
+.ui-slider-switch .ui-slider-label-b {
+       z-index: 0;
+       right: 0;
+       text-indent: 1.5em;
+}
+@media all and (min-width: 28em){
+       .ui-field-contain label.ui-slider {
+               vertical-align: top;
+               display: inline-block;
+               width: 20%;
+               margin: 0 2% 0 0;
+       }
+       .ui-field-contain div.ui-slider {
+               display: inline-block;
+               width: 78%;
+       }
+       .ui-field-contain.ui-hide-label div.ui-slider {
+               display: block;
+               width: auto;
+       }
+       .ui-field-contain div.ui-slider-switch,
+       .ui-field-contain.ui-hide-label div.ui-slider-switch {
+               display: inline-block;
+               width: 5.8em;
+       }
+       .ui-field-contain div.ui-slider-switch.ui-mini {
+               width: 5em;
+       }
+}
+.ui-table {
+   border: 0;
+   border-collapse: collapse;
+   padding: 0;
+   width: 100%;
+}
+.ui-table th,
+.ui-table td {
+  line-height: 1.5em;
+  text-align: left;
+  padding: .4em .5em;
+  vertical-align:top;
+}
+.ui-table th .ui-btn,
+.ui-table td .ui-btn {
+       line-height: normal;
+}
+.ui-table th {
+  font-weight: bold;
+}
+.ui-table caption {
+  text-align:left;
+  margin-bottom:1.4em;
+  opacity: .5;
+}
+/* Add strokes between each row */
+.table-stroke thead th {
+  border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
+  border-bottom: 1px solid rgba(0, 0, 0, .1);
+}
+.table-stroke tbody th,
+.table-stroke tbody td {
+  border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback  */
+  border-bottom: 1px solid rgba(0, 0, 0, .05);
+}
+/* Add alternating row stripes */
+.table-stripe tbody tr:nth-child(odd) td,
+.table-stripe tbody tr:nth-child(odd) th {
+  background-color: #eeeeee; /* non-RGBA fallback  */
+  background-color: rgba(0,0,0,0.04);
+}
+/* Add stroke to the header and last item */
+.table-stripe thead th,
+.table-stripe tbody tr:last-child {
+  border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback  */
+  border-bottom: 1px solid rgba(0, 0, 0, .1);
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-columntoggle-btn {
+       float: right;
+       margin-bottom:.8em;
+}
+/* Remove top/bottom margins around the fieldcontain on check list */
+.ui-table-columntoggle-popup fieldset {
+       margin:0;
+}
+/* Hide all prioritized columns by default */
+@media only all {
+       th.ui-table-priority-6,
+       td.ui-table-priority-6,
+       th.ui-table-priority-5,
+       td.ui-table-priority-5,
+       th.ui-table-priority-4,
+       td.ui-table-priority-4,
+       th.ui-table-priority-3,
+       td.ui-table-priority-3,
+       th.ui-table-priority-2,
+       td.ui-table-priority-2,
+       th.ui-table-priority-1,
+       td.ui-table-priority-1 {
+               display: none;
+       }
+}
+/* Preset breakpoints if ".ui-responsive" class added to table */
+/* Show priority 1 at 320px (20em x 16px) */
+@media screen and (min-width: 20em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-1,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-1 {
+               display: table-cell;
+       }
+}
+/* Show priority 2 at 480px (30em x 16px) */
+@media screen and (min-width: 30em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-2,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-2 {
+               display: table-cell;
+       }
+}
+/* Show priority 3 at 640px (40em x 16px) */
+@media screen and (min-width: 40em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-3,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-3 {
+               display: table-cell;
+       }
+}
+/* Show priority 4 at 800px (50em x 16px) */
+@media screen and (min-width: 50em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-4,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-4 {
+               display: table-cell;
+       }
+}
+/* Show priority 5 at 960px (60em x 16px) */
+@media screen and (min-width: 60em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-5,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-5 {
+               display: table-cell;
+       }
+}
+/* Show priority 6 at 1,120px (70em x 16px) */
+@media screen and (min-width: 70em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-6,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-6 {
+               display: table-cell;
+       }
+}
+/* Unchecked manually: Always hide */
+.ui-table-columntoggle th.ui-table-cell-hidden,
+.ui-table-columntoggle td.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden {
+       display: none;
+}
+/* Checked manually: Always show */
+.ui-table-columntoggle th.ui-table-cell-visible,
+.ui-table-columntoggle td.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible {
+       display: table-cell;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-reflow td .ui-table-cell-label,
+.ui-table-reflow th .ui-table-cell-label {
+       display: none;
+}
+/* Mobile first styles: Begin with the stacked presentation at narrow widths */
+@media only all {
+       /* Hide the table headers */
+       .ui-table-reflow thead td,
+       .ui-table-reflow thead th {
+               display: none;
+       }
+       /* Show the table cells as a block level element */
+       .ui-table-reflow td,
+       .ui-table-reflow th {
+               text-align: left;
+               display: block;
+       }
+       /* Add a fair amount of top margin to visually separate each row when stacked */
+       .ui-table-reflow tbody th {
+               margin-top: 3em;
+       }
+       /* Make the label elements a percentage width */
+       .ui-table-reflow td .ui-table-cell-label,
+       .ui-table-reflow th .ui-table-cell-label {
+               display: block;
+               padding: .4em;
+               min-width: 30%;
+               display: inline-block;
+               margin: -.4em 1em -.4em -.4em;
+       }
+       /* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */
+       .ui-table-reflow th .ui-table-cell-label-top,
+       .ui-table-reflow td .ui-table-cell-label-top {
+               display: block;
+               padding: .4em 0;
+               margin: .4em 0;
+               text-transform: uppercase;
+               font-size: .9em;
+               font-weight: normal;
+       }
+}
+/* Breakpoint to show as a standard table at 560px (35em x 16px) or wider */
+@media ( min-width: 35em ) {
+       /* Fixes table rendering when switching between breakpoints in Safari <= 5. See https://github.com/jquery/jquery-mobile/issues/5380 */
+       .ui-table-reflow.ui-responsive {
+               display: table-row-group;
+       }
+       /* Show the table header rows */
+       .ui-table-reflow.ui-responsive td,
+       .ui-table-reflow.ui-responsive th,
+       .ui-table-reflow.ui-responsive tbody th,
+       .ui-table-reflow.ui-responsive tbody td,
+       .ui-table-reflow.ui-responsive thead td,
+       .ui-table-reflow.ui-responsive thead th {
+               display: table-cell;
+               margin: 0;
+       }
+       /* Hide the labels in each cell */
+       .ui-table-reflow.ui-responsive td .ui-table-cell-label,
+       .ui-table-reflow.ui-responsive th .ui-table-cell-label {
+               display: none;
+       }
+}
+/* Hack to make IE9 and WP7.5 treat cells like block level elements, scoped to ui-responsive class */
+/* Applied in a max-width media query up to the table layout breakpoint so we don't need to negate this*/
+@media ( max-width: 35em ) {
+       .ui-table-reflow.ui-responsive td,
+       .ui-table-reflow.ui-responsive th {
+               width: 100%;
+               -webkit-box-sizing: border-box;
+               -moz-box-sizing: border-box;
+               box-sizing: border-box;
+               float: left;
+               clear: left;
+       }
+}
+/* panel */
+.ui-panel {
+       width: 17em;
+       min-height: 100%;
+       max-height: none;
+       border-width: 0;
+       position: absolute;
+       top: 0;
+       display: block;
+}
+.ui-panel-closed {
+       width: 0;
+       max-height: 100%;
+       overflow: hidden;
+       visibility: hidden;
+}
+.ui-panel-fixed {
+       position: fixed;
+       bottom: -1px; /* fixes gap on Chrome for Android */
+       padding-bottom: 1px;
+}
+.ui-panel-display-overlay {
+       z-index: 1001; /* fixed toolbars have z-index 1000 */
+}
+.ui-panel-display-reveal {
+       z-index: 0;
+}
+.ui-panel-display-push {
+       z-index: 999;
+}
+.ui-panel-inner {
+       padding: 15px;
+}
+/* content-wrap */
+.ui-panel-content-wrap {
+       position: relative;
+       left: 0;
+       min-height: inherit;
+       border: none;
+       z-index: 999;
+}
+.ui-panel-content-wrap-display-overlay,
+.ui-panel-animate.ui-panel-content-wrap > .ui-header, /* ios4 fix */
+.ui-panel-content-wrap-closed {
+       position: static;
+}
+/* dismiss */
+.ui-panel-dismiss {
+       position: absolute;
+       top: 0;
+       left:0;
+       height: 100%;
+       width: 100%;
+       z-index: 1002;
+       display: none;
+}
+.ui-panel-dismiss-open {
+       display: block;
+}
+/* animate class is added to panel, wrapper and fixed toolbars */
+.ui-panel-animate {
+       -webkit-transition: -webkit-transform 350ms ease;
+       -moz-transition: -moz-transform 350ms ease;
+       transition: transform 350ms ease;
+}
+/* hardware acceleration for smoother transitions on WebKit browsers */
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal),
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) > div,
+.ui-panel-animate.ui-panel-closed.ui-panel-display-reveal > div,
+.ui-panel-animate.ui-panel-content-wrap,
+.ui-panel-animate.ui-panel-content-fixed-toolbar {
+       -webkit-backface-visibility: hidden;
+       -webkit-transform: translate3d(0,0,0);
+}
+/* positioning: panel */
+/* panel left  */
+.ui-panel-position-left {
+       left: -17em;
+}
+/* animated: panel left (for overlay and push) */
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-push {
+       left: 0;
+       -webkit-transform: translate3d(-17em,0,0);
+       -moz-transform: translate3d(-17em,0,0);
+       transform: translate3d(-17em,0,0);
+}
+/* panel left open */
+.ui-panel-position-left.ui-panel-display-reveal, /* negate "panel left" for reveal */
+.ui-panel-position-left.ui-panel-open {
+       left: 0;
+}
+/* animated: panel left open (for overlay and push) */
+.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-push {
+       -webkit-transform: translate3d(0,0,0);
+       transform: translate3d(0,0,0);
+       -moz-transform: none;
+}
+/* panel right */
+.ui-panel-position-right {
+       right: -17em;
+}
+/* animated: panel right (for overlay and push) */
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-push {
+       right: 0;
+       -webkit-transform: translate3d(17em,0,0);
+       -moz-transform: translate3d(17em,0,0);
+       transform: translate3d(17em,0,0);
+}
+/* panel right open */
+.ui-panel-position-right.ui-panel-display-reveal,  /* negate "panel right" for reveal */
+.ui-panel-position-right.ui-panel-open {
+       right: 0;
+}
+/* animated: panel right open (for overlay and push) */
+.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-push {
+       -webkit-transform: translate3d(0,0,0);
+       transform: translate3d(0,0,0);
+       -moz-transform: none;
+}
+/* positioning: content wrap, fixed toolbars and dismiss */
+/* panel left open */
+.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open,
+.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open,
+.ui-panel-dismiss-position-left.ui-panel-dismiss-open {
+       left: 17em;
+       right: -17em;
+}
+/* animated: panel left open (for reveal and push) */
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,
+.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,
+.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push {
+       left: 0;
+       right: 0;
+       -webkit-transform: translate3d(17em,0,0);
+       -moz-transform: translate3d(17em,0,0);
+       transform: translate3d(17em,0,0);
+}
+/* panel right open */
+.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open,
+.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open,
+.ui-panel-dismiss-position-right.ui-panel-dismiss-open {
+       left: -17em;
+       right: 17em;
+}
+/* animated: panel right open (for reveal and push) */
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,
+.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,
+.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push {
+       left: 0;
+       right: 0;
+       -webkit-transform: translate3d(-17em,0,0);
+       -moz-transform: translate3d(-17em,0,0);
+       transform: translate3d(-17em,0,0);
+}
+/* negate "panel left/right open" for overlay */
+.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-overlay,
+.ui-panel-content-wrap-open.ui-panel-content-wrap-display-overlay {
+       left: 0;
+}
+/* always disable overflow-x to prevent zoom issue on Android */
+.ui-page-active.ui-page-panel {
+       overflow-x: hidden;
+}
+/* shadows and borders */
+.ui-panel-display-reveal {
+       -webkit-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+       box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-reveal {
+       -webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+       box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-overlay {
+       -webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+       box-shadow: 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-overlay {
+       -webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+       box-shadow: -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-push.ui-panel-open.ui-panel-position-left {
+       border-right-width: 1px;
+       margin-right: -1px;
+}
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push {
+       margin-left: 1px;
+}
+.ui-panel-display-push.ui-panel-open.ui-panel-position-right {
+       border-left-width: 1px;
+       margin-left: -1px;
+}
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push {
+       margin-right: 1px;
+}
+/* wrap on wide viewports once open */
+@media (min-width:55em){
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-left,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-left,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-left,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-left {
+               margin-right: 17em;
+       }
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-right,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-right,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right {
+               margin-left: 17em;
+       }
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal {
+               width: auto;
+       }
+       .ui-responsive-panel .ui-panel-dismiss-display-push {
+               display: none;
+       }
+}
diff --git a/ism/data/remote-input/jquery.mobile.structure-1.3.1.css b/ism/data/remote-input/jquery.mobile.structure-1.3.1.css
new file mode 100644 (file)
index 0000000..c87ec3b
--- /dev/null
@@ -0,0 +1,2310 @@
+/*
+* jQuery Mobile 1.3.1
+* Git HEAD hash: 74b4bec049fd93e4fe40205e6157de16eb64eb46 <> Date: Wed Apr 10 2013 21:57:23 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2013 jQuery Foundation, Inc. and other contributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+/* some unsets - more probably needed */
+.ui-mobile, .ui-mobile body { height: 99.9%; }
+.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; }
+.ui-mobile a img, .ui-mobile fieldset { border-width: 0; }
+/* responsive page widths */
+.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: 100%; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
+/* Issue #2066 */
+body.ui-mobile-viewport,
+div.ui-mobile-viewport { overflow-x: hidden; }
+/* "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%; min-height: 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; }
+/*orientations from js are available */
+@media screen and (orientation: portrait){
+.ui-mobile .ui-page { min-height: 420px; }
+}
+@media screen and (orientation: landscape){
+.ui-mobile .ui-page { min-height: 300px; }
+}
+/* loading screen */
+.ui-loading .ui-loader { display: block; }
+.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; left: 50%; border:0; }
+.ui-loader-default { background: none; filter: Alpha(Opacity=18); opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; }
+.ui-loader-verbose { width: 200px; filter: Alpha(Opacity=88); opacity: .88; box-shadow: 0 1px 1px -1px #fff; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; }
+.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; }
+.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; }
+.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; border-radius: 36px; }
+.ui-loader-verbose .ui-icon { margin: 0 auto 10px; filter: Alpha(Opacity=75); opacity: .75; }
+.ui-loader-textonly { padding: 15px; margin-left: -115px; }
+.ui-loader-textonly .ui-icon { display: none; }
+.ui-loader-fakefix { position: absolute; }
+/*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 { position: relative; zoom: 1; }
+.ui-mobile .ui-header, .ui-mobile .ui-footer { border-left-width: 0; border-right-width: 0; }
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right,
+.ui-footer .ui-btn-left,
+.ui-footer .ui-btn-right,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-left,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-right { position: absolute; top: 3px; }
+.ui-header-fixed .ui-btn-left,
+.ui-header-fixed .ui-btn-right { top: 4px;}
+.ui-header .ui-btn-left,
+.ui-footer .ui-btn-left { left: 5px; }
+.ui-header .ui-btn-right,
+.ui-footer .ui-btn-right { right: 5px; }
+.ui-footer > .ui-btn-icon-notext,
+.ui-header > .ui-btn-icon-notext,
+.ui-header-fixed.ui-fixed-hidden > .ui-btn-icon-notext { top: 6px; }
+.ui-header-fixed > .ui-btn-icon-notext { top: 7px;}
+.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; }
+.ui-footer .ui-title { margin: .6em 15px .8em; }
+/* content area*/
+.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; }
+/* corner styling for dialogs and popups */
+.ui-corner-all > .ui-header:first-child,
+.ui-corner-all > .ui-content:first-child,
+.ui-corner-all > .ui-footer:first-child {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+}
+.ui-corner-all > .ui-header:last-child,
+.ui-corner-all > .ui-content:last-child,
+.ui-corner-all > .ui-footer:last-child {
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+/* icons sizing */
+.ui-icon { width: 18px; height: 18px; }
+/* non-js content hiding */
+.ui-nojs { position: absolute; left: -9999px; }
+/* accessible content hiding */
+.ui-hide-label label.ui-input-text, .ui-hide-label label.ui-select, .ui-hide-label label.ui-slider, .ui-hide-label label.ui-submit, .ui-hide-label .ui-controlgroup-label,
+.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+/* 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;
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+}
+.ui-page-pre-in {
+       opacity: 0;
+}
+.in {
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+       animation-timing-function: ease-out;
+       animation-duration: 350ms;
+}
+.out {
+       -webkit-animation-timing-function: ease-in;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-timing-function: ease-in;
+       -moz-animation-duration: 225ms;
+       animation-timing-function: ease-in;
+       animation-duration: 225ms;
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@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; }
+}
+@keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+.fade.out {
+       opacity: 0;
+       -webkit-animation-duration: 125ms;
+       -webkit-animation-name: fadeout;
+       -moz-animation-duration: 125ms;
+       -moz-animation-name: fadeout;
+       animation-duration: 125ms;
+       animation-name: fadeout;
+}
+.fade.in {
+       opacity: 1;
+       -webkit-animation-duration: 225ms;
+       -webkit-animation-name: fadein;
+       -moz-animation-duration: 225ms;
+       -moz-animation-name: fadein;
+       animation-duration: 225ms;
+       animation-name: fadein;
+}
+.pop {
+       -webkit-transform-origin: 50% 50%;
+       -moz-transform-origin: 50% 50%;
+       transform-origin: 50% 50%;
+}
+.pop.in {
+       -webkit-transform: scale(1);
+       -webkit-animation-name: popin;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: scale(1);
+       -moz-animation-name: popin;
+       -moz-animation-duration: 350ms;
+       transform: scale(1);
+       animation-name: popin;
+       animation-duration: 350ms;
+    opacity: 1;
+}
+.pop.out {
+       -webkit-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-name: fadeout;
+       -moz-animation-duration: 100ms;
+       animation-name: fadeout;
+       animation-duration: 100ms;
+       opacity: 0;
+}
+.pop.in.reverse {
+       -webkit-animation-name: fadein;
+       -moz-animation-name: fadein;
+       animation-name: fadein;
+}
+.pop.out.reverse {
+       -webkit-transform: scale(.8);
+       -webkit-animation-name: popout;
+       -moz-transform: scale(.8);
+       -moz-animation-name: popout;
+       transform: scale(.8);
+       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;
+    }
+}
+@keyframes popin {
+    from {
+        transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        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;
+    }
+}
+@keyframes popout {
+    from {
+        transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        transform: scale(.8);
+        opacity: 0;
+    }
+}
+/* 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: translateX(100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromright {
+    from { transform: translateX(100%); }
+    to { transform: translateX(0); }
+}
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translate3d(-100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromleft {
+    from { -moz-transform: translateX(-100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromleft {
+    from { transform: translateX(-100%); }
+    to { transform: translateX(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: translateX(0); }
+    to { -moz-transform: translateX(-100%); }
+}
+@keyframes slideouttoleft {
+    from { transform: translateX(0); }
+    to { transform: translateX(-100%); }
+}
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(100%,0,0); }
+}
+@-moz-keyframes slideouttoright {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(100%); }
+}
+@keyframes slideouttoright {
+    from { transform: translateX(0); }
+    to { transform: translateX(100%); }
+}
+.slide.out, .slide.in {
+       -webkit-animation-timing-function: ease-out;
+       -webkit-animation-duration: 350ms;
+       -moz-animation-timing-function: ease-out;
+       -moz-animation-duration: 350ms;
+       animation-timing-function: ease-out;
+       animation-duration: 350ms;
+}
+.slide.out {
+       -webkit-transform: translate3d(-100%,0,0);
+       -webkit-animation-name: slideouttoleft;
+       -moz-transform: translateX(-100%);
+       -moz-animation-name: slideouttoleft;
+       transform: translateX(-100%);
+       animation-name: slideouttoleft;
+}
+.slide.in {
+       -webkit-transform: translate3d(0,0,0);
+       -webkit-animation-name: slideinfromright;
+       -moz-transform: translateX(0);
+       -moz-animation-name: slideinfromright;
+       transform: translateX(0);
+       animation-name: slideinfromright;
+}
+.slide.out.reverse {
+       -webkit-transform: translate3d(100%,0,0);
+       -webkit-animation-name: slideouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: slideouttoright;
+       transform: translateX(100%);
+       animation-name: slideouttoright;
+}
+.slide.in.reverse {
+       -webkit-transform: translate3d(0,0,0);
+       -webkit-animation-name: slideinfromleft;
+       -moz-transform: translateX(0);
+       -moz-animation-name: slideinfromleft;
+       transform: translateX(0);
+       animation-name: slideinfromleft;
+}
+.slidefade.out {
+       -webkit-transform: translateX(-100%);
+       -webkit-animation-name: slideouttoleft;
+       -webkit-animation-duration: 225ms;
+       -moz-transform: translateX(-100%);
+       -moz-animation-name: slideouttoleft;
+       -moz-animation-duration: 225ms;
+       transform: translateX(-100%);
+       animation-name: slideouttoleft;
+       animation-duration: 225ms;
+}
+.slidefade.in {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateX(0);
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 200ms;
+       transform: translateX(0);
+       animation-name: fadein;
+       animation-duration: 200ms;
+}
+.slidefade.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: slideouttoright;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: slideouttoright;
+       -moz-animation-duration: 200ms;
+       transform: translateX(100%);
+       animation-name: slideouttoright;
+       animation-duration: 200ms;
+}
+.slidefade.in.reverse {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateX(0);
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 200ms;
+       transform: translateX(0);
+       animation-name: fadein;
+       animation-duration: 200ms;
+}
+/* slide down */
+.slidedown.out {
+       -webkit-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-name: fadeout;
+       -moz-animation-duration: 100ms;
+       animation-name: fadeout;
+       animation-duration: 100ms;
+}
+.slidedown.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfromtop;
+       -webkit-animation-duration: 250ms;
+       -moz-transform: translateY(0);
+       -moz-animation-name: slideinfromtop;
+       -moz-animation-duration: 250ms;
+       transform: translateY(0);
+       animation-name: slideinfromtop;
+       animation-duration: 250ms;
+}
+.slidedown.in.reverse {
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 150ms;
+       animation-name: fadein;
+       animation-duration: 150ms;
+}
+.slidedown.out.reverse {
+       -webkit-transform: translateY(-100%);
+       -webkit-animation-name: slideouttotop;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateY(-100%);
+       -moz-animation-name: slideouttotop;
+       -moz-animation-duration: 200ms;
+       transform: translateY(-100%);
+       animation-name: slideouttotop;
+       animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translateY(-100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfromtop {
+    from { -moz-transform: translateY(-100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfromtop {
+    from { transform: translateY(-100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(-100%); }
+}
+@-moz-keyframes slideouttotop {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(-100%); }
+}
+@keyframes slideouttotop {
+    from { transform: translateY(0); }
+    to { transform: translateY(-100%); }
+}
+/* slide up */
+.slideup.out {
+       -webkit-animation-name: fadeout;
+       -webkit-animation-duration: 100ms;
+       -moz-animation-name: fadeout;
+       -moz-animation-duration: 100ms;
+       animation-name: fadeout;
+       animation-duration: 100ms;
+}
+.slideup.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfrombottom;
+       -webkit-animation-duration: 250ms;
+       -moz-transform: translateY(0);
+       -moz-animation-name: slideinfrombottom;
+       -moz-animation-duration: 250ms;
+       transform: translateY(0);
+       animation-name: slideinfrombottom;
+       animation-duration: 250ms;
+}
+.slideup.in.reverse {
+       -webkit-animation-name: fadein;
+       -webkit-animation-duration: 150ms;
+       -moz-animation-name: fadein;
+       -moz-animation-duration: 150ms;
+       animation-name: fadein;
+       animation-duration: 150ms;
+}
+.slideup.out.reverse {
+       -webkit-transform: translateY(100%);
+       -webkit-animation-name: slideouttobottom;
+       -webkit-animation-duration: 200ms;
+       -moz-transform: translateY(100%);
+       -moz-animation-name: slideouttobottom;
+       -moz-animation-duration: 200ms;
+       transform: translateY(100%);
+       animation-name: slideouttobottom;
+       animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translateY(100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfrombottom {
+    from { -moz-transform: translateY(100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfrombottom {
+    from { transform: translateY(100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(100%); }
+}
+@-moz-keyframes slideouttobottom {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(100%); }
+}
+@keyframes slideouttobottom {
+    from { transform: translateY(0); }
+    to { transform: translateY(100%); }
+}
+/* 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 {
+       -webkit-perspective: 1000;
+       -moz-perspective: 1000;
+       perspective: 1000;
+       position: absolute;
+}
+.flip {
+       -webkit-backface-visibility: hidden;
+       -webkit-transform: translateX(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: translateX(0);
+       backface-visibility: hidden;
+       transform: translateX(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;
+       transform: rotateY(-90deg) scale(.9);
+       animation-name: flipouttoleft;
+       animation-duration: 175ms;
+}
+.flip.in {
+       -webkit-animation-name: flipintoright;
+       -webkit-animation-duration: 225ms;
+       -moz-animation-name: flipintoright;
+       -moz-animation-duration: 225ms;
+       animation-name: flipintoright;
+       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;
+       transform: rotateY(90deg) scale(.9);
+       animation-name: flipouttoright;
+}
+.flip.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+       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); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { 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); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { 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); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { 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); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* 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: 200px;
+       -moz-perspective: 200px;
+       -ms-perspective: 200px;
+       perspective: 200px;
+       position: absolute;
+}
+.turn {
+       -webkit-backface-visibility: hidden;
+       -webkit-transform: translateX(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: translateX(0);
+       -moz-transform-origin: 0;
+
+       backface-visibility :hidden;
+       transform: translateX(0);
+       transform-origin: 0;
+}
+.turn.out {
+       -webkit-transform: rotateY(-90deg) scale(.9);
+       -webkit-animation-name: flipouttoleft;
+       -webkit-animation-duration: 125ms;
+       -moz-transform: rotateY(-90deg) scale(.9);
+       -moz-animation-name: flipouttoleft;
+       -moz-animation-duration: 125ms;
+       transform: rotateY(-90deg) scale(.9);
+       animation-name: flipouttoleft;
+       animation-duration: 125ms;
+}
+.turn.in {
+       -webkit-animation-name: flipintoright;
+       -webkit-animation-duration: 250ms;
+       -moz-animation-name: flipintoright;
+       -moz-animation-duration: 250ms;
+       animation-name: flipintoright;
+       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;
+       transform: rotateY(90deg) scale(.9);
+       animation-name: flipouttoright;
+}
+.turn.in.reverse {
+       -webkit-animation-name: flipintoleft;
+       -moz-animation-name: flipintoleft;
+       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); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { 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); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { 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); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { 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); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* flow transition */
+.flow {
+       -webkit-transform-origin: 50% 30%;
+       -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4);
+       -moz-transform-origin: 50% 30%;
+       -moz-box-shadow: 0 0 20px rgba(0,0,0,.4);
+       transform-origin: 50% 30%;
+       box-shadow: 0 0 20px rgba(0,0,0,.4);
+}
+.ui-dialog.flow {
+       -webkit-transform-origin: none;
+       -webkit-box-shadow: none;
+       -moz-transform-origin: none;
+       -moz-box-shadow: none;
+       transform-origin: none;
+       box-shadow: none;
+}
+.flow.out {
+       -webkit-transform: translateX(-100%) scale(.7);
+       -webkit-animation-name: flowouttoleft;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translateX(-100%) scale(.7);
+       -moz-animation-name: flowouttoleft;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+       transform: translateX(-100%) scale(.7);
+       animation-name: flowouttoleft;
+       animation-timing-function: ease;
+       animation-duration: 350ms;
+}
+.flow.in {
+       -webkit-transform: translateX(0) scale(1);
+       -webkit-animation-name: flowinfromright;
+       -webkit-animation-timing-function: ease;
+       -webkit-animation-duration: 350ms;
+       -moz-transform: translateX(0) scale(1);
+       -moz-animation-name: flowinfromright;
+       -moz-animation-timing-function: ease;
+       -moz-animation-duration: 350ms;
+       transform: translateX(0) scale(1);
+       animation-name: flowinfromright;
+       animation-timing-function: ease;
+       animation-duration: 350ms;
+}
+.flow.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: flowouttoright;
+       -moz-transform: translateX(100%);
+       -moz-animation-name: flowouttoright;
+       transform: translateX(100%);
+       animation-name: flowouttoright;
+}
+.flow.in.reverse {
+       -webkit-animation-name: flowinfromleft;
+       -moz-animation-name: flowinfromleft;
+       animation-name: flowinfromleft;
+}
+@-webkit-keyframes flowouttoleft {
+    0% { -webkit-transform: translateX(0) scale(1); }
+       60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(-100%) scale(.7); }
+}
+@-moz-keyframes flowouttoleft {
+    0% { -moz-transform: translateX(0) scale(1); }
+       60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(-100%) scale(.7); }
+}
+@keyframes flowouttoleft {
+    0% { transform: translateX(0) scale(1); }
+       60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(-100%) scale(.7); }
+}
+@-webkit-keyframes flowouttoright {
+    0% { -webkit-transform: translateX(0) scale(1); }
+       60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform:  translateX(100%) scale(.7); }
+}
+@-moz-keyframes flowouttoright {
+    0% { -moz-transform: translateX(0) scale(1); }
+       60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(100%) scale(.7); }
+}
+@keyframes flowouttoright {
+    0% { transform: translateX(0) scale(1); }
+       60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(100%) scale(.7); }
+}
+@-webkit-keyframes flowinfromleft {
+    0% { -webkit-transform: translateX(-100%) scale(.7); }
+       30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromleft {
+    0% { -moz-transform: translateX(-100%) scale(.7); }
+       30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromleft {
+    0% { transform: translateX(-100%) scale(.7); }
+       30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+@-webkit-keyframes flowinfromright {
+    0% { -webkit-transform: translateX(100%) scale(.7); }
+       30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromright {
+    0% { -moz-transform: translateX(100%) scale(.7); }
+       30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromright {
+    0% { transform: translateX(100%) scale(.7); }
+       30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+/* 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; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+/* grid solo: 100 - single item fallback */
+.ui-grid-solo .ui-block-a { display: block; float: none; }
+/* Lower percentages for older browsers (i.e. IE7) to prevent wrapping. -.5px to fix BB5 wrap issue. */
+/* grid a: 50/50 */
+.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 49.95%; }
+.ui-grid-a > :nth-child(n) { width: 50%; margin-right: -.5px; }
+.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.25%; }
+.ui-grid-b > :nth-child(n) { width: 33.333%; margin-right: -.5px; }
+.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: 24.925%; }
+.ui-grid-c > :nth-child(n) { width: 25%; margin-right: -.5px; }
+.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: 19.925%; }
+.ui-grid-d > :nth-child(n) { width: 20%; }
+.ui-grid-d .ui-block-a { clear: left; }
+/* preset breakpoint to switch to stacked grid styles below 35em (560px) */
+@media all and (max-width: 35em) {
+       .ui-responsive .ui-block-a,
+       .ui-responsive .ui-block-b,
+       .ui-responsive .ui-block-c,
+       .ui-responsive .ui-block-d,
+       .ui-responsive .ui-block-e {
+               width: 100%;
+               float:none;
+       }
+}
+/* fixed page header & footer configuration */
+.ui-header-fixed,
+.ui-footer-fixed {
+       left: 0;
+       right: 0;
+       width: 100%;
+       position: fixed;
+       z-index: 1000;
+}
+.ui-header-fixed {
+       top: -1px;
+       padding-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden {
+       top: 0;
+       padding-top: 0;
+}
+.ui-footer-fixed {
+       bottom: -1px;
+       padding-bottom: 1px;
+}
+.ui-footer-fixed.ui-fixed-hidden {
+       bottom: 0;
+       padding-bottom: 0;
+}
+.ui-header-fullscreen,
+.ui-footer-fullscreen {
+       filter: Alpha(Opacity=90);
+       opacity: .9;
+}
+.ui-page-header-fixed {
+       padding-top: 2.6875em;
+}
+.ui-page-footer-fixed {
+       padding-bottom: 2.6875em;
+}
+.ui-page-header-fullscreen > .ui-content,
+.ui-page-footer-fullscreen > .ui-content {
+       padding: 0;
+}
+.ui-fixed-hidden {
+       position: absolute;
+}
+.ui-page-header-fullscreen .ui-fixed-hidden,
+.ui-page-footer-fullscreen .ui-fixed-hidden {
+       left: -9999px;
+}
+.ui-header-fixed .ui-btn,
+.ui-footer-fixed .ui-btn {
+       z-index: 10;
+}
+/* workarounds for other widgets */
+.ui-android-2x-fixed .ui-li-has-thumb {
+       -webkit-transform: translate3d(0,0,0);
+}
+.ui-navbar { max-width: 100%; }
+.ui-navbar.ui-mini { margin: 0; }
+.ui-navbar ul:before, .ui-navbar ul:after { content: " "; display: table; }
+.ui-navbar ul:after { clear: both; }
+.ui-navbar ul { list-style:none; margin: 0; padding: 0; position: relative; display: block; border: 0; max-width: 100%; overflow: visible; zoom: 1; }
+.ui-navbar li .ui-btn { display: block; text-align: center; margin: 0 -1px 0 0; border-right-width: 0; }
+.ui-navbar li .ui-btn-icon-right .ui-icon { right: 6px; }
+/* add border if not in header/footer (full width) */
+.ui-navbar li:last-child .ui-btn,
+.ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: 0; border-right-width: 1px; }
+.ui-header .ui-navbar li:last-child .ui-btn,
+.ui-footer .ui-navbar li:last-child .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn { margin-right: -1px; border-right-width: 0; }
+.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn { margin-right: -1px; border-right-width: 1px; }
+.ui-header .ui-navbar li .ui-btn,
+.ui-footer .ui-navbar li .ui-btn { border-top-width: 0; border-bottom-width: 0; }
+/* fixing gaps caused by subpixel problem */
+.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn,
+.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn { margin-right: -5px; }
+.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,
+.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,
+.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn,
+.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn { margin-right: -4px; }
+.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,
+.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,
+.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon { right: 8px; }
+.ui-navbar li .ui-btn .ui-btn-inner { padding-top: .7em; padding-bottom: .8em }
+.ui-navbar li .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; }
+.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; }
+.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 0; padding: 0; }
+.ui-mini { margin-top: .25em; margin-bottom: .25em; }
+.ui-btn-left, .ui-btn-right, .ui-input-clear, .ui-btn-inline,
+.ui-grid-a .ui-btn, .ui-grid-b .ui-btn, .ui-grid-c .ui-btn, .ui-grid-d .ui-btn, .ui-grid-e .ui-btn, .ui-grid-solo .ui-btn { margin-right: 5px; margin-left: 5px; }
+.ui-btn-inner { font-size: 16px; padding: .6em 20px; min-width: .75em; display: block; position: relative; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; zoom: 1; }
+.ui-btn input, .ui-btn button { z-index: 2; }
+.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; vertical-align: middle; }
+.ui-mobile .ui-btn-left, .ui-mobile .ui-btn-right, .ui-btn-left > .ui-btn, .ui-btn-right > .ui-btn { margin: 0; } /* .ui-mobile to increase specificity level */
+.ui-btn-block { display: block; }
+.ui-header > .ui-btn,
+.ui-footer > .ui-btn { display: inline-block; margin: 0; }
+.ui-header .ui-btn-block,
+.ui-footer .ui-btn-block { display: block; }
+.ui-header .ui-btn-inner,
+.ui-footer .ui-btn-inner,
+.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; }
+.ui-fullsize .ui-btn-inner,
+.ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 20px; }
+.ui-btn-icon-notext { width: 24px; height: 24px; }
+.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; }
+.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; float: left; }
+.ui-btn-text { position: relative; z-index: 1; width: 100%; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; }
+div.ui-btn-text { width: auto; }
+.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; }
+.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; }
+.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; }
+.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; }
+.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; }
+.ui-header .ui-btn-icon-left .ui-btn-inner,
+.ui-footer .ui-btn-icon-left .ui-btn-inner,
+.ui-mini.ui-btn-icon-left .ui-btn-inner,
+.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; }
+.ui-header .ui-btn-icon-right .ui-btn-inner,
+.ui-footer .ui-btn-icon-right .ui-btn-inner,
+.ui-mini.ui-btn-icon-right .ui-btn-inner,
+.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; }
+.ui-header .ui-btn-icon-top .ui-btn-inner,
+.ui-footer .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; }
+.ui-mini.ui-btn-icon-top .ui-btn-inner,
+.ui-mini .ui-btn-icon-top .ui-btn-inner { padding-top: 30px; }
+.ui-header .ui-btn-icon-bottom .ui-btn-inner,
+.ui-footer .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; }
+.ui-mini.ui-btn-icon-bottom .ui-btn-inner,
+.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 30px; }
+/* Corner styling inheritance */
+.ui-btn-inner {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+/*btn icon positioning*/
+.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;}
+.ui-btn-icon-left > .ui-btn-inner > .ui-icon, .ui-btn-icon-right > .ui-btn-inner > .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
+.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; }
+.ui-btn-icon-left .ui-icon { left: 10px; }
+.ui-btn-icon-right .ui-icon { right: 10px; }
+.ui-btn-icon-top .ui-icon { top: 10px; }
+.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; }
+.ui-header .ui-btn-icon-left .ui-icon,
+.ui-footer .ui-btn-icon-left .ui-icon,
+.ui-mini.ui-btn-icon-left .ui-icon,
+.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; }
+.ui-header .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-btn-icon-right .ui-icon,
+.ui-mini.ui-btn-icon-right .ui-icon,
+.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; }
+.ui-header .ui-btn-icon-top .ui-icon,
+.ui-footer .ui-btn-icon-top .ui-icon,
+.ui-mini.ui-btn-icon-top .ui-icon,
+.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; }
+.ui-header .ui-btn-icon-bottom .ui-icon,
+.ui-footer .ui-btn-icon-bottom .ui-icon,
+.ui-mini.ui-btn-icon-bottom .ui-icon,
+.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; }
+/*hiding native button,inputs */
+.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: none; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=0); opacity: .1; font-size: 1px; border: none; text-indent: -9999px; }
+/* Fixes IE/WP filter alpha opacity bugs */
+.ui-disabled .ui-btn-hidden { display: none; }
+.ui-disabled { z-index: 1; }
+.ui-field-contain .ui-btn.ui-submit { margin: 0; }
+label.ui-submit { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; }
+@media all and (min-width: 28em){
+       .ui-field-contain label.ui-submit { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-btn.ui-submit { width: 78%; display: inline-block; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+       .ui-hide-label .ui-btn.ui-submit { width: auto; display: block; }
+}
+.ui-collapsible-inset { margin: .5em 0; }
+.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -15px; padding: 0; position: relative; }
+.ui-collapsible-inset .ui-collapsible-heading { margin: 0; }
+.ui-collapsible-heading .ui-btn { text-align: left; margin: 0; border-left-width: 0; border-right-width: 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-btn-inner { padding-left: 12px; padding-right: 12px; }
+.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; }
+.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-right: 40px; }
+.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,
+.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { text-align: center; }
+.ui-collapsible-heading .ui-btn-icon-left.ui-mini .ui-btn-inner { padding-left: 30px; }
+.ui-collapsible-heading .ui-btn-icon-right.ui-mini .ui-btn-inner { padding-right: 30px; }
+.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: 10px 15px;
+       border-left-width: 0;
+       border-right-width: 0;
+       border-top: none;      /* Overrides ui-body-* */
+       background-image: none; /* Overrides ui-body-* */
+}
+.ui-collapsible-inset .ui-collapsible-content { margin: 0; border-right-width: 1px; border-left-width: 1px; }
+.ui-collapsible-content-collapsed { display: none; }
+.ui-collapsible-set > .ui-collapsible.ui-corner-all {
+       -webkit-border-radius: 0;
+       border-radius: 0;
+}
+.ui-collapsible-heading,
+.ui-collapsible-heading > .ui-btn {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+}
+.ui-collapsible-content,
+.ui-collapsible-set .ui-collapsible.ui-last-child {
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-collapsible-themed-content:not(.ui-collapsible-collapsed) > .ui-collapsible-heading {
+       -webkit-border-bottom-right-radius: 0;
+       border-bottom-right-radius: 0;
+       -webkit-border-bottom-left-radius: 0;
+       border-bottom-left-radius: 0;
+}
+.ui-collapsible-set { margin: .5em 0; }
+.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; }
+.ui-collapsible-set .ui-collapsible.ui-first-child { margin-top: 0; }
+.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: .5em 0; zoom: 1; }
+.ui-controlgroup.ui-mini, fieldset.ui-controlgroup.ui-mini { margin: .25em 0; }
+.ui-field-contain .ui-controlgroup, .ui-field-contain fieldset.ui-controlgroup { margin: 0; }
+.ui-bar .ui-controlgroup { margin: 0 5px; }
+.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; }
+.ui-controlgroup-controls label.ui-select,
+.ui-controlgroup-controls label.ui-submit { position: absolute; left: -9999px; }
+.ui-controlgroup li { list-style: none; }
+.ui-controlgroup .ui-btn { margin: 0; }
+.ui-controlgroup .ui-btn-icon-notext { width: auto; height: auto; top: auto; }
+.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 20px; padding: .6em 20px .6em 20px }
+.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner { width: 18px; }
+.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner,
+.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner,
+.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { height: 16px; padding: .55em 11px .5em 11px; }
+.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; right: 50%; margin: -9px -9px 0 0; }
+.ui-controlgroup-horizontal .ui-btn-inner { text-align: center; }
+.ui-controlgroup-horizontal.ui-mini .ui-btn-inner { height: 16px; line-height: 16px; }
+.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls:before,
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after { content: ""; display: table; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after { clear: both; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls { display: inline-block; vertical-align: middle; zoom: 1; }
+.ui-controlgroup-horizontal .ui-controlgroup-controls > .ui-btn, .ui-controlgroup-horizontal .ui-controlgroup-controls li > .ui-btn,
+.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio,
+.ui-controlgroup-horizontal .ui-select { float: left; clear: none; margin: 0; }
+/* On IE7 the floating selects will be displayed as block if .ui-btn-text has width 100% */
+.ui-controlgroup-horizontal .ui-select .ui-btn-text { width: auto; }
+.ui-controlgroup-vertical .ui-btn {    border-bottom-width: 0; }
+.ui-controlgroup-vertical .ui-btn.ui-last-child { border-bottom-width: 1px; }
+.ui-controlgroup-horizontal .ui-btn { border-right-width: 0; }
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {    border-right-width: 1px; }
+.ui-controlgroup .ui-btn-corner-all {
+       -webkit-border-radius: 0;
+       border-radius: 0;
+}
+.ui-controlgroup .ui-controlgroup-controls,
+.ui-controlgroup .ui-radio,
+.ui-controlgroup .ui-checkbox,
+.ui-controlgroup .ui-select,
+.ui-controlgroup li {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-first-child {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-last-child {
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-first-child {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+.ui-controlgroup .ui-shadow:not(.ui-focus) {
+       -moz-box-shadow: none;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+@media all and (min-width: 28em){
+       .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-controlgroup-controls { width: 78%; display: inline-block; }
+       .ui-field-contain .ui-controlgroup .ui-select { width: 100%; display: block; }
+       .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; }
+       .ui-hide-label .ui-controlgroup-controls { width: 100%; }
+}
+.ui-dialog {
+        background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */
+}
+.ui-dialog-contain {
+       width: 92.5%;
+       max-width: 500px;
+       margin: 10% auto 15px auto;
+       padding: 0;
+       position: relative;
+       top: -15px;
+}
+.ui-dialog-contain > .ui-header,
+.ui-dialog-contain > .ui-content,
+.ui-dialog-contain > .ui-footer {
+       display: block;
+       position: relative;
+       width: auto;
+       margin: 0;
+}
+.ui-dialog-contain > .ui-header {
+       border: none;
+       overflow: hidden;
+       z-index: 10;
+       padding: 0;
+}
+.ui-dialog-contain > .ui-content {
+       padding: 15px;
+}
+.ui-dialog-contain > .ui-footer {
+       z-index: 10;
+       padding: 0 15px;
+}
+.ui-popup-open .ui-header-fixed,
+.ui-popup-open .ui-footer-fixed {
+       position: absolute !important;  /* See line #553 of popup.js */
+}
+.ui-popup-screen {
+       background-image: url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 1px;
+       position: absolute;
+       filter: Alpha(Opacity=0);
+       opacity: 0;
+       z-index: 1099;
+}
+.ui-popup-screen.in {
+       opacity: 0.5;
+       filter: Alpha(Opacity=50);
+}
+.ui-popup-screen.out {
+       opacity: 0;
+       filter: Alpha(Opacity=0);
+}
+.ui-popup-container {
+       z-index: 1100;
+       display: inline-block;
+       position: absolute;
+       padding: 0;
+       outline: 0;
+}
+.ui-popup {
+       position: relative;
+}
+.ui-popup.ui-content,
+.ui-popup .ui-content {
+       overflow: visible;
+}
+.ui-popup > p,
+.ui-popup > h1,
+.ui-popup > h2,
+.ui-popup > h3,
+.ui-popup > h4,
+.ui-popup > h5,
+.ui-popup > h6 {
+       margin: .5em 7px;
+}
+.ui-popup > span {
+       display: block;
+       margin: .5em 7px;
+}
+.ui-popup .ui-title {
+       font-size: 16px;
+       font-weight: bold;
+       margin-top: .5em;
+       margin-bottom: .5em;
+}
+.ui-popup-container .ui-content > p,
+.ui-popup-container .ui-content > h1,
+.ui-popup-container .ui-content > h2,
+.ui-popup-container .ui-content > h3,
+.ui-popup-container .ui-content > h4,
+.ui-popup-container .ui-content > h5,
+.ui-popup-container .ui-content > h6 {
+       margin: .5em 0;
+}
+.ui-popup-container .ui-content > span {
+       margin: 0;
+}
+.ui-popup-container .ui-content > p:first-child,
+.ui-popup-container .ui-content > h1:first-child,
+.ui-popup-container .ui-content > h2:first-child,
+.ui-popup-container .ui-content > h3:first-child,
+.ui-popup-container .ui-content > h4:first-child,
+.ui-popup-container .ui-content > h5:first-child,
+.ui-popup-container .ui-content > h6:first-child {
+       margin-top: 0;
+}
+.ui-popup-container .ui-content > p:last-child,
+.ui-popup-container .ui-content > h1:last-child,
+.ui-popup-container .ui-content > h2:last-child,
+.ui-popup-container .ui-content > h3:last-child,
+.ui-popup-container .ui-content > h4:last-child,
+.ui-popup-container .ui-content > h5:last-child,
+.ui-popup-container .ui-content > h6:last-child {
+       margin-bottom: 0;
+}
+.ui-popup > img {
+       width: auto;
+       height: auto;
+       max-width: 100%;
+       max-height: 100%;
+       vertical-align: middle;
+}
+.ui-popup:not(.ui-content) > img:only-child,
+.ui-popup:not(.ui-content) > .ui-btn-left:first-child + img:last-child,
+.ui-popup:not(.ui-content) > .ui-btn-right:first-child + img:last-child {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-popup iframe {
+       vertical-align: middle;
+}
+@media all and (min-width: 28em){
+       .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; }
+.ui-popup-hidden { top: -99999px; left: -9999px; }
+.ui-checkbox, .ui-radio { position: relative; clear: both; margin: 0; z-index: 1; }
+.ui-checkbox .ui-btn, .ui-radio .ui-btn { text-align: left; z-index: 2; }
+.ui-controlgroup .ui-checkbox .ui-btn, .ui-controlgroup .ui-radio .ui-btn { margin: 0; }
+.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; }
+.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; }
+.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; }
+.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; }
+.ui-checkbox .ui-btn-icon-top .ui-btn-inner, .ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; }
+.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; }
+.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; }
+.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; }
+.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; }
+.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; }
+.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; }
+.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-icon,
+.ui-controlgroup-horizontal .ui-radio .ui-icon { display: none; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn-inner,
+.ui-controlgroup-horizontal .ui-radio .ui-btn-inner { padding: .6em 20px; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-mini .ui-btn-inner,
+.ui-controlgroup-horizontal .ui-radio .ui-mini .ui-btn-inner { padding: .55em 11px .5em; }
+/* input, label positioning */
+.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; }
+.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; }
+.ui-field-contain:last-child { border-bottom-width: 0; }
+.ui-field-contain { max-width: 100%; } /* This prevents horizontal scrollbar in IE7 */
+@media all and (min-width: 28em){
+       .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; }
+}
+.ui-select { display: block; position: relative; }
+.ui-select select { position: absolute; left: -9999px; top: -9999px; }
+.ui-select .ui-btn { opacity: 1; }
+.ui-field-contain .ui-select .ui-btn { margin: 0; }
+/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
+.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: none; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; filter: Alpha(Opacity=0); opacity: 0; z-index: 2; }
+.ui-select .ui-disabled { opacity: .3; }
+/* Display none because of issues with IE/WP's filter alpha opacity */
+.ui-select .ui-disabled select { display: none; }
+@-moz-document url-prefix() { .ui-select .ui-btn select { opacity: 0.0001; }}
+.ui-select .ui-btn.ui-select-nativeonly { border-radius: 0; border: 0; }
+.ui-select .ui-btn.ui-select-nativeonly select { opacity: 1; text-indent: 0; display: block; }
+.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner { opacity: 0; }
+.ui-select .ui-btn-icon-right .ui-btn-inner, .ui-select .ui-li-has-count .ui-btn-inner { padding-right: 45px; }
+.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 32px; }
+.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 80px; }
+.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner { padding-right: 67px; }
+.ui-select .ui-btn-icon-right .ui-icon { right: 15px; }
+.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; }
+.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 45px; }
+.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count { right: 32px; }
+/* 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; overflow: hidden !important;
+/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ }
+.ui-select .ui-btn-text { text-overflow: ellipsis; }
+.ui-selectmenu { padding: 6px; min-width: 160px; }
+.ui-selectmenu .ui-listview { margin: 0; }
+.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; }
+.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 { margin: 0; padding: 0; }
+.ui-selectmenu.ui-popup .ui-header { -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; }
+.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; }
+@media all and (min-width: 28em){
+       .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+       .ui-field-contain .ui-select { width: 78%; display: inline-block; }
+       .ui-hide-label .ui-select { width: 100%; }
+}
+/* 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; }
+label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; }
+input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; margin: .5em 0; min-height: 1.4em; line-height: 1.4em; font-size: 16px; display: block; width: 100%; outline: 0; }
+input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; }
+div.ui-input-text input.ui-input-text, div.ui-input-text textarea.ui-input-text,
+.ui-input-search input.ui-input-text { border: none; width: 100%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; }
+.ui-input-search, div.ui-input-text { margin: .5em 0; background-image: none; position: relative; }
+.ui-input-search { padding: 0 30px; }
+div.ui-input-text { padding: 0 .4em; }
+div.ui-input-has-clear { padding: 0 30px 0 .4em; }
+input.ui-input-text.ui-mini, textarea.ui-input-text.ui-mini,
+.ui-input-search.ui-mini, div.ui-input-text.ui-mini { margin: .25em 0; }
+.ui-field-contain input.ui-input-text, .ui-field-contain textarea.ui-input-text,
+.ui-field-contain .ui-input-search, .ui-field-contain div.ui-input-text { margin: 0; }
+textarea.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+input.ui-input-text { -webkit-appearance: none; }
+textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; }
+textarea.ui-mini { height: 45px; }
+.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; }
+.ui-input-search .ui-input-clear, .ui-input-text .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; }
+.ui-mini .ui-input-clear { right: -3px; }
+.ui-input-search .ui-input-clear-hidden, .ui-input-text .ui-input-clear-hidden { display: none; }
+/* Resolves issue #5166: Added to support issue introduced in Firefox 15. We can likely remove this in the future. */
+input::-moz-placeholder, textarea::-moz-placeholder { color: #aaa; }
+/* Resolves issue #5131: Width of textinput depends on its type, for Android 4.1 */
+input[type=number]::-webkit-outer-spin-button { margin: 0; }
+@media all and (min-width: 28em){
+       .ui-field-contain label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 }
+       .ui-field-contain input.ui-input-text,
+       .ui-field-contain textarea.ui-input-text,
+       .ui-field-contain .ui-input-search,
+       .ui-field-contain div.ui-input-text { width: 78%; display: inline-block; }
+       .ui-field-contain .ui-input-search,
+       .ui-field-contain div.ui-input-text { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; }
+       .ui-hide-label input.ui-input-text,
+       .ui-hide-label textarea.ui-input-text,
+       .ui-hide-label .ui-input-search,
+       .ui-hide-label div.ui-input-text,
+       .ui-input-search input.ui-input-text,
+       div.ui-input-text input.ui-input-text { width: 100%; }
+}
+.ui-rangeslider {
+       zoom: 1;
+       margin: 0;
+}
+.ui-rangeslider:before,
+.ui-rangeslider:after {
+       content: "";
+       display: table;
+}
+.ui-rangeslider:after {
+       clear: both;
+}
+/* Margin-top/bottom: .5em * 16px/14px to make it equal to ui-rangeslider-sliders margin (input font-size is 14px) */
+.ui-rangeslider input.ui-input-text.ui-slider-input {
+       margin: .57143em 0;
+}
+.ui-rangeslider.ui-mini input.ui-slider-input {
+       margin: .28571em 0;
+}
+.ui-rangeslider input.ui-slider-input.ui-rangeslider-last {
+       float: right;
+}
+.ui-rangeslider .ui-rangeslider-sliders {
+       position: relative;
+       overflow: visible;
+       height: 30px;
+       margin: .5em 68px;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+       margin: .25em 68px;
+}
+.ui-field-contain .ui-rangeslider input.ui-slider-input,
+.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,
+.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+       margin-top: 0;
+       margin-bottom: 0;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track {
+       position: absolute;
+       top: 6px;
+       right: 0;
+       left: 0;
+       margin: 0;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track {
+       top: 8px;
+}
+.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg {
+       display: none;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+       background-color: transparent;
+       background: none;
+       border-width: 0;
+       height: 0;
+}
+/* this makes ie6 and ie7 set height to 0 to fix z-index problem */
+html >/**/body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+       height: 15px;
+       border-width: 1px;
+}
+html >/**/body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child {
+       height: 12px;
+}
+@media all and (min-width: 28em){
+       .ui-field-contain .ui-rangeslider label.ui-slider {
+               float: left;
+       }
+       .ui-field-contain .ui-rangeslider input.ui-slider-input {
+               position: relative;
+               z-index: 1;
+       }
+       .ui-field-contain .ui-rangeslider input.ui-slider-input.ui-rangeslider-first,
+       .ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input.ui-rangeslider-first {
+               margin-right: 17px;
+       }
+       .ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+       .ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+               float: left;
+               width: 78%;
+               margin: 0 -68px;
+       }
+       .ui-field-contain .ui-rangeslider .ui-slider-track,
+       .ui-field-contain .ui-rangeslider.ui-mini .ui-slider-track {
+               right: 68px;
+               left: 68px;
+       }
+       .ui-field-contain.ui-hide-label .ui-rangeslider input.ui-slider-input.ui-rangeslider-first {
+               margin: 0;
+       }
+       .ui-field-contain.ui-hide-label .ui-rangeslider .ui-rangeslider-sliders,
+       .ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+               width: auto;
+               float: none;
+               margin: 0 68px;
+       }
+       .ui-field-contain.ui-hide-label .ui-rangeslider .ui-slider-track,
+       .ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-slider-track {
+               right: 0;
+               left: 0;
+       }
+}
+.ui-listview { margin: 0; }
+ol.ui-listview, ol.ui-listview .ui-li-divider { counter-reset: listnumbering; }
+.ui-content .ui-listview, .ui-panel-inner > .ui-listview { margin: -15px; }
+.ui-collapsible-content > .ui-listview { margin: -10px -15px; }
+.ui-content .ui-listview-inset, .ui-panel-inner .ui-listview-inset { margin: 1em 0; }
+.ui-collapsible-content .ui-listview-inset { margin: .5em 0; }
+.ui-listview, .ui-li { list-style: none; padding: 0; }
+.ui-li, .ui-li.ui-field-contain { display: block; margin: 0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; }
+.ui-li.ui-btn, .ui-li.ui-field-contain, .ui-li-divider, .ui-li-static { margin: 0; }
+.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; }
+.ui-li.ui-last-child, .ui-li.ui-field-contain.ui-last-child { border-bottom-width: 1px; }
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > .ui-li.ui-first-child { border-top-width: 0; }
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > .ui-li.ui-last-child { border-bottom-width: 0; }
+.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-static { background-image: none; }
+.ui-li-divider { padding: .5em 15px; font-size: 14px; font-weight: bold; }
+ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal; counter-increment: listnumbering; content: counter(listnumbering) ". "; }
+ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */
+.ui-listview .ui-li > .ui-btn-text {
+       -webkit-border-radius: inherit;
+       border-radius: inherit;
+}
+.ui-listview > .ui-li.ui-first-child,
+.ui-listview .ui-btn.ui-first-child > .ui-li > .ui-btn-text > .ui-link-inherit {
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+}
+.ui-listview > .ui-li.ui-last-child,
+.ui-listview .ui-btn.ui-last-child > .ui-li > .ui-btn-text > .ui-link-inherit,
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset),
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li.ui-last-child {
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-listview > .ui-li.ui-first-child .ui-li-link-alt {
+       -webkit-border-top-right-radius: inherit;
+       border-top-right-radius: inherit;
+}
+.ui-listview > .ui-li.ui-last-child .ui-li-link-alt {
+       -webkit-border-bottom-right-radius: inherit;
+       border-bottom-right-radius: inherit;
+}
+.ui-listview > .ui-li.ui-first-child .ui-li-thumb:not(.ui-li-icon) {
+       -webkit-border-top-left-radius: inherit;
+       border-top-left-radius: inherit;
+}
+.ui-listview > .ui-li.ui-last-child .ui-li-thumb:not(.ui-li-icon) {
+       -webkit-border-bottom-left-radius: inherit;
+       border-bottom-left-radius: inherit;
+}
+.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; }
+.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px; display: block; }
+.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb  { min-height: 59px; padding-left: 100px; }
+.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; }
+.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count, .ui-li-divider.ui-li-has-count { padding-right: 45px; }
+.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 40px; }
+.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; }
+.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+ol.ui-listview > .ui-li .ui-li-heading { display: inline-block; width: 100%; margin-left: -1.3em; text-indent: 1.3em; vertical-align: middle; }
+ol.ui-listview > .ui-li .ui-li-desc:not(.ui-li-aside) { text-indent: 1.55em; }
+.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; }
+.ui-listview .ui-li-icon { max-height: 16px; max-width: 16px; left: 10px; top: .9em; }
+.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; }
+.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; }
+@media all and (min-width: 480px){
+        .ui-li-aside { width: 45%; }
+}
+.ui-li-divider { cursor: default; }
+.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 53px; }
+.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt.ui-li-has-count { padding-right: 88px; }
+.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 10px; }
+.ui-li-has-count.ui-li-divider .ui-li-count, .ui-li-has-count .ui-link-inherit .ui-li-count { margin-top: -.95em; }
+.ui-li-has-arrow.ui-li-has-count .ui-li-count { right: 40px; }
+.ui-li-has-alt.ui-li-has-count .ui-li-count { right: 53px; }
+.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; }
+.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -13px 0 0 0; border-bottom-width: 1px; z-index: -1;}
+.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;}
+.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; }
+.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
+.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0; }
+.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px; }
+.ui-collapsible-content .ui-listview-filter { margin: -10px -15px 10px -15px; border-bottom: inherit; }
+.ui-listview-filter-inset { margin: -15px -5px; background: transparent; }
+.ui-collapsible-content .ui-listview-filter-inset { margin: -5px; border-bottom-width: 0; }
+.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; }
+.ui-li.ui-screen-hidden{ display:none; }
+/* Odd iPad positioning issue. */
+@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
+    .ui-li .ui-btn-text { overflow:  visible; }
+}
+label.ui-slider {
+       font-size: 16px;
+       line-height: 1.4;
+       font-weight: normal;
+       margin: 0;
+       display: block;
+}
+.ui-field-contain label.ui-slider {
+       margin-bottom: .4em;
+}
+div.ui-slider {
+       height: 30px;
+       margin: .5em 0;
+       zoom: 1;
+}
+div.ui-slider.ui-mini {
+       margin: .25em 0;
+}
+.ui-field-contain div.ui-slider,
+.ui-field-contain div.ui-slider.ui-mini {
+       margin: 0;
+}
+div.ui-slider:before, div.ui-slider:after {
+       content: "";
+       display: table;
+}
+div.ui-slider:after {
+       clear: both;
+}
+/* High level of specificity to override Textinput CSS. */
+input.ui-input-text.ui-slider-input {
+       display: block;
+       float: left;
+       margin: 0;
+       padding: 4px;
+       width: 40px;
+       height: 22px;
+       line-height: 22px;
+       font-size: 14px;
+       border-width: 0;
+       background-image: none;
+       font-weight: bold;
+       text-align: center;
+       vertical-align: text-bottom;
+       outline: 0;
+       -webkit-box-sizing: content-box;
+       -moz-box-sizing: content-box;
+       -ms-box-sizing: content-box;
+       box-sizing: content-box;
+}
+.ui-slider-input::-webkit-outer-spin-button,
+.ui-slider-input::-webkit-inner-spin-button {
+       -webkit-appearance: none;
+       margin: 0;
+}
+.ui-slider-track,
+.ui-slider-switch {
+       position: relative;
+       overflow: visible;
+       height: 15px;
+       margin: 0 15px 0 68px;
+       top: 6px;
+}
+.ui-slider-track.ui-mini {
+       height: 12px;
+       top: 8px;
+}
+.ui-slider-bg {
+       border: none;
+       height: 100%;
+}
+/* High level of specificity to override button margins in grids */
+.ui-slider-track .ui-btn.ui-slider-handle,
+.ui-slider-switch .ui-btn.ui-slider-handle {
+       position: absolute;
+       z-index: 1;
+       top: 50%;
+       width: 28px;
+       height: 28px;
+       margin: -15px 0 0 -15px;
+       outline: 0;
+}
+.ui-slider-track.ui-mini .ui-slider-handle {
+       height: 14px;
+       width: 14px;
+       margin: -8px 0 0 -7px;
+}
+.ui-slider-handle .ui-btn-inner {
+       padding: 0;
+       height: 100%;
+}
+.ui-slider-track.ui-mini .ui-slider-handle .ui-btn-inner {
+       height: 30px;
+       width: 30px;
+       padding: 0;
+       margin: -9px 0 0 -9px;
+       border-top: none;
+}
+select.ui-slider-switch {
+       display: none;
+}
+div.ui-slider-switch {
+       display: inline-block;
+       height: 32px;
+       width: 5.8em;
+       margin: .5em 0;
+       top: 0;
+}
+/* reset the clearfix */
+div.ui-slider-switch:before, div.ui-slider-switch:after {
+       display: none;
+       clear: none;
+}
+div.ui-slider-switch.ui-mini {
+       width: 5em;
+       height: 29px;
+       margin: .25em 0;
+       top: 0;
+}
+.ui-field-contain .ui-slider-switch,
+.ui-field-contain .ui-slider-switch.ui-mini {
+       margin: 0;
+}
+.ui-slider-inneroffset {
+       margin: 0 16px;
+       position: relative;
+       z-index: 1;
+}
+.ui-slider-switch.ui-mini .ui-slider-inneroffset {
+       margin: 0 15px 0 14px;
+}
+.ui-slider-switch .ui-btn.ui-slider-handle {
+       margin: 1px 0 0 -15px;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle {
+       width: 25px;
+       height: 25px;
+       margin: 1px 0 0 -13px;
+       padding: 0;
+}
+.ui-slider-handle-snapping {
+       -webkit-transition: left 70ms linear;
+       -moz-transition: left 70ms linear;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle .ui-btn-inner {
+       height: 30px;
+       width: 30px;
+       padding: 0;
+       margin: 0;
+       border-top: none;
+}
+.ui-slider-switch .ui-slider-label {
+       position: absolute;
+       text-align: center;
+       width: 100%;
+       overflow: hidden;
+       font-size: 16px;
+       top: 0;
+       line-height: 2;
+       min-height: 100%;
+       border-width: 0;
+       white-space: nowrap;
+       cursor: pointer;
+}
+.ui-slider-switch.ui-mini .ui-slider-label {
+       font-size: 14px;
+}
+.ui-slider-switch .ui-slider-label-a {
+       z-index: 1;
+       left: 0;
+       text-indent: -1.5em;
+}
+.ui-slider-switch .ui-slider-label-b {
+       z-index: 0;
+       right: 0;
+       text-indent: 1.5em;
+}
+@media all and (min-width: 28em){
+       .ui-field-contain label.ui-slider {
+               vertical-align: top;
+               display: inline-block;
+               width: 20%;
+               margin: 0 2% 0 0;
+       }
+       .ui-field-contain div.ui-slider {
+               display: inline-block;
+               width: 78%;
+       }
+       .ui-field-contain.ui-hide-label div.ui-slider {
+               display: block;
+               width: auto;
+       }
+       .ui-field-contain div.ui-slider-switch,
+       .ui-field-contain.ui-hide-label div.ui-slider-switch {
+               display: inline-block;
+               width: 5.8em;
+       }
+       .ui-field-contain div.ui-slider-switch.ui-mini {
+               width: 5em;
+       }
+}
+.ui-table {
+   border: 0;
+   border-collapse: collapse;
+   padding: 0;
+   width: 100%;
+}
+.ui-table th,
+.ui-table td {
+  line-height: 1.5em;
+  text-align: left;
+  padding: .4em .5em;
+  vertical-align:top;
+}
+.ui-table th .ui-btn,
+.ui-table td .ui-btn {
+       line-height: normal;
+}
+.ui-table th {
+  font-weight: bold;
+}
+.ui-table caption {
+  text-align:left;
+  margin-bottom:1.4em;
+  opacity: .5;
+}
+/* Add strokes between each row */
+.table-stroke thead th {
+  border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
+  border-bottom: 1px solid rgba(0, 0, 0, .1);
+}
+.table-stroke tbody th,
+.table-stroke tbody td {
+  border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback  */
+  border-bottom: 1px solid rgba(0, 0, 0, .05);
+}
+/* Add alternating row stripes */
+.table-stripe tbody tr:nth-child(odd) td,
+.table-stripe tbody tr:nth-child(odd) th {
+  background-color: #eeeeee; /* non-RGBA fallback  */
+  background-color: rgba(0,0,0,0.04);
+}
+/* Add stroke to the header and last item */
+.table-stripe thead th,
+.table-stripe tbody tr:last-child {
+  border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback  */
+  border-bottom: 1px solid rgba(0, 0, 0, .1);
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-columntoggle-btn {
+       float: right;
+       margin-bottom:.8em;
+}
+/* Remove top/bottom margins around the fieldcontain on check list */
+.ui-table-columntoggle-popup fieldset {
+       margin:0;
+}
+/* Hide all prioritized columns by default */
+@media only all {
+       th.ui-table-priority-6,
+       td.ui-table-priority-6,
+       th.ui-table-priority-5,
+       td.ui-table-priority-5,
+       th.ui-table-priority-4,
+       td.ui-table-priority-4,
+       th.ui-table-priority-3,
+       td.ui-table-priority-3,
+       th.ui-table-priority-2,
+       td.ui-table-priority-2,
+       th.ui-table-priority-1,
+       td.ui-table-priority-1 {
+               display: none;
+       }
+}
+/* Preset breakpoints if ".ui-responsive" class added to table */
+/* Show priority 1 at 320px (20em x 16px) */
+@media screen and (min-width: 20em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-1,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-1 {
+               display: table-cell;
+       }
+}
+/* Show priority 2 at 480px (30em x 16px) */
+@media screen and (min-width: 30em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-2,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-2 {
+               display: table-cell;
+       }
+}
+/* Show priority 3 at 640px (40em x 16px) */
+@media screen and (min-width: 40em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-3,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-3 {
+               display: table-cell;
+       }
+}
+/* Show priority 4 at 800px (50em x 16px) */
+@media screen and (min-width: 50em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-4,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-4 {
+               display: table-cell;
+       }
+}
+/* Show priority 5 at 960px (60em x 16px) */
+@media screen and (min-width: 60em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-5,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-5 {
+               display: table-cell;
+       }
+}
+/* Show priority 6 at 1,120px (70em x 16px) */
+@media screen and (min-width: 70em) {
+       .ui-table-columntoggle.ui-responsive th.ui-table-priority-6,
+       .ui-table-columntoggle.ui-responsive td.ui-table-priority-6 {
+               display: table-cell;
+       }
+}
+/* Unchecked manually: Always hide */
+.ui-table-columntoggle th.ui-table-cell-hidden,
+.ui-table-columntoggle td.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden {
+       display: none;
+}
+/* Checked manually: Always show */
+.ui-table-columntoggle th.ui-table-cell-visible,
+.ui-table-columntoggle td.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible {
+       display: table-cell;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-reflow td .ui-table-cell-label,
+.ui-table-reflow th .ui-table-cell-label {
+       display: none;
+}
+/* Mobile first styles: Begin with the stacked presentation at narrow widths */
+@media only all {
+       /* Hide the table headers */
+       .ui-table-reflow thead td,
+       .ui-table-reflow thead th {
+               display: none;
+       }
+       /* Show the table cells as a block level element */
+       .ui-table-reflow td,
+       .ui-table-reflow th {
+               text-align: left;
+               display: block;
+       }
+       /* Add a fair amount of top margin to visually separate each row when stacked */
+       .ui-table-reflow tbody th {
+               margin-top: 3em;
+       }
+       /* Make the label elements a percentage width */
+       .ui-table-reflow td .ui-table-cell-label,
+       .ui-table-reflow th .ui-table-cell-label {
+               display: block;
+               padding: .4em;
+               min-width: 30%;
+               display: inline-block;
+               margin: -.4em 1em -.4em -.4em;
+       }
+       /* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */
+       .ui-table-reflow th .ui-table-cell-label-top,
+       .ui-table-reflow td .ui-table-cell-label-top {
+               display: block;
+               padding: .4em 0;
+               margin: .4em 0;
+               text-transform: uppercase;
+               font-size: .9em;
+               font-weight: normal;
+       }
+}
+/* Breakpoint to show as a standard table at 560px (35em x 16px) or wider */
+@media ( min-width: 35em ) {
+       /* Fixes table rendering when switching between breakpoints in Safari <= 5. See https://github.com/jquery/jquery-mobile/issues/5380 */
+       .ui-table-reflow.ui-responsive {
+               display: table-row-group;
+       }
+       /* Show the table header rows */
+       .ui-table-reflow.ui-responsive td,
+       .ui-table-reflow.ui-responsive th,
+       .ui-table-reflow.ui-responsive tbody th,
+       .ui-table-reflow.ui-responsive tbody td,
+       .ui-table-reflow.ui-responsive thead td,
+       .ui-table-reflow.ui-responsive thead th {
+               display: table-cell;
+               margin: 0;
+       }
+       /* Hide the labels in each cell */
+       .ui-table-reflow.ui-responsive td .ui-table-cell-label,
+       .ui-table-reflow.ui-responsive th .ui-table-cell-label {
+               display: none;
+       }
+}
+/* Hack to make IE9 and WP7.5 treat cells like block level elements, scoped to ui-responsive class */
+/* Applied in a max-width media query up to the table layout breakpoint so we don't need to negate this*/
+@media ( max-width: 35em ) {
+       .ui-table-reflow.ui-responsive td,
+       .ui-table-reflow.ui-responsive th {
+               width: 100%;
+               -webkit-box-sizing: border-box;
+               -moz-box-sizing: border-box;
+               box-sizing: border-box;
+               float: left;
+               clear: left;
+       }
+}
+/* panel */
+.ui-panel {
+       width: 17em;
+       min-height: 100%;
+       max-height: none;
+       border-width: 0;
+       position: absolute;
+       top: 0;
+       display: block;
+}
+.ui-panel-closed {
+       width: 0;
+       max-height: 100%;
+       overflow: hidden;
+       visibility: hidden;
+}
+.ui-panel-fixed {
+       position: fixed;
+       bottom: -1px; /* fixes gap on Chrome for Android */
+       padding-bottom: 1px;
+}
+.ui-panel-display-overlay {
+       z-index: 1001; /* fixed toolbars have z-index 1000 */
+}
+.ui-panel-display-reveal {
+       z-index: 0;
+}
+.ui-panel-display-push {
+       z-index: 999;
+}
+.ui-panel-inner {
+       padding: 15px;
+}
+/* content-wrap */
+.ui-panel-content-wrap {
+       position: relative;
+       left: 0;
+       min-height: inherit;
+       border: none;
+       z-index: 999;
+}
+.ui-panel-content-wrap-display-overlay,
+.ui-panel-animate.ui-panel-content-wrap > .ui-header, /* ios4 fix */
+.ui-panel-content-wrap-closed {
+       position: static;
+}
+/* dismiss */
+.ui-panel-dismiss {
+       position: absolute;
+       top: 0;
+       left:0;
+       height: 100%;
+       width: 100%;
+       z-index: 1002;
+       display: none;
+}
+.ui-panel-dismiss-open {
+       display: block;
+}
+/* animate class is added to panel, wrapper and fixed toolbars */
+.ui-panel-animate {
+       -webkit-transition: -webkit-transform 350ms ease;
+       -moz-transition: -moz-transform 350ms ease;
+       transition: transform 350ms ease;
+}
+/* hardware acceleration for smoother transitions on WebKit browsers */
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal),
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) > div,
+.ui-panel-animate.ui-panel-closed.ui-panel-display-reveal > div,
+.ui-panel-animate.ui-panel-content-wrap,
+.ui-panel-animate.ui-panel-content-fixed-toolbar {
+       -webkit-backface-visibility: hidden;
+       -webkit-transform: translate3d(0,0,0);
+}
+/* positioning: panel */
+/* panel left  */
+.ui-panel-position-left {
+       left: -17em;
+}
+/* animated: panel left (for overlay and push) */
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-push {
+       left: 0;
+       -webkit-transform: translate3d(-17em,0,0);
+       -moz-transform: translate3d(-17em,0,0);
+       transform: translate3d(-17em,0,0);
+}
+/* panel left open */
+.ui-panel-position-left.ui-panel-display-reveal, /* negate "panel left" for reveal */
+.ui-panel-position-left.ui-panel-open {
+       left: 0;
+}
+/* animated: panel left open (for overlay and push) */
+.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-push {
+       -webkit-transform: translate3d(0,0,0);
+       transform: translate3d(0,0,0);
+       -moz-transform: none;
+}
+/* panel right */
+.ui-panel-position-right {
+       right: -17em;
+}
+/* animated: panel right (for overlay and push) */
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-push {
+       right: 0;
+       -webkit-transform: translate3d(17em,0,0);
+       -moz-transform: translate3d(17em,0,0);
+       transform: translate3d(17em,0,0);
+}
+/* panel right open */
+.ui-panel-position-right.ui-panel-display-reveal,  /* negate "panel right" for reveal */
+.ui-panel-position-right.ui-panel-open {
+       right: 0;
+}
+/* animated: panel right open (for overlay and push) */
+.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-push {
+       -webkit-transform: translate3d(0,0,0);
+       transform: translate3d(0,0,0);
+       -moz-transform: none;
+}
+/* positioning: content wrap, fixed toolbars and dismiss */
+/* panel left open */
+.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open,
+.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open,
+.ui-panel-dismiss-position-left.ui-panel-dismiss-open {
+       left: 17em;
+       right: -17em;
+}
+/* animated: panel left open (for reveal and push) */
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,
+.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,
+.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push {
+       left: 0;
+       right: 0;
+       -webkit-transform: translate3d(17em,0,0);
+       -moz-transform: translate3d(17em,0,0);
+       transform: translate3d(17em,0,0);
+}
+/* panel right open */
+.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open,
+.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open,
+.ui-panel-dismiss-position-right.ui-panel-dismiss-open {
+       left: -17em;
+       right: 17em;
+}
+/* animated: panel right open (for reveal and push) */
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,
+.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,
+.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push {
+       left: 0;
+       right: 0;
+       -webkit-transform: translate3d(-17em,0,0);
+       -moz-transform: translate3d(-17em,0,0);
+       transform: translate3d(-17em,0,0);
+}
+/* negate "panel left/right open" for overlay */
+.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-overlay,
+.ui-panel-content-wrap-open.ui-panel-content-wrap-display-overlay {
+       left: 0;
+}
+/* always disable overflow-x to prevent zoom issue on Android */
+.ui-page-active.ui-page-panel {
+       overflow-x: hidden;
+}
+/* shadows and borders */
+.ui-panel-display-reveal {
+       -webkit-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+       box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-reveal {
+       -webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+       box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-overlay {
+       -webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+       box-shadow: 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-overlay {
+       -webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+       -moz-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+       box-shadow: -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-push.ui-panel-open.ui-panel-position-left {
+       border-right-width: 1px;
+       margin-right: -1px;
+}
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push {
+       margin-left: 1px;
+}
+.ui-panel-display-push.ui-panel-open.ui-panel-position-right {
+       border-left-width: 1px;
+       margin-left: -1px;
+}
+.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push {
+       margin-right: 1px;
+}
+/* wrap on wide viewports once open */
+@media (min-width:55em){
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-left,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-left,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-left,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-left {
+               margin-right: 17em;
+       }
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-right,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-right,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right {
+               margin-left: 17em;
+       }
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push,
+       .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal {
+               width: auto;
+       }
+       .ui-responsive-panel .ui-panel-dismiss-display-push {
+               display: none;
+       }
+}
diff --git a/ism/data/remote-input/key_mode.htm b/ism/data/remote-input/key_mode.htm
new file mode 100644 (file)
index 0000000..2175e46
--- /dev/null
@@ -0,0 +1,654 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Tizen Remote Input</title>
+
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable = 0"/>
+    <link rel="stylesheet" href="custom3.css" type="text/css"/>
+    <link rel="stylesheet" href="jquery.mobile-1.3.1.css" type="text/css"/>
+    <script src="ajaxCaller.js" type="text/javascript"> </script>
+    <script src="util.js" type="text/javascript"> </script>
+    <script src="jquery-2.0.2.min.js"></script>
+    <script src="jquery.mobile-1.3.1.min.js"></script>
+</head>
+
+<body>
+    <script>
+        // Key definition
+        var KEY_BACKSPACE = 8;
+        var KEY_ENTER = 13;
+        var KEY_SPACE = 32;
+        var KEY_ESCAPE = 27;
+
+        var KEY_LEFT = 37;
+        var KEY_RIGHT = 39;
+        var KEY_UP = 38;
+        var KEY_DOWN = 40;
+
+        var KEY_MENU = 10001;
+        var KEY_HOME = 10002;
+        var KEY_BACK = 10003;
+
+        var MOUSE_CLICK = 555;
+        var MOUSE_PRESSED = 556;
+        var MOUSE_RELEASED =557;
+        var MOUSE_SCROLL_UP = 600;
+        var MOUSE_SCROLL_DOWN = 700;
+
+        var TV_KEY_POWER = 124;
+        var TV_KEY_SWITCHMODE = 235;
+        var TV_KEY_MENU = 179;
+        var TV_KEY_UP = 111;
+        var TV_KEY_INFO = 69;
+        var TV_KEY_LEFT = 113;
+        var TV_KEY_SELECT = 36;
+        var TV_KEY_RIGHT = 114;
+        var TV_KEY_BACK = 166;
+        var TV_KEY_DOWN = 116;
+        var TV_KEY_EXIT = 182;
+        var TV_KEY_VOL_UP = 123;
+        var TV_KEY_MUTE = 121;
+        var TV_KEY_CHAN_UP = 112;
+        var TV_KEY_VOL_DOWN = 122;
+        var TV_KEY_CHAN_LIST = 68;
+        var TV_KEY_CHAN_DOWN = 117;
+
+
+
+        // Mouse prior coordinate, click flag
+        var pre_x = 0;
+        var pre_y = 0;
+        var touch_Pressed=0;
+        var touch_Moved=0;
+        var scroll_pre_x = 0;
+        var scroll_pre_y = 0;
+        var multi_touched = 0;
+        var touch_started_x = 0;
+        var touch_started_y = 0;
+        var touch_contentarea_Pressed=0;
+        var touch_contentarea_Moved=0;
+        var touch_contentarea_pre_x=0;
+        var touch_contentarea_pre_y=0;
+
+        // Callback incremental index
+        var id_num = 0;
+        var count = 0;
+
+        // Flush timer
+        var flush_timeout;
+        var FLUSH_TIMEOUT = 2000;
+        var FLUSH_ENTER_TIMEOUT = 50;
+        var flick_start_time = 0;
+        var flick_time = 0;
+        // Backup pre string
+        var pre_str = "";
+        var TMP_CHAR = " ";
+        var TMP_TIMESTAMP = 0;
+        var EMPTY_CHECKER_TIMEOUT = 10;
+        var latest_typed_timestamp = 0;
+
+        function cbAjax(text, headers, callingContext) {
+            id_num++;
+            return true;
+        }
+
+        function sendKeyEvent(keyCode) {
+            var bodyVars = {id:id_num, key:'event', value:keyCode}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendMouse_KeyEvent(mouseCode) {
+            var bodyVars = {id:id_num, key:'mouse_key', value:mouseCode}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendMouse_MoveEvent(coordinate) {
+            var bodyVars = {id:id_num, key:'mouse_move', value:coordinate}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendScroll(direction, count) {
+            for (i = 0 ; i < count ; i++) {
+                sendMouse_KeyEvent(direction);
+            }
+        }
+
+        function removeTmpChar(str){
+            if (TMP_CHAR.length < 1) return;
+            if (str.length >= TMP_CHAR.length) {
+                str = str.substring (TMP_CHAR.length);
+            }
+            return str;
+        }
+
+        function sendPreeditStr(str){
+            if ($("#search_link_checker").prop("checked")){
+                return;
+            }
+            str = removeTmpChar(str);
+            var bodyVars = {id:id_num, key:'preedit', value:str}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendCommitStr(str){
+            str = removeTmpChar(str);
+            if ($("#search_link_checker").prop("checked")){
+                var bodyVars = {id:id_num, key:'search', value:str}
+                ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+            }
+            else{
+                var bodyVars = {id:id_num, key:'commit', value:str}
+                ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+            }
+        }
+
+        function sendFlushCurStr(){
+            var entry = document.getElementById( "entry" );
+            var str = entry.value;
+            if(str.length > 0){
+                entry.value = TMP_CHAR;
+                pre_str = "";
+                sendCommitStr (str)
+                window.clearInterval(flush_timeout);
+            }
+        }
+        /*
+        function printLog(str){
+            log_box.value = log_box.value +"\n"+ str;
+            var psconsole = $('#log_box');
+            psconsole.scrollTop(psconsole[0].scrollHeight - psconsole.height());
+        }
+        */
+        function clearLog(){
+            log_box.value = "";log_box.value +"\n"+ str;
+        }
+        function reArrangeCursorPos(){
+            if(latest_typed_timestamp == TMP_TIMESTAMP){
+                entry.setSelectionRange(TMP_CHAR.length,TMP_CHAR.length);
+            }
+            window.clearInterval(empty_checker_timeout);
+        }
+
+        $(document).ready(function() {
+
+          setTimeout(function(){
+            window.scrollTo(0, 1);
+            }, 0);
+
+            var entry = document.getElementById( "entry" );
+            //entry.focus();
+            entry.value = TMP_CHAR;
+/*
+            // 4 arrow keys
+            $("#arrow_left").click(function(event) {
+                  window.location='tv_mode.htm';
+//                sendFlushCurStr();
+//                sendKeyEvent(KEY_LEFT);
+ //               var entry = document.getElementById( "entry" );
+ //               entry.focus();
+            });
+
+            $("#arrow_right").click(function(event) {
+                sendFlushCurStr();
+                sendKeyEvent(KEY_BACK);
+
+            });
+
+            $("#arrow_down").click(function(event) {
+                sendFlushCurStr();
+                sendKeyEvent(KEY_DOWN);
+            });
+
+            $("#arrow_up").click(function(event) {
+                sendFlushCurStr();
+                sendKeyEvent(KEY_UP);
+            });
+*/
+            $("#sys_btn_home").click(function(event) {
+                sendFlushCurStr();
+                sendKeyEvent(KEY_HOME);
+            });
+
+            $("#sys_btn_back").click(function(event) {
+                sendFlushCurStr();
+                sendKeyEvent(KEY_BACK);
+            });
+
+
+            $("#sys_btn_back2").click(function(event) {
+                sendFlushCurStr();
+                sendKeyEvent(KEY_BACK);
+            });
+
+
+
+
+
+
+
+
+            // Tv remote control buttons
+            $("#bt_menu").click(function(event) {
+                sendKeyEvent(TV_KEY_POWER);
+            });
+            $("#bt_up").click(function(event) {
+                sendKeyEvent(TV_KEY_UP);
+            });
+            $("#bt_info").click(function(event) {
+                sendKeyEvent(TV_KEY_INFO);
+            });
+            $("#bt_left").click(function(event) {
+                sendKeyEvent(TV_KEY_LEFT);
+            });
+            $("#bt_select").click(function(event) {
+                sendKeyEvent(TV_KEY_SELECT);
+            });
+            $("#bt_right").click(function(event) {
+                sendKeyEvent(TV_KEY_RIGHT);
+            });
+            $("#bt_back").click(function(event) {
+                sendKeyEvent(TV_KEY_BACK);
+            });
+            $("#bt_down").click(function(event) {
+                sendKeyEvent(TV_KEY_DOWN);
+            });
+            $("#bt_exit").click(function(event) {
+                sendKeyEvent(TV_KEY_EXIT);
+            });
+            $("#bt_volume_up").click(function(event) {
+                sendKeyEvent(TV_KEY_VOL_UP);
+            });
+            $("#bt_mute").click(function(event) {
+                sendKeyEvent(TV_KEY_MUTE);
+            });
+            $("#bt_channel_up").click(function(event) {
+                sendKeyEvent(TV_KEY_CHAN_UP);
+            });
+            $("#bt_volume_down").click(function(event) {
+                sendKeyEvent(TV_KEY_VOL_DOWN);
+            });
+            $("#bt_channel_list").click(function(event) {
+                sendKeyEvent(TV_KEY_SWITCHMODE);
+            });
+            $("#bt_channel_down").click(function(event) {
+                sendKeyEvent(TV_KEY_CHAN_DOWN);
+            });
+
+
+
+
+
+
+
+            content_div.addEventListener("touchstart", function(event) {
+                touch_started_x = event.touches[0].pageX;
+                touch_started_y = event.touches[0].pageY;
+                multi_touched = event.touches.length;
+                touch_contentarea_Pressed=1;
+                touch_contentarea_Moved=0;
+                touch_contentarea_pre_x = event.touches[0].pageX;
+                touch_contentarea_pre_y = event.touches[0].pageY;
+            });
+
+            content_div.addEventListener("touchmove", function(event) {
+                event.preventDefault();
+                touch_contentarea_Moved = 1;
+                touch_contentarea_pre_x = event.touches[0].pageX;
+                touch_contentarea_pre_y = event.touches[0].pageY;
+            });
+
+            content_div.addEventListener("touchend", function(event) {
+                if(touch_contentarea_Moved==1 && touch_contentarea_Pressed==1 && multi_touched == 2){
+                    if(touch_contentarea_pre_x-touch_started_x == 0){
+                        return;
+                    }
+
+                    coordinate = (touch_started_x - touch_contentarea_pre_x).toString() + "," + (touch_started_y - touch_contentarea_pre_y).toString();
+                    sendMouse_MoveEvent(coordinate);
+
+                    coordinate2= touch_contentarea_pre_x-touch_started_x;
+
+                    if (Math.abs(coordinate2) >=130) {
+                        //printLog(coordinate2)
+                        window.location='tv_mode.htm';
+                    }
+                }
+                touch_contentarea_Pressed=0;
+                touch_contentarea_Moved=0;
+
+            });
+
+            mousepad.addEventListener("touchstart", function(event) {
+                //hideTheKeyBoard();
+                flick_start_time = new Date;
+                pre_x = event.touches[0].pageX;
+                pre_y = event.touches[0].pageY;
+                scroll_pre_x = event.touches[0].pageX;
+                scroll_pre_y = event.touches[0].pageY;
+                touch_Pressed=1;
+                touch_Moved=0;
+
+                if(document.activeElement == document.getElementById( "entry" )) {
+                    sendFlushCurStr();
+                    document.activeElement.blur();
+                }
+            });
+
+            mousepad.addEventListener("touchmove", function(event) {
+
+                var coordinate;
+                touch_Moved=1;
+                event.preventDefault();
+                if((pre_x==0) && (pre_y==0)) {
+                    pre_x = event.touches[0].pageX;
+                    pre_y = event.touches[0].pageY;
+                    return;
+                }
+                if((event.touches[0].pageX-pre_x == 0) && (event.touches[0].pageY-pre_y == 0)) {
+                    return;
+                }
+
+                coordinate = (event.touches[0].pageX-pre_x).toString() + "," + (event.touches[0].pageY-pre_y).toString();
+                sendMouse_MoveEvent(coordinate);
+                pre_x = event.touches[0].pageX;
+                pre_y = event.touches[0].pageY;
+            });
+
+            mousepad.addEventListener("touchend", function(event) {
+
+                var coordinate, coordinate2;
+                var direction = 0, count = 0;
+                var flick_end_time = new Date;
+                var flick_time = flick_end_time - flick_start_time;
+
+                if(touch_Moved==0&&touch_Pressed==1){
+                    if(document.activeElement == document.getElementById( "entry" )){
+                        sendFlushCurStr();
+                    }
+                    else{
+                        sendMouse_KeyEvent(MOUSE_CLICK);
+                    }
+                }
+                else{
+                    if(touch_Moved==1 && touch_Pressed==1 && flick_time < 200 && multi_touched ==1){
+                        //printLog("flick : " + Math.abs(pre_x-scroll_pre_x) +","+Math.abs(pre_y-scroll_pre_y));
+                        if((Math.abs(pre_x-scroll_pre_x) > 70) ||(Math.abs(pre_y-scroll_pre_y) < 50)){
+                            return;
+                        }
+                        coordinate = (scroll_pre_x - pre_x).toString() + "," + (scroll_pre_y - pre_y).toString();
+                        sendMouse_MoveEvent(coordinate);
+
+                        coordinate2= pre_y-scroll_pre_y;
+                        direction = (coordinate2 > 0) ? MOUSE_SCROLL_UP : MOUSE_SCROLL_DOWN ;
+                        sendScroll(direction, 5);
+                    }
+                }
+                 if(document.activeElement == document.getElementById( "entry" )){
+                        sendFlushCurStr();
+                        touch_Moved=0;
+                        touch_Pressed=0;
+                    }
+                  else {
+                sendMouse_KeyEvent(MOUSE_RELEASED);
+                touch_Moved=0;
+                touch_Pressed=0;
+                  }
+
+            });
+
+            mousescroll.addEventListener("touchstart", function(event) {
+
+                scroll_pre_x = event.touches[0].pageX;
+                scroll_pre_y = event.touches[0].pageY;
+                sendMouse_KeyEvent(MOUSE_PRESSED);
+            });
+
+            mousescroll.addEventListener("touchmove", function(event) {
+
+                var coordinate;
+                event.preventDefault();
+
+                if(scroll_pre_y == 0){
+                    scroll_pre_x = event.touches[0].pageX;
+                    scroll_pre_y = event.touches[0].pageY;
+                    return;
+                }
+                if(((event.touches[0].pageX-scroll_pre_x == 0) && (event.touches[0].pageY-scroll_pre_y == 0))||(event.touches[0].pageY-scroll_pre_y == 0)){
+                    return;
+                }
+                var coordinate = (event.touches[0].pageX-scroll_pre_x).toString()+","+(event.touches[0].pageY-scroll_pre_y).toString();
+                sendMouse_MoveEvent(coordinate);
+                scroll_pre_x = event.touches[0].pageX;
+                scroll_pre_y = event.touches[0].pageY;
+            });
+
+            mousescroll.addEventListener("touchend", function(event) {
+                scroll_pre_y=0;
+                sendMouse_KeyEvent(MOUSE_RELEASED);
+            });
+
+            // Firefox, Google Chrome, Opera, Safari, Internet Explorer from version 9
+            $("#entry").on("input", function(event) {
+
+                window.clearInterval(flush_timeout);
+                var cur_timestamp = (new Date).getTime();
+                latest_typed_timestamp = cur_timestamp;
+
+                //To prevent multiline field in textarea when the enter key is typed and send keyevent
+                if(this.value.substring(this.value.length - 1) == "\n"){
+                    this.value = this.value.substring(0, this.value.length - 1);
+                    sendFlushCurStr();
+                    entry.value = TMP_CHAR;
+                    TMP_TIMESTAMP = cur_timestamp;
+                    empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                    sendKeyEvent(KEY_ENTER);
+                    return false;
+                }
+                //To prevent removing the first chartor(TMP_CHAR)
+                if(TMP_CHAR.substring(0, TMP_CHAR.length - 1) == this.value){
+                    entry.value = TMP_CHAR;
+                    TMP_TIMESTAMP = cur_timestamp;
+                    empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                    return false;
+                }
+                //To prevent duplicating preedit string error for Note2, S3 web browser
+                if(pre_str == this.value){
+                    return;
+                }
+                pre_str = this.value;
+                if(this.value.substring(this.value.length - 1) == " ") {
+                    var commitStr = this.value;
+                    sendFlushCurStr();
+                }
+                else{
+                    if ($("#search_link_checker").prop("checked")){
+                        flush_timeout = window.setInterval("sendFlushCurStr()", FLUSH_TIMEOUT);
+                    }
+                    sendPreeditStr(this.value);
+                }
+            });
+
+            // Internet Explorer
+            $("#entry").on("propertychange", function(event) {
+
+                window.clearInterval(flush_timeout);
+                var cur_timestamp = (new Date).getTime();
+                latest_typed_timestamp = cur_timestamp;
+
+                //To prevent multiline field in textarea when the enter key is typed and send keyevent
+                if(this.value.substring(this.value.length - 1) == "\n"){
+                    this.value = this.value.substring(0, this.value.length - 1);
+                    sendFlushCurStr();
+                    entry.value = TMP_CHAR;
+                    TMP_TIMESTAMP = cur_timestamp;
+                    empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                    sendKeyEvent(KEY_ENTER);
+                    return false;
+                }
+                //To prevent removing the first chartor(TMP_CHAR)
+                if(TMP_CHAR.substring(0, TMP_CHAR.length - 1) == this.value){
+                    entry.value = TMP_CHAR;
+                    TMP_TIMESTAMP = cur_timestamp;
+                    empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                    return false;
+                }
+                //To prevent duplicating preedit string error for Note2, S3 web browser
+                if(pre_str == this.value){
+                    return;
+                }
+                pre_str = this.value;
+                if(this.value.substring(this.value.length - 1) == " ") {
+                    var commitStr = this.value;
+                    sendFlushCurStr();
+                }
+                else{
+                    if ($("#search_link_checker").prop("checked")){
+                        flush_timeout = window.setInterval("sendFlushCurStr()", FLUSH_TIMEOUT);
+                    }
+                    sendPreeditStr(this.value);
+                }
+            });
+
+            $("#entry").on("keydown", function(event) {
+
+                if(event.keyCode == 17 || event.keyCode == 67) return;
+
+                //To enable back space key continually, even there is no charactor for Note2, S3 web browser
+                if(this.value == TMP_CHAR && event.keyCode == KEY_BACKSPACE) {
+                    sendKeyEvent(event.keyCode);
+
+                //To remove the last preedit charator, when tap the backspace key
+                }else if(this.value.length > TMP_CHAR.length && TMP_CHAR == this.value.substring(0, this.value.length - 1) && event.keyCode == KEY_BACKSPACE){
+                    sendKeyEvent(event.keyCode);
+                }
+            });
+        });
+
+    </script>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    <div id="one" data-role="page" data-theme="a" data-fullscreen="true">
+
+        <div data-role="header" >
+            <h1><table align=left border=0 width=100% ><tr><td align=right style="text-align:center; vertical-align:super;"><img width=35 src="wifikeyboard.png"></td><td align="left" >Tizen Remote Input</td></tr></table></h1>
+        </div>
+        <!-- /header -->
+
+        <div id ="content_div" data-role="content">
+
+<table border=0 cellpadding=10 width=100%><tr><td>
+            <textarea name="entry" wrap="off" style="overflow:hidden;" rows="1" id="entry"></textarea>
+</td></tr>            </table>
+            <div>
+                <div id="mousepad" style="background-image:url(mouse_pad.png); float:left; background-size: 100% 100%; background-repeat: no-repeat;width:88%;height:280px;"></div>
+                <div id="mousescroll" style="background-image:url(scrollbar.png); float:left; background-size: 100% 100%; background-repeat: no-repeat;width:12%;height:280px;"></div>
+            </div>
+            <!--<textarea name="logbox" id="log_box" style="overflow:auto; height:10px;width:100%;letter-spacing:0; padding:8; border-style:dotted; font-size:12px" ></textarea>  -->
+        </div>
+        <!-- /content -->
+
+        <div data-role="footer" data-tap-toggle="false" data-position="fixed"  >
+            <div data-role="navbar" class="nav-glyphish-example" data-grid="b">
+                <ul>
+                    <li><a href="#two" id="sys_btn_menu" data-icon="bars" >Remocon</a></li>
+                    <li><img onclick="javascript:clearLog();" src="tizenbrand.png"></li>
+                    <li><a href="#" id="sys_btn_back" data-icon="back" >Back</a></li>
+                </ul>
+            </div>
+
+        </div>
+        <!-- /footer -->
+    </div>
+    <!-- /page -->
+
+<script>
+
+</script>
+
+
+    <div id="two" data-role="page" data-theme="a" >
+
+        <div data-role="header">
+            <h1><table align=left border=0 width=100%><tr><td align=right><img width=35 src="wifikeyboard.png"></td><td align=left >Tizen Remote Input</td></tr></table></h1>
+        </div> <!-- /header -->
+
+        <div id ="content_div2" data-role="content" >
+
+            <div align="center" style="line-height:0em">
+                <table style="text-align: center;" border="0" cellpadding="3" cellspacing="0">
+                    <tr>
+                        <td><a id="bt_menu" href="#" data-role="button" data-icon="grid" data-iconpos="bottom" data-theme="f" style= "height:60px; width:60px" ><font size="1" style="normal" >간편</p>메뉴</font> </a></td>
+                        <td><a id="bt_up" href="#" data-role="button" data-icon="arrow-u" data-iconpos="top" data-theme="b" style= "height:65px; width:65px" ><font size="2" style="normal" ></font> </a></td>
+                        <td><a id="bt_info" href="#" data-role="button" data-icon="info" data-iconpos="bottom" data-theme="f" style= "height:60px; width:60px" ><font size="1" style="normal" >정보</p>표시</font> </a></td>
+                    </tr>
+                    <tr>
+                        <td><a id="bt_left" href="#" data-role="button" data-icon="arrow-l" data-iconpos="left" data-theme="b" style= "height:65px; width:65px" ><font size="1" style="normal" ></font></a></td>
+                        <td><a id="bt_select" href="#" data-role="button" data-icon="check" data-iconpos="bottom" data-theme="a"style= "height:65px; width:65px" ><font size="2" style="normal" ></font> </a></td>
+                        <td><a id="bt_right" href="#" data-role="button" data-icon="arrow-r" data-iconpos="right" data-theme="b"style= "height:65px; width:65px" ><font size="1" style="normal" ></font> </a></td>
+                    </tr>
+                    <tr>
+                        <td><a id="bt_back" href="#" data-role="button" data-icon="back" data-iconpos="bottom" data-theme="f"style= "height:60px; width:60px" ><font size="1" style="normal" >복귀</font> </a></td>
+                        <td><a id="bt_down" href="#" data-role="button" data-icon="arrow-d" data-iconpos="bottom" data-theme="b"style= "height:65px; width:65px" ><font size="2" style="normal" ></font> </a></td>
+                        <td><a id="bt_exit" href="#" data-role="button" data-icon="home" data-iconpos="bottom" data-theme="f"style= "height:60px; width:60px" ><font size="1" style="normal" >종료</font> </a></td>
+                    </tr>
+                </table>
+                <table style="text-align: center;" border="0" cellpadding="3" cellspacing="0">
+                    <tr>
+                        <td style="vertical-align: middle; width:120px; text-align: center;"><center><a id="bt_volume_up" href="#" data-role="button" data-icon="plus" data-iconpos="top"  data-theme="h" style= "height:75px; width:75px" ><font size="2" style="normal" >음</font></a></center></td>
+                        <td align="center" ><a id="bt_mute" href="#" data-role="button" data-theme="a"style= "height:40px; width:40px" ><font size="1" style="normal" >조용</font> </a></td>
+                        <td style="vertical-align: middle; width:120px; text-align: center;"><center><a id="bt_channel_up" href="#" data-role="button" data-icon="arrow-u" data-iconpos="top" data-theme="h"style= "height:75px; width:75px" ><font size="2" style="normal" >채</font> </a></center></td>
+                    </tr>    <div id="two" data-role="page" >
+
+                    <tr>
+                        <td style="vertical-align: middle; width:120px; text-align: center;"><center><a id="bt_volume_down" href="#" data-role="button" data-icon="minus" data-iconpos="bottom" data-theme="h"style= "height:75px; width:75px" ><font size="2" style="normal" >량</font> </a></center></td>
+                        <td align="center"><a id="bt_channel_list" href="#" data-role="button" data-theme="a"style= "height:40px; width:55px" ><font size="1" style="normal" >채널</p>목록</font> </a></td>
+                        <td style="vertical-align: middle; width:120px; text-align: center;"><center><a id="bt_channel_down" href="#" data-role="button" data-icon="arrow-d" data-iconpos="bottom" data-theme="h"style= "height:75px; width:75px" ><font size="2" style="normal" >널</font> </a></center></td>
+                    </tr>
+                </table>
+            </div>
+        </div>
+        <!-- /content -->
+
+        <div data-role="footer" data-tap-toggle="false" data-position="fixed">
+            <div data-role="navbar" data-grid="b">
+                <ul>
+                    <li><a href="#one" data-icon="bars">Menu</a></li>
+                    <li><img width=100%  src="tizenbrand.png"></li>
+                    <li><a href="#" id="sys_btn_back2" data-icon="back">Back</a></li>
+                </ul>
+            </div>
+        </div>
+        <!-- /footer -->
+    </div>
+    <!-- /page -->
+
+
+
+</body>
+</html>
+
+
diff --git a/ism/data/remote-input/mouse.htm b/ism/data/remote-input/mouse.htm
new file mode 100644 (file)
index 0000000..8e71f0d
--- /dev/null
@@ -0,0 +1,234 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Tizen Remote Input</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable = no">
+<link rel="stylesheet" href="jquery.mobile-1.3.1.min.css" type="text/css"/>
+<script src="ajaxCaller.js" type="text/javascript"> </script>
+<script src="util.js" type="text/javascript"> </script>
+<script src="jquery-2.0.2.min.js"></script>
+<script src="jquery.mobile-1.3.1.min.js"></script>
+</head>
+
+<body>
+    <script>
+        // Callback incremental index
+        var id_num = 0;
+
+        var MOUSE_CLICK = 555;
+        var MOUSE_SCROLL_UP = 556;
+        var MOUSE_SCROLL_DOWN = 557;
+
+        var KEY_MENU = 10001;
+        var KEY_HOME = 10002;
+        var KEY_BACK = 10003;
+
+        // Mouse prior coordinate, click flag
+        var pre_x = 0;
+        var pre_y = 0;
+        var touch_Pressed=0;
+        var touch_Moved=0;
+        var scroll_pre_y = 0;
+
+        function delay(){
+            return;
+        }
+
+        function cbAjax(text, headers, callingContext){
+            id_num++;
+            return true;
+        }
+        function sendKeyEvent(keyCode){
+            printLog("Send_Key_Event :("+ keyCode +")");
+            var bodyVars = {id:id_num, key:'event', value:keyCode}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+        function sendMouse_KeyEvent(mouseCode){
+            //printLog("Send_Mouse_KeyEvent :("+ mouseCode +")");
+            var bodyVars = {id:id_num, key:'mouse_key', value:mouseCode}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+        function sendMouse_MoveEvent(coordinate){
+            printLog("Send_Mouse_MoveEvent :("+ coordinate +")");
+            var bodyVars = {id:id_num, key:'mouse_move', value:coordinate}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+        function printLog(str){
+            if (!$("#use_debug_checker").prop("checked")){
+                return;
+            }
+            log_box.value = log_box.value +"\n"+ str;
+            var psconsole = $('#log_box');
+            psconsole.scrollTop(
+                psconsole[0].scrollHeight - psconsole.height()
+            );
+        }
+        function clearLog(){
+            log_box.value = "";log_box.value +"\n"+ str;
+        }
+        function sendScroll(direction, count){
+
+            for (i = 0 ; i < count ; i++)
+            {
+                sendMouse_KeyEvent(direction);
+            }
+        }
+
+//      $(document).bind("touchmove",function(event){
+//          event.preventDefault();
+//      });
+        $(document).ready(function() {
+            var pad = document.getElementById( "mousepad" );
+            pad.focus();
+
+            // 3 system hw buttons
+            $("#sys_btn_menu").click(function(event) {
+                //printLog("menu btn is clicked");
+                sendKeyEvent(KEY_MENU);
+                pad.focus();
+            });
+
+            $("#sys_btn_home").click(function(event) {
+                //printLog("home btn is clicked");
+                sendKeyEvent(KEY_HOME);
+                pad.focus();
+            });
+
+            $("#sys_btn_back").click(function(event) {
+                //printLog("back btn is clicked");
+                sendKeyEvent(KEY_BACK);
+                pad.focus();
+            });
+
+            mousepad.addEventListener("touchstart", function(event) {
+                printLog("touch start");
+                pre_x=0;
+                pre_y=0;
+                pre_x = event.touches[0].pageX;
+                pre_y = event.touches[0].pageY;
+
+                touch_Pressed=1;
+                touch_Moved=0;
+            });
+
+            mousepad.addEventListener("touchmove", function(event) {
+
+                var coordinate;
+                touch_Moved=1;
+                event.preventDefault();
+
+                if(pre_x==0||pre_y==0){
+                    pre_x = event.touches[0].pageX;
+                    pre_y = event.touches[0].pageY;
+                    return;
+                }
+                if((event.touches[0].pageX-pre_x == 0) && (event.touches[0].pageY-pre_y == 0)){
+                return;
+                }
+                coordinate = (event.touches[0].pageX-pre_x).toString() + "," + (event.touches[0].pageY-pre_y).toString();
+
+                //printLog("coordinate :"+coordinate);
+                pre_x = event.touches[0].pageX;
+                pre_y = event.touches[0].pageY;
+                sendMouse_MoveEvent(coordinate);
+            });
+
+            mousepad.addEventListener("touchend", function(event) {
+                //printLog("touch end");
+                pre_x=0;
+                pre_y=0;
+
+                if(touch_Moved==0&&touch_Pressed==1){
+                    sendMouse_KeyEvent(MOUSE_CLICK);
+                }
+                touch_Moved=0;
+                touch_Pressed=0;
+            });
+
+            mousescroll.addEventListener("touchstart", function(event) {
+                scroll_pre_y=0;
+                scroll_pre_y = event.touches[0].pageY;
+
+            });
+            mousescroll.addEventListener("touchmove", function(event) {
+
+                var coordinate = event.touches[0].pageY-scroll_pre_y;
+                var direction = 0, count = 0;
+
+                if( scroll_pre_y == 0 || coordinate == 0){
+                    scroll_pre_y = event.touches[0].pageY;
+                    return;
+                }
+                //printLog("scroll move : "+coordinate);
+
+                if(coordinate > 0){
+                    direction = MOUSE_SCROLL_DOWN;
+                }
+                else{
+                    direction = MOUSE_SCROLL_UP;
+                }
+
+                if((Math.abs(coordinate)) > 20){
+                    count = 5;
+                }
+                else if ((Math.abs(coordinate)) > 10){
+                    count = 3;
+                }
+                else{
+                    count = 2;
+                }
+
+                sendScroll(direction, count);
+                scroll_pre_y = event.touches[0].pageY;
+                //pre_coordinate = coordinate;
+            });
+
+            mousescroll.addEventListener("touchend", function(event) {
+                //printLog("scroll touch end");
+                scroll_pre_y=0;
+
+            });
+
+//          $("#mousepad").on("mousemove", function(event) {
+//              printLog("mouse move");
+//          });
+
+        });
+
+    </script>
+
+    <div data-role="page" data-theme="a" data-fullscreen="true">
+
+        <div data-role="header">
+            <h1><table align=left border=0 width=100%><tr><td align=right><img width=35 src="wifikeyboard.png"></td><td align=left >Tizen Remote Input</td><td align=left><a href="#" id="mode_change"><img width=35 onclick="window.location='index.htm'" src="keyboard.png"></a></td></tr></table></h1>
+        </div>
+        <!-- /header -->
+
+        <div data-role="content">
+            <div>
+            <div id="mousepad" style="background-image:url(mouse_pad.png); float:left; background-size: 100% 100%; background-repeat: no-repeat;width:88%;height:350px;"></div>
+            <div id="mousescroll" style="background-image:url(scrollbar.png); float:left; background-size: 100% 100%; background-repeat: no-repeat;width:12%;height:350px;"></div>
+            </div>
+            <textarea name="logbox" disabled="disabled" id="log_box" style="overflow:auto; height:40px; width:100%;letter-spacing:0; padding:8; border-style:dotted; font-size:12px" ></textarea>
+                    <label><input type="checkbox" id="use_debug_checker" name="use_debug_checker"> <font size ="2">Debug mode</font></input></label>
+
+        </div>
+        <!-- /content -->
+        <div data-role="footer" >
+            <div data-role="navbar" class="nav-glyphish-example" data-grid="b">
+                <ul>
+                    <li><a href="#" id="sys_btn_menu" data-icon="bars">Menu</a></li>
+                    <li><img onclick="javascript:clearLog();" width=100%  src="tizenbrand.png"></li>
+                    <li><a href="#" id="sys_btn_back" data-icon="back">Back</a></li>
+                </ul>
+            </div>
+
+        </div>
+
+    </div>
+    <!-- /page -->
+
+</body>
+</html>
+
+
diff --git a/ism/data/remote-input/remote_input.css b/ism/data/remote-input/remote_input.css
new file mode 100644 (file)
index 0000000..9d3db93
--- /dev/null
@@ -0,0 +1,455 @@
+/* CSS for remote_input keyboard */
+html {
+}
+body {
+/*    background:#111121;*/
+    background-image:url(imgs/remotekeyboard_remocon_bg.png);
+    background-repeat:no-repeat;
+    background-size: 100% 100%;
+    margin:0;
+    margin-top:0px;
+    padding:0;
+
+}
+div {
+    height:100%;
+}
+
+.tb1 {
+    border:5px;
+    border-color:transparent;
+    border-style:solid;
+    border-collapse:collapse;
+    width:100%;
+    height:100%;
+}
+.tb1_thin_border {
+    border:1px;
+    border-color:transparent;
+    border-style:solid;
+    border-collapse:collapse;
+    width:100%;
+    height:100%;
+}
+.tv_table {
+    border:1px;
+    border-color:transparent;
+    border-style:solid;
+    border-collapse:collapse;
+    color: #ababab /*{a-font-color}*/;
+    width:100%;
+    height:100%;
+}
+
+.tv_inner_table {
+    border:3px;
+    border-spacing: 0px 0px;
+    border-color:transparent;
+    border-style:solid;
+    border-collapse:collapse;
+    width:100%;
+    height:100%;
+}
+
+.t_cell {
+    border:5px;
+    border-color: transparent;
+    border-style:solid;
+    text-align: center;
+    background-repeat:no-repeat;
+    background-size:auto 100%;
+    background-position:center;
+}
+.t_cell_inner {
+    border:5px;
+    padding:0px 10px;
+    border-color: transparent;
+    border-style:solid;
+    text-align: center;
+    background-repeat:no-repeat;
+    background-size:auto 100%;
+    background-position:center;
+}
+.t_cell_thin_border {
+    border:1px;
+    border-color:transparent;
+    border-style:solid;
+    text-align: center;
+    background-repeat:no-repeat;
+    background-size:auto 100%;
+    background-position:center;
+}
+.t_cell_vertical_align_bottom {
+    vertical-align:bottom;
+}
+.t_cell_footer{
+    height:10%;
+    background-repeat:no-repeat;
+    background-size:100%;
+    background-position:center center;
+}
+
+.t_cell_header{
+    background-size:auto 100%;
+    background-position:bottom right;
+}
+.t_cell_mousepad{
+    background-size:100% 90%;
+    background-position:top center;
+}
+.cell_width5 {
+    width:5%;
+}
+.cell_width10 {
+    width:10%;
+}
+.cell_width15 {
+    width:15%;
+}
+.cell_width25 {
+    width:25%;
+}
+.cell_width33 {
+    width:33.33%;
+}
+.cell_width50 {
+    width:50%;
+}
+.cell_width75 {
+    width:75%;
+}
+.cell_height5 {
+    height:5%;
+}
+.cell_height7 {
+    height:7%;
+}
+.cell_height10 {
+    height:10%;
+}
+.cell_height13 {
+    height:13%;
+}
+.cell_height15 {
+    height:15%;
+}
+.cell_height18 {
+    height:18%;
+}
+.cell_height20 {
+    height:20%;
+}
+.cell_height25 {
+    height:25%;
+}
+.cell_height40 {
+    height:40%;
+}
+.cell_height50 {
+    height:50%;
+}
+#entry {
+    overflow:hidden;
+    width:90%;
+    font-size:160%;
+    background-repeat:no-repeat;
+    background:             #42a02e2 /*{a-entry-background-color}*/;
+    color:                  black /*{a-font-color}*/;
+    text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/;
+    font-weight: normal;
+    border:1px solid #919191;
+}
+.visible {
+    display:block;
+}
+.invisible {
+    display:none;
+}
+
+.logo {
+    background:url(imgs/remote_keyboard_logo.png);
+    background-size:95% auto;
+    background-repeat:no-repeat;
+    background-position:center top;
+}
+.air_input_mode {
+    background:url(imgs/air_bt_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center top;
+}
+.type_a {
+    background:url(imgs/a_bt_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center top;
+}
+.type_b {
+    background:url(imgs/b_bt_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center top;
+}
+.type_c {
+    background:url(imgs/c_bt_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center top;
+}
+.reset_bt {
+    background:url(imgs/reset_bt_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center top;
+}
+.volume_up {
+    background:url(imgs/volume_up.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+.volume_up:active{
+    background:url(imgs/volume_up_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.volume_down {
+    background:url(imgs/volume_down.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.volume_down:active{
+    background:url(imgs/volume_down_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.channel_down {
+    background:url(imgs/channel_down.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.channel_down:active{
+    background:url(imgs/channel_down_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.channel_up {
+    background:url(imgs/channel_up.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.channel_up:active{
+    background:url(imgs/channel_up_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.power {
+    background:url(imgs/power.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.power:active{
+    background:url(imgs/power_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.mute {
+    background:url(imgs/mute.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.mute:active{
+    background:url(imgs/mute_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.chlist {
+    background:url(imgs/chlist.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.chlist:active{
+    background:url(imgs/chlist_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.exit {
+    background:url(imgs/exit.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.exit:active{
+    background:url(imgs/exit_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.source {
+    background:url(imgs/source.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.source:active{
+    background:url(imgs/source_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.return {
+    background:url(imgs/return.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.return:active{
+    background:url(imgs/return_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.menu {
+    background:url(imgs/menu.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.menu:active{
+    background:url(imgs/menu_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.info {
+    background:url(imgs/info.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.info:active{
+    background:url(imgs/info_pressed.png);
+    background-size:auto 100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.back {
+    background:url(imgs/back.png);
+    background-size:100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.back:active{
+    background:url(imgs/back_pressed.png);
+    background-size:100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.apps {
+    background:url(imgs/apps.png);
+    background-size:100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.apps:active{
+    background:url(imgs/apps_pressed.png);
+    background-size:100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.modeswitcher_to_mouse {
+    background:url(imgs/modeswitcher_to_mouse.png);
+    background-size:100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+.modeswitcher_to_mouse:active{
+    background:url(imgs/modeswitcher_pressed.png);
+    background-size:100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+.modeswitcher_to_tv {
+    background:url(imgs/modeswitcher_to_tv.png);
+    background-size:100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+.modeswitcher_to_tv:active {
+    background:url(imgs/modeswitcher_pressed.png);
+    background-size:100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+.mouse_panel {
+    background:url(imgs/mouse_panel_bg.png);
+    background-size:100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+.air_panel {
+    background:url(imgs/air_panel_bg.png);
+    background-size:100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+.channel {
+    background:url(imgs/channel.png);
+    background-size:100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.volume {
+    background:url(imgs/volume.png);
+    background-size:100%;
+    background-repeat:no-repeat;
+    background-position:center;
+}
+
+.cell_gray_font{
+    font-size:180%;
+    color: #dedede /*{a-font-color}*/;
+    font-weight: bold;
+    position : 20% center;
+}
diff --git a/ism/data/remote-input/remote_input.js b/ism/data/remote-input/remote_input.js
new file mode 100644 (file)
index 0000000..3111f9e
--- /dev/null
@@ -0,0 +1,411 @@
+document.write("<script type='text/javascript' src='ajaxCaller.js'><"+"/script>");
+document.write("<script type='text/javascript' src='util.js'><"+"/script>");
+document.write("<script type='text/javascript' src='jquery-2.0.2.min.js'><"+"/script>");
+document.write("<script type='text/javascript' src='jquery.mobile-1.3.1.min.js'><"+"/script>");
+
+
+
+
+//for key_input
+            // Key definition
+        var KEY_BACKSPACE = 8;
+        var KEY_ENTER = 13;
+        var KEY_SPACE = 32;
+        var KEY_ESCAPE = 27;
+
+        var KEY_MENU = 10001;
+        var KEY_HOME = 10002;
+        var KEY_BACK = 10003;
+
+        var MOUSE_CLICK = 555;
+//        var MOUSE_PRESSED = 556;
+//        var MOUSE_RELEASED =557;
+
+        // Callback incremental index
+        var id_num = 0;
+
+        var TV_KEY_POWER = 124;
+        var TV_KEY_SWITCHMODE = 235;
+        var TV_KEY_MENU = 179;
+        var TV_KEY_UP = 111;
+        var TV_KEY_INFO = 69;
+        var TV_KEY_LEFT = 113;
+        var TV_KEY_SELECT = 36;
+        var TV_KEY_RIGHT = 114;
+        var TV_KEY_BACK = 166;
+        var TV_KEY_DOWN = 116;
+        var TV_KEY_EXIT = 182;
+        var TV_KEY_VOL_UP = 123;
+        var TV_KEY_MUTE = 121;
+        var TV_KEY_CHAN_UP = 112;
+        var TV_KEY_VOL_DOWN = 122;
+        var TV_KEY_CHAN_LIST = 68;
+        var TV_KEY_CHAN_DOWN = 117;
+
+        var multi_touched = 0;
+        var touch_started_x = 0;
+        var touch_started_y = 0;
+        var touch_contentarea_Pressed=0;
+        var touch_contentarea_Moved=0;
+        var touch_contentarea_pre_x=0;
+        var touch_contentarea_pre_y=0;
+
+
+// for key_input
+
+        // Mouse prior coordinate, click flag
+        var pre_x = 0;
+        var pre_y = 0;
+        var touch_Pressed=0;
+        var touch_Moved=0;
+        var scroll_pre_x = 0;
+        var scroll_pre_y = 0;
+
+        // Callback incremental index
+        var id_num = 0;
+        var count = 0;
+
+        // Flush timer
+        var flush_timeout;
+        var FLUSH_TIMEOUT = 2000;
+        var FLUSH_ENTER_TIMEOUT = 50;
+        var flick_start_time = 0;
+        var flick_time = 0;
+        // Backup pre string
+        var pre_str = "";
+        var TMP_CHAR = " ";
+        var TMP_TIMESTAMP = 0;
+        var EMPTY_CHECKER_TIMEOUT = 10;
+        var latest_typed_timestamp = 0;
+
+        function cbAjax(text, headers, callingContext){
+            id_num++;
+            return true;
+        }
+        function sendKeyEvent(keyCode){
+           //addJavascript('ajaxCaller.js');
+            var bodyVars = {id:id_num, key:'event', value:keyCode}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+        function sendMouse_KeyEvent(mouseCode) {
+            var bodyVars = {id:id_num, key:'mouse_key', value:mouseCode}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendMouse_MoveEvent(coordinate) {
+            var bodyVars = {id:id_num, key:'mouse_move', value:coordinate}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendWheel_MoveEvent(coordinate) {
+            var bodyVars = {id:id_num, key:'wheel_move', value:coordinate}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function removeTmpChar(str){
+            if (TMP_CHAR.length < 1) return;
+            if (str.length >= TMP_CHAR.length) {
+                str = str.substring (TMP_CHAR.length);
+            }
+            return str;
+        }
+
+        function sendPreeditStr(str){
+            if ($("#search_link_checker").prop("checked")){
+                return;
+            }
+            str = removeTmpChar(str);
+            var bodyVars = {id:id_num, key:'preedit', value:str}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+
+        function sendCommitStr(str){
+            str = removeTmpChar(str);
+            if ($("#search_link_checker").prop("checked")){
+                var bodyVars = {id:id_num, key:'search', value:str}
+                ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+            }
+            else{
+                var bodyVars = {id:id_num, key:'commit', value:str}
+                ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+            }
+        }
+        function inputModeChanged(from, to) {
+                event.preventDefault();
+                //setHandMode(to);
+                var from_div = document.getElementById(from);
+                from_div.style.display = "none";
+                var to_div = document.getElementById(to);
+                to_div.style.display = "block";
+        }
+        function sendFlushCurStr(){
+            var entry = document.getElementById( "entry" );
+            var str = entry.value;
+            if(str.length > 0){
+                entry.value = TMP_CHAR;
+                pre_str = "";
+                sendCommitStr (str)
+                window.clearInterval(flush_timeout);
+            }
+        }
+        function sendevent(form){
+            //alert(form);
+            if (form == "sys_btn_modechange") {
+                inputModeChanged("tvmode", "keymode");
+            }
+            else if (form == "sys_btn_home"){
+                sendKeyEvent(KEY_HOME);
+            }
+            else if (form == "sys_btn_back"){
+                sendKeyEvent(KEY_BACK);
+            }
+            else if (form == "sys_btn_modechange2"){
+                inputModeChanged("keymode", "tvmode");
+            }
+            else if (form == "sys_btn_home2"){
+                sendKeyEvent(KEY_HOME);
+            }
+            else if (form == "sys_btn_back2"){
+                sendKeyEvent(KEY_BACK);
+            }
+            else if (form == "bt_power"){
+                sendKeyEvent(TV_KEY_POWER);
+            }
+            else if (form == "bt_switchmode"){
+                sendKeyEvent(TV_KEY_SWITCHMODE);
+            }
+            else if (form == "bt_menu"){
+                sendKeyEvent(KEY_MENU);
+            }
+            else if (form == "bt_info"){
+                sendKeyEvent(TV_KEY_INFO);
+            }
+            else if (form == "bt_select"){
+                sendKeyEvent(TV_KEY_SELECT);
+            }
+            else if (form == "bt_back"){
+                sendKeyEvent(TV_KEY_BACK);
+            }
+            else if (form == "bt_exit"){
+                sendKeyEvent(TV_KEY_EXIT);
+            }
+            else if (form == "bt_volume_up"){
+               // sendKeyEvent(TV_KEY_VOL_UP);
+                inputModeChanged('tvmode', 'keymode');
+            }
+            else if (form == "bt_mute"){
+                sendKeyEvent(TV_KEY_MUTE);
+            }
+            else if (form == "bt_channel_up"){
+                sendKeyEvent(TV_KEY_CHAN_UP);
+            }
+            else if (form == "bt_volume_down"){
+                sendKeyEvent(TV_KEY_VOL_DOWN);
+            }
+            else if (form == "bt_channel_list"){
+                sendKeyEvent(TV_KEY_CHAN_LIST);
+            }
+            else if (form == "bt_channel_down"){
+                sendKeyEvent(TV_KEY_CHAN_DOWN);
+            }
+        }
+
+        function clearLog(){
+            log_box.value = "";log_box.value +"\n"+ str;
+        }
+        function reArrangeCursorPos(){
+            if(latest_typed_timestamp == TMP_TIMESTAMP){
+                entry.setSelectionRange(TMP_CHAR.length,TMP_CHAR.length);
+            }
+            window.clearInterval(empty_checker_timeout);
+        }
+
+        $(document).ready(function()    {
+
+          setTimeout(function(){
+            window.scrollTo(0, 1);
+            }, 0);
+
+            var entry = document.getElementById( "entry" );
+            //entry.focus();
+            entry.value = TMP_CHAR;
+/*
+            content_div.addEventListener("touchstart", function(event) {
+                touch_started_x = event.touches[0].pageX;
+                touch_started_y = event.touches[0].pageY;
+                multi_touched = event.touches.length;
+                touch_contentarea_Pressed=1;
+                touch_contentarea_Moved=0;
+                touch_contentarea_pre_x = event.touches[0].pageX;
+                touch_contentarea_pre_y = event.touches[0].pageY;
+
+            });
+
+            content_div.addEventListener("touchmove", function(event) {
+                event.preventDefault();
+                touch_contentarea_Moved = 1;
+                touch_contentarea_pre_x = event.touches[0].pageX;
+                touch_contentarea_pre_y = event.touches[0].pageY;
+                event.preventDefault();
+            });
+            content_div.addEventListener("touchend", function(event) {
+                if(touch_contentarea_Moved==1 && touch_contentarea_Pressed==1 && multi_touched == 2){
+                    if(touch_contentarea_pre_x-touch_started_x == 0){
+                        return;
+                    }
+                    coordinate2= touch_contentarea_pre_x-touch_started_x;
+                    if (Math.abs(coordinate2) >=130){
+                    $.mobile.changePage('#keymode','flip','reverse');
+//                        window.location='key_mode.htm';
+                    }
+                }
+                touch_contentarea_Pressed=0;
+                touch_contentarea_Moved=0;
+            });
+
+
+            content_div2.addEventListener("touchstart", function(event) {
+                touch_started_x = event.touches[0].pageX;
+                touch_started_y = event.touches[0].pageY;
+                multi_touched = event.touches.length;
+                touch_contentarea_Pressed=1;
+                touch_contentarea_Moved=0;
+                touch_contentarea_pre_x = event.touches[0].pageX;
+                touch_contentarea_pre_y = event.touches[0].pageY;
+
+            });
+
+            content_div2.addEventListener("touchmove", function(event) {
+                event.preventDefault();
+                touch_contentarea_Moved = 1;
+                touch_contentarea_pre_x = event.touches[0].pageX;
+                touch_contentarea_pre_y = event.touches[0].pageY;
+                event.preventDefault();
+            });
+            content_div2.addEventListener("touchend", function(event) {
+                if(touch_contentarea_Moved==1 && touch_contentarea_Pressed==1 && multi_touched == 2){
+                    if(touch_contentarea_pre_x-touch_started_x == 0){
+                        return;
+                    }
+                    coordinate2= touch_contentarea_pre_x-touch_started_x;
+                    if (Math.abs(coordinate2) >=130){
+                    $.mobile.changePage('#tvmode','flip','reverse');
+                    }
+                }
+                touch_contentarea_Pressed=0;
+                touch_contentarea_Moved=0;
+            });
+
+
+            mousepad.addEventListener("touchstart", function(event) {
+                //hideTheKeyBoard();
+                flick_start_time = new Date;
+                pre_x = event.touches[0].pageX;
+                pre_y = event.touches[0].pageY;
+//                scroll_pre_x = event.touches[0].pageX;
+//                scroll_pre_y = event.touches[0].pageY;
+                touch_Pressed=1;
+                touch_Moved=0;
+
+                if(document.activeElement == document.getElementById( "entry" )) {
+                    sendFlushCurStr();
+                    document.activeElement.blur();
+                }
+            });
+
+            mousepad.addEventListener("touchmove", function(event) {
+
+                var coordinate;
+                touch_Moved=1;
+                event.preventDefault();
+                if((pre_x==0) && (pre_y==0)) {
+                    pre_x = event.touches[0].pageX;
+                    pre_y = event.touches[0].pageY;
+                    return;
+                }
+                if((event.touches[0].pageX-pre_x == 0) && (event.touches[0].pageY-pre_y == 0)) {
+                    return;
+                }
+
+                coordinate = (event.touches[0].pageX-pre_x).toString() + "," + (event.touches[0].pageY-pre_y).toString();
+                sendMouse_MoveEvent(coordinate);
+                pre_x = event.touches[0].pageX;
+                pre_y = event.touches[0].pageY;
+            });
+
+            mousepad.addEventListener("touchend", function(event) {
+
+                var coordinate, coordinate2;
+                var direction = 0, count = 0;
+//                var flick_end_time = new Date;
+//                var flick_time = flick_end_time - flick_start_time;
+
+                if(touch_Moved==0&&touch_Pressed==1){
+                    if(document.activeElement == document.getElementById( "entry" )){
+                        sendFlushCurStr();
+                    }
+                    else{
+                        sendMouse_KeyEvent(MOUSE_CLICK);
+                    }
+                }
+                /*
+                else{
+                    if(touch_Moved==1 && touch_Pressed==1 && flick_time < 200 && multi_touched ==1){
+                        //printLog("flick : " + Math.abs(pre_x-scroll_pre_x) +","+Math.abs(pre_y-scroll_pre_y));
+                        if((Math.abs(pre_x-scroll_pre_x) > 70) ||(Math.abs(pre_y-scroll_pre_y) < 50)){
+                            return;
+                        }
+                        coordinate = (scroll_pre_x - pre_x).toString() + "," + (scroll_pre_y - pre_y).toString();
+                        //sendMouse_MoveEvent(coordinate);
+
+                        coordinate2= pre_y-scroll_pre_y;
+                        direction = (coordinate2 > 0) ? MOUSE_SCROLL_UP : MOUSE_SCROLL_DOWN ;
+                        //sendScroll(direction, 5);
+                    }
+                }
+                //////별/해야됨
+                 if(document.activeElement == document.getElementById( "entry" )){
+                        sendFlushCurStr();
+                        touch_Moved=0;
+                        touch_Pressed=0;
+                    }
+                  else {
+                        //sendMouse_KeyEvent(MOUSE_RELEASED);
+                        touch_Moved=0;
+                        touch_Pressed=0;
+                  }
+
+            });
+
+            mousescroll.addEventListener("touchstart", function(event) {
+
+                scroll_pre_x = event.touches[0].pageX;
+                scroll_pre_y = event.touches[0].pageY;
+//                sendMouse_KeyEvent(MOUSE_PRESSED);
+            });
+
+            mousescroll.addEventListener("touchmove", function(event) {
+
+                var coordinate;
+                event.preventDefault();
+
+                if(scroll_pre_y == 0){
+                    scroll_pre_x = event.touches[0].pageX;
+                    scroll_pre_y = event.touches[0].pageY;
+                    return;
+                }
+                if(((event.touches[0].pageX-scroll_pre_x == 0) && (event.touches[0].pageY-scroll_pre_y == 0))||(event.touches[0].pageY-scroll_pre_y == 0)){
+                    return;
+                }
+                var coordinate = (event.touches[0].pageX-scroll_pre_x).toString()+","+(event.touches[0].pageY-scroll_pre_y).toString();
+                sendWheel_MoveEvent(coordinate);
+
+                scroll_pre_x = event.touches[0].pageX;
+                scroll_pre_y = event.touches[0].pageY;
+            });
+
+            mousescroll.addEventListener("touchend", function(event) {
+                scroll_pre_y=0;
+                //sendMouse_KeyEvent(MOUSE_RELEASED);
+            });
+*/
diff --git a/ism/data/remote-input/shortcut_icon.png b/ism/data/remote-input/shortcut_icon.png
new file mode 100644 (file)
index 0000000..c90225d
Binary files /dev/null and b/ism/data/remote-input/shortcut_icon.png differ
diff --git a/ism/data/remote-input/test.htm b/ism/data/remote-input/test.htm
new file mode 100644 (file)
index 0000000..4f8c1bc
--- /dev/null
@@ -0,0 +1,145 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Tizen Remote Input</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable = no">
+<link rel="stylesheet" href="jquery.mobile-1.3.1.min.css" type="text/css"/>
+<script src="ajaxCaller.js" type="text/javascript"> </script>
+<script src="util.js" type="text/javascript"> </script>
+<script src="jquery-2.0.2.min.js"></script>
+<script src="jquery.mobile-1.3.1.min.js"></script>
+</head>
+
+<body>
+
+<input type="button" value="Start" onclick="WebHelper.activate()" id="startBtn"/>
+
+<input type="button" value="SendLOG" onclick="WebHelper.log()" id="logBtn"/>
+
+<div id="debugconsole"></div>
+
+<script>
+ var startBtn = document.getElementById('startBtn'),
+     debug = document.getElementById('debugconsole');
+
+
+ var WebHelper = new function() {
+
+     this.MessageTypes = {
+         PLAIN:"plain",
+         QUERY:"query",
+         REPLY:"reply"
+     };
+
+     this.MessageCommands = {
+         INIT:"init",
+         EXIT:"exit",
+
+         FOCUS_IN:"focus_in",
+         FOCUS_OUT:"focus_out",
+         SHOW:"show",
+         HIDE:"hide",
+         SET_ROTATION:"set_rotation",
+         UPDATE_CURSOR_POSITION:"update_cursor_position",
+         SET_LANGUAGE:"set_language",
+         SET_IMDATA:"set_imdata",
+         GET_IMDATA:"get_imdata",
+         SET_RETURN_KEY_TYPE:"set_return_key_type",
+         GET_RETURN_KEY_TYPE:"get_return_key_type",
+         SET_RETURN_KEY_DISABLE:"set_return_key_disable",
+         GET_RETURN_KEY_DISABLE:"get_return_key_disable",
+         SET_LAYOUT:"set_layout",
+         GET_LAYOUT:"get_layout",
+         RESET_INPUT_CONTEXT:"reset_input_context",
+         PROCESS_KEY_EVENT:"process_key_event",
+
+         LOG:"log",
+         COMMIT_STRING:"commit_string",
+         UPDATE_PREEDIT_STRING:"update_preedit_string",
+         SEND_KEY_EVENT:"send_key_event",
+         SEND_MOUSE_KEY:"send_mouse_key",
+         SEND_MOUSE_MOVE:"send_mouse_move",
+         SEND_WHEEL_MOVE:"send_wheel_move",
+         SEND_AIR_INPUT:"send_air_input",
+         SEND_AIR_SETTING:"send_air_setting",
+         FORWARD_KEY_EVENT:"forward_key_event",
+         SET_KEYBOARD_SIZES:"set_keyboard_sizes",
+         CONNECT:"connect"
+     };
+
+     this.connectWebSocket = function(pcol) {
+         if (typeof MozWebSocket != "undefined") {
+             this.socket =
+                 new MozWebSocket(pcol, "keyboard-protocol");
+         } else {
+             this.socket =
+                 new WebSocket(pcol, "keyboard-protocol");
+         }
+     };
+
+     this.log = function() {
+         if (this.socket !== "undefined") {
+             debug.innerHTML += "<br>send log!";
+             this.socket.send(
+                 this.MessageTypes.REPLY + "|" +
+                 this.MessageCommands.LOG + "|" +
+                 "aa");
+         } else {
+             debug.innerHTML += "<br>fail to send log!";
+             }
+     };
+
+     this.activate = function() {
+         for (var num = 2; num < 255; num++) {
+            var pcol = "ws://192.168.0." + num +":7172";
+             //pcol = "ws://192.168.0.20"+":7172";
+             debug.innerHTML += "<br>Try to find server IP!" + pcol;
+             this.connectWebSocket(pcol);
+             //this.registerHandlers(this);
+                 this.log();
+
+             try {
+                 this.socket.onopen = function() {
+                     this.send(
+                     this.MessageTypes.PLAIN + "|" +
+                     this.MessageCommands.CONNECT + "|" +
+                     "websocket");
+                 };
+                 this.log();
+
+                 this.socket.onmessage = function(msg) {
+                     var items = msg.data.split("|");
+                     handler.defaultHandler(items);
+                     debug.innerHTML += "<br>Find server IP!" + items[1];
+
+                 };
+                 this.socket.onerror = function(msg) {
+                     debug.innerHTML += "<br>Error!" + msg;
+
+                 };
+                 this.socket.onclose = function(evt) {
+                     debug.innerHTML += "<br>Close socket!";
+                     /* Try to reconnect if disconnected uncleanly */
+                     if (evt.wasClean === false) {
+                         /*
+                         setTimeout((function(handler) {
+                             alert("connecting again!");
+                             this.connectWebSocket();
+                             this.registerHandlers(this);
+                         }).call(handler), 500);
+                         */
+                     }
+                 };
+                 this.log();
+             } catch(exception) {
+                 alert(exception);
+             }
+         }
+     };
+};
+
+</script>
+</body>
+</html>
+
+
diff --git a/ism/data/remote-input/testpage.htm b/ism/data/remote-input/testpage.htm
new file mode 100644 (file)
index 0000000..6f77e17
--- /dev/null
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<script type="text/javascript">
+function WebSocketTest()
+{
+  if ("WebSocket" in window)
+  {
+     alert("WebSocket is supported by your Browser!");
+     // Let us open a web socket
+     var ws = new WebSocket("ws://192.168.0.20:7172");
+     ws.onopen = function()
+     {
+        // Web Socket is connected, send data using send()
+        ws.send("Message to send");
+        alert("Message is sent...");
+     };
+     ws.onmessage = function (evt)
+     {
+        var received_msg = evt.data;
+        alert("Message is received...");
+     };
+     ws.onclose = function()
+     {
+        // websocket is closed.
+        alert("Connection is closed...");
+     };
+  }
+  else
+  {
+     // The browser doesn't support WebSocket
+     alert("WebSocket NOT supported by your Browser!");
+  }
+}
+</script>
+</head>
+<body>
+<div id="sse">
+   <a href="javascript:WebSocketTest()">Run WebSocket</a>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/ism/data/remote-input/tv.htm b/ism/data/remote-input/tv.htm
new file mode 100644 (file)
index 0000000..e6e155a
--- /dev/null
@@ -0,0 +1,1050 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Tizen Remote Input</title>
+    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
+    <link rel="icon" href="/favicon.ico" type="image/x-icon">
+    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"/>
+    <script src="ajaxCaller.js" type="text/javascript"> </script>
+    <link rel="stylesheet" href="remote_input.css" type="text/css"/>
+    <script src="util.js" type="text/javascript"> </script>
+    <script src="jquery-2.0.2.min.js"></script>
+<script type="text/javascript" src="web-helper-client.js"></script>
+
+</head>
+
+<body id="by">
+<script>
+    // Key definition
+    var KEY_BACKSPACE = 8;
+    var KEY_ENTER = 13;
+    var KEY_SPACE = 32;
+    var KEY_ESCAPE = 27;
+    var MODE_CHANGE_BOUNDARY_VALUE = 15;
+
+    var KEY_MENU = 10001;
+    var KEY_HOME = 10002;
+    var KEY_BACK = 10003;
+
+    var MOUSE_CLICK = 555;
+
+    // Callback incremental index
+    var id_num = 0;
+
+    var TV_KEY_POWER = 124;
+    var TV_KEY_SWITCHMODE = 235;
+    var TV_KEY_MENU = 179;
+    var TV_KEY_UP = 111;
+    var TV_KEY_INFO = 69;
+    var TV_KEY_LEFT = 113;
+    var TV_KEY_SELECT = 36;
+    var TV_KEY_RIGHT = 114;
+    var TV_KEY_BACK = 166;
+    var TV_KEY_DOWN = 116;
+    var TV_KEY_EXIT = 182;
+    var TV_KEY_VOL_UP = 123;
+    var TV_KEY_MUTE = 121;
+    var TV_KEY_CHAN_UP = 112;
+    var TV_KEY_VOL_DOWN = 122;
+    var TV_KEY_CHAN_LIST = 68;
+    var TV_KEY_CHAN_DOWN = 117;
+
+    var multi_touched = 0;
+    var touch_started_x = 0;
+    var touch_started_y = 0;
+    var touch_contentarea_Pressed=0;
+    var touch_contentarea_Moved=0;
+    var touch_contentarea_pre_x=0;
+    var touch_contentarea_pre_y=0;
+    var air_disabled = 0;
+
+
+    // for key_input
+
+    // Mouse prior coordinate, click flag
+    var pre_x = 0;
+    var pre_y = 0;
+    var touch_Pressed=0;
+    var touch_Moved=0;
+    var scroll_pre_x = 0;
+    var scroll_pre_y = 0;
+
+    // Callback incremental index
+    var id_num = 0;
+    var count = 0;
+
+    // Flush timer
+    var flush_timeout;
+    var cal_flush_timeout;
+    var CAL_FLUSH_TIMEOUT = 3000;
+    var FLUSH_TIMEOUT = 3000;
+    var FLUSH_ENTER_TIMEOUT = 50;
+    var click_start_time = 0;
+    //var flick_time = 0;
+    // Backup pre string
+    var pre_str = "";
+    var pre_pre_str = "";
+    var TMP_CHAR = " ";
+    var TMP_TIMESTAMP = 0;
+    var EMPTY_CHECKER_TIMEOUT = 10;
+    var latest_typed_timestamp = 0;
+    var cur_air_mode = 0;
+    var cur_reset_mode = 0;
+    var cur_touch_mode = 0;
+    var forceEnable_air = 0;
+    var touchmove_delta;
+    var air_delta;
+    var gry_basic_a = -0.043;
+    var gry_basic_b = 0.005;
+    var gry_basic_g = -0.002;
+    var gry_sum_a = 0;
+    var gry_sum_b = 0;
+    var gry_sum_g = 0;
+    var gry_sum_count = 0;
+    var progress = ["",".","..","...","...."];
+    var progress_count=0;
+    var cur_mode = 0;
+
+
+
+    var WebHelperClientHandler = {
+        onInit : function () {
+            WebHelperClient.log("ON INIT");
+        }
+    };
+
+    WebHelperClient.initialize(WebHelperClientHandler);
+
+    function cbAjax(text, headers, callingContext){
+        id_num++;
+        return true;
+    }
+    function sendKeyEvent(keyCode){
+        event.preventDefault();
+            WebHelperClient.sendKeyEvent(keyCode);
+    }
+    function sendMouse_KeyEvent(mouseCode) {
+        event.preventDefault();
+        if (event.touches.length < 2) {
+            WebHelperClient.sendMouse_KeyEvent(mouseCode);
+        }
+    }
+    function sendMouse_MoveEvent(coordinate) {
+        event.preventDefault();
+        if (event.touches.length < 2) {
+            WebHelperClient.log(coordinate);
+            //alert(coordinate);
+            //console.log(coordinate);
+            WebHelperClient.sendMouse_MoveEvent(coordinate);
+        }
+    }
+
+    function sendWheel_MoveEvent(coordinate) {
+        event.preventDefault();
+        if (event.touches.length < 2) {
+            WebHelperClient.sendWheel_MoveEvent(coordinate);
+        }
+    }
+    function sendAir_Input(coordinate) {
+        event.preventDefault();
+        //if (event.touches.length < 2) {
+            WebHelperClient.sendAir_Input(coordinate);
+        //}
+    }
+
+
+    function removeTmpChar(str){
+        if (TMP_CHAR.length < 1) return;
+        if (str.length >= TMP_CHAR.length) {
+            str = str.substring (TMP_CHAR.length);
+        }
+        return str;
+    }
+    function sendPreeditStr(str){
+        str = removeTmpChar(str);
+        event.preventDefault();
+        WebHelperClient.updatePreeditString(str);
+    }
+
+    function sendCommitStr(str){
+        str = removeTmpChar(str);
+        event.preventDefault();
+        WebHelperClient.commitString(str);
+    }
+    function inputModeChanged(from, to) {
+            event.preventDefault();
+            var from_div = document.getElementById(from);
+            from_div.style.display = "none";
+            var to_div = document.getElementById(to);
+            to_div.style.display = "block";
+        }
+    function sendFlushCurStr(){
+        var entry = document.getElementById( "entry" );
+        var str = entry.value;
+        if(str.length > 0){
+            entry.value = TMP_CHAR;
+            pre_str = "";
+            pre_pre_str = "";
+            sendCommitStr (str)
+            window.clearInterval(flush_timeout);
+        }
+    }
+    function show_keypad(){
+        var entry = document.getElementById( "entry" );
+        entry.focus();
+        Android.showKeyboard();
+    }
+    function hide_keypad(){
+        var entry = document.getElementById( "entry" );
+        entry.blur();
+        Android.hideKeyboard();
+        setTimeout(function(){
+            window.scrollTo(0,1);
+            var entry = document.getElementById( "entry" );
+            entry.focus();
+           entry.value = TMP_CHAR;
+        }, 300);
+    }
+    function imageModeChanged(image, object) {
+        //event.preventDefault();
+        var bt = document.getElementById(object);
+        bt.style.background = "url(imgs/" + image + ")";
+        bt.style.backgroundRepeat = "no-repeat";
+        bt.style.backgroundSize = "auto 100%";
+        bt.style.backgroundPosition = "center top";
+        bt = document.getElementById((object+"2"));
+        bt.style.background = "url(imgs/" + image + ")";
+        bt.style.backgroundRepeat = "no-repeat";
+        bt.style.backgroundSize = "auto 100%";
+        bt.style.backgroundPosition = "center top";
+    }
+
+    function home_icon_add(title){
+        var home_page_uri = "http://moakey.com/tizen_tv/list.php";
+        var home_icon_uri = "http://" + document.domain +":8182/shortcut_icon.png";
+
+        var naver_UrlScheme= "intent://addshortcut?url="+home_page_uri+"%3F"+"&icon="+home_icon_uri+"&title="+title+"&oq="+title+"&serviceCode=nstore&version=7#Intent;scheme=naversearchapp;action=android.intent.action.VIEW;category=android.intent.category.BROWSABLE;package=com.nhn.android.search;end";
+        var UserAgent = navigator.userAgent.toLowerCase();
+
+        if(UserAgent.indexOf("iphone") == -1 && UserAgent.indexOf("ipad") == -1 && UserAgent.indexOf("tizen") == -1) {
+            alert('Add the ' + title +'shortCut icon');
+            var home_icon_add_frame=document.getElementById("home_icon_add_frame");
+                home_icon_add_frame.src=naver_UrlScheme;
+        }else{
+            alert("Not surpport in iOS, Tizen ");
+        }
+    }
+    function make_calibration(gry_a, gry_b, gry_g) {
+        gry_sum_a +=gry_a;
+        gry_sum_b +=gry_b;
+        gry_sum_g +=gry_g;
+        gry_sum_count++;
+        gry_basic_a = (gry_sum_a/gry_sum_count).toFixed(3);
+        gry_basic_b = (gry_sum_b/gry_sum_count).toFixed(3);
+        gry_basic_g = (gry_sum_g/gry_sum_count).toFixed(3);
+        if (gry_sum_count%4==0){
+            air_click_area.innerHTML="Calibrating" + progress[progress_count];
+            progress_count++;
+            if(progress_count >= 5){
+                progress_count = 0;
+            }
+        }
+       // air_click_area.innerHTML="a:"+gry_basic_a + " ,b: " + gry_basic_b + ", g:" + gry_basic_g;
+    }
+
+    function get_gyro_calibration(event) {
+        event.preventDefault();
+        var r = event.rotationRate;
+        if(r!=null) {
+            make_calibration(r.alpha, r.beta, r.gamma);
+        }
+    }
+
+    function gyro_event_listener(event) {
+
+        event.preventDefault();
+        var x = event.accelerationIncludingGravity.x;
+        var y = event.accelerationIncludingGravity.y;
+        var z = event.accelerationIncludingGravity.z;
+        var r = event.rotationRate;
+        var data;
+        /*
+        gry_basic_a = x;
+        gry_basic_b = y;
+        gry_basic_g = z;
+        */
+
+        var gyro_a = r.alpha - gry_basic_a;
+        var gyro_b = r.beta - gry_basic_b;
+        var gyro_g = r.gamma - gry_basic_g;
+        //var acc_x = x*10; //for libMoveaEngine
+        //var acc_y = y*10;
+        //var acc_z = z*10;
+        //var acc_x = x;
+        //var acc_y = y;
+        //var acc_z = z;
+
+        var UserAgent = navigator.userAgent.toLowerCase();
+        if(UserAgent.indexOf("android") != -1 ) {
+            gyro_a *=100;
+            gyro_b *=100;
+            gyro_g *=100;
+        }
+        /*
+        var xz_force = Math.sqrt(x * x + z * z);
+        var x_sin = x / xz_force;
+        var z_sin = z / xz_force;
+        var x_0 = z_sin * gyro_g;
+        var y_0 = z_sin * gyro_a;
+        var x_1 = -x_sin * gyro_a;
+        var y_1 = x_sin * gyro_g
+
+        var x_offset = (- x_sin * gyro_a - z_sin * gyro_g);
+        var y_offset = (x_sin * gyro_g - z_sin * gyro_a);
+        air_delta = parseInt(Math.sqrt(x_offset*x_offset + y_offset*y_offset));
+        */
+        /*
+        if (air_delta >= 10){
+            air_disabled = 0;
+        }
+        */
+        if((x!=null || y!=null || z!=null || r!=null) && (air_disabled == 0)) {
+
+            //data = parseInt(x_offset).toString() + "," + parseInt(y_offset).toString();
+           // data = parseInt(x_0).toString() + "," + parseInt(y_0).toString() + "," + parseInt(x_1).toString() + "," + parseInt(y_1).toString();
+
+           /*
+           if(UserAgent.indexOf("iphone") != -1){
+                //data = parseInt(x_offset*(-1)).toString() + "," + parseInt(y_offset*(-1)).toString();
+            }
+           */
+            data = x.toFixed(3).toString() + "," + y.toFixed(3).toString() + "," + z.toFixed(3).toString() + "," + gyro_a.toFixed(3).toString() + "," + gyro_b.toFixed(3).toString() + "," + gyro_g.toFixed(3).toString() + ",";
+            //data = acc_x.toFixed(4).toString() + "," + acc_y.toFixed(4).toString() + "," + acc_z.toFixed(4).toString() + "," + gyro_a.toFixed(4).toString() + "," + gyro_b.toFixed(4).toString() + "," + gyro_g.toFixed(4).toString() + ",";
+            //data = acc_x.toFixed(4) + "," + acc_y.toFixed(4) + "," + acc_z.toFixed(4) + "," + gyro_a.toFixed(4) + "," + gyro_b.toFixed(4) + "," + gyro_g.toFixed(4) + ",";
+            sendAir_Input(data);
+            //air_click_area.innerHTML=data;
+        }
+    }
+    function Enable_calibration(checker){
+        if (checker == true){
+            imageModeChanged("reset_bt.png","reset_bt");
+            cur_reset_mode = 1;
+            window.addEventListener('devicemotion', get_gyro_calibration);
+        }
+        else{
+            imageModeChanged("reset_bt_pressed.png","reset_bt");
+            window.removeEventListener('devicemotion', get_gyro_calibration);
+            cur_reset_mode = 0;
+            air_click_area.innerHTML=""
+        }
+    }
+
+    function DisableMode(mode)
+    {
+        cur_mode = 0;
+
+        if (mode == "a")
+        {
+            imageModeChanged("a_bt_pressed.png","type_a");
+            if(window.DeviceMotionEvent) {
+                window.removeEventListener('devicemotion', gyro_event_listener);
+                //forceEnable_air=0;
+                air_click_area.innerHTML="";
+
+            }
+        }
+        else if(mode =="b")
+        {
+            imageModeChanged("b_bt_pressed.png","type_b");
+            if(window.DeviceMotionEvent) {
+                window.removeEventListener('devicemotion', gyro_event_listener);
+                //forceEnable_air=0;
+                air_click_area.innerHTML="";
+            }
+        }
+        else if (mode =="c")
+        {
+            imageModeChanged("c_bt_pressed.png","type_c");
+        }
+    }
+    function EnableMode(mode)
+    {
+        cur_mode = mode;
+
+        if (mode == "a")
+        {
+            imageModeChanged("a_bt.png","type_a");
+            imageModeChanged("b_bt_pressed.png","type_b");
+            imageModeChanged("c_bt_pressed.png","type_c");
+            //cur_air_mode = 1;
+            // Check for support for DeviceMotion events
+              if(window.DeviceMotionEvent) {
+                  window.addEventListener('devicemotion', gyro_event_listener);
+                  forceEnable_air = 1;
+                  air_click_area.innerHTML="click";
+              }
+        }
+        else if(mode =="b")
+        {
+            imageModeChanged("b_bt.png","type_b");
+            imageModeChanged("a_bt_pressed.png","type_a");
+            imageModeChanged("c_bt_pressed.png","type_c");
+            if(window.DeviceMotionEvent) {
+                window.addEventListener('devicemotion', gyro_event_listener);
+                forceEnable_air = 1;
+                air_click_area.innerHTML="click";
+
+            }
+        }
+        else if (mode =="c")
+        {
+            imageModeChanged("c_bt.png","type_c");
+            imageModeChanged("a_bt_pressed.png","type_a");
+            imageModeChanged("b_bt_pressed.png","type_b");
+            if(window.DeviceMotionEvent) {
+                window.removeEventListener('devicemotion', gyro_event_listener);
+                forceEnable_air = 0;
+            }
+        }
+    }
+
+    function EnableAirinput(checker){
+        if (checker == true){
+            imageModeChanged("air_bt.png","air_input_mode");
+            cur_air_mode = 1;
+          // Check for support for DeviceMotion events
+            if(window.DeviceMotionEvent) {
+                window.addEventListener('devicemotion', gyro_event_listener);
+                forceEnable_air = 1;
+            }
+        }
+        else{
+            imageModeChanged("air_bt_pressed.png","air_input_mode");
+            cur_air_mode = 0;
+            if(window.DeviceMotionEvent) {
+                window.removeEventListener('devicemotion', gyro_event_listener);
+                forceEnable_air=0;
+            }
+        }
+    }
+
+    function sendevent(form){
+        //alert(form);
+        if (form == "sys_btn_modechange") {
+            inputModeChanged("tvmode", "keymode");
+        }
+        else if (form == "sys_btn_home"){
+            sendKeyEvent(KEY_HOME);
+        }
+        else if (form == "sys_btn_back"){
+            sendKeyEvent(KEY_BACK);
+        }
+        else if (form == "sys_btn_modechange2"){
+            inputModeChanged("keymode", "tvmode");
+        }
+        else if (form == "sys_btn_home2"){
+            sendKeyEvent(KEY_HOME);
+        }
+        else if (form == "sys_btn_back2"){
+            sendKeyEvent(KEY_BACK);
+        }
+        else if (form == "bt_power"){
+            sendKeyEvent(TV_KEY_POWER);
+        }
+        else if (form == "bt_switchmode"){
+            sendKeyEvent(TV_KEY_SWITCHMODE);
+        }
+        else if (form == "bt_menu"){
+            sendKeyEvent(KEY_MENU);
+        }
+        else if (form == "bt_info"){
+            sendKeyEvent(TV_KEY_INFO);
+        }
+        else if (form == "bt_select"){
+            sendKeyEvent(TV_KEY_SELECT);
+        }
+        else if (form == "bt_back"){
+            sendKeyEvent(TV_KEY_BACK);
+        }
+        else if (form == "bt_exit"){
+            sendKeyEvent(TV_KEY_EXIT);
+        }
+        else if (form == "bt_volume_up"){
+            sendKeyEvent(TV_KEY_VOL_UP);
+        }
+        else if (form == "bt_mute"){
+            sendKeyEvent(TV_KEY_MUTE);
+        }
+        else if (form == "bt_channel_up"){
+            sendKeyEvent(TV_KEY_CHAN_UP);
+        }
+        else if (form == "bt_volume_down"){
+            sendKeyEvent(TV_KEY_VOL_DOWN);
+        }
+        else if (form == "bt_channel_list"){
+            sendKeyEvent(TV_KEY_CHAN_LIST);
+        }
+        else if (form == "bt_channel_down"){
+            sendKeyEvent(TV_KEY_CHAN_DOWN);
+        }
+        else if (form == "type_a" || form == "type_b" || form == "type_c"||form == "type_a2" || form == "type_b2" || form == "type_c2"){
+            if (cur_mode != form.charAt(5))
+                {
+                EnableMode(form.charAt(5));
+                }
+            else
+                {
+                DisableMode(form.charAt(5));
+                }
+        }
+        else if (form == "air_input_mode" || form == "air_input_mode2"){
+            if (cur_air_mode == 0 ) {
+                EnableAirinput(true);
+                air_click_area.innerHTML="click";
+            }
+            else{
+                EnableAirinput(false);
+                air_click_area.innerHTML="";
+            }
+        }
+        else if (form == "reset_bt" || form == "reset_bt2"){
+                Enable_calibration(true);
+                cal_flush_timeout = window.setTimeout(function(){
+                    alert("Finished Gyro Calibration.");
+                    Enable_calibration(false);}, CAL_FLUSH_TIMEOUT);
+        }
+        else if (form == "air_click_area"){
+            if (cur_mode == "a" ||cur_mode == "b"){
+            sendMouse_KeyEvent(MOUSE_CLICK);
+            }
+        }
+
+    }
+    function clearLog(){
+        //log_box.value = "";log_box.value +"\n"+ str;
+    }
+    function reArrangeCursorPos(){
+        if(latest_typed_timestamp == TMP_TIMESTAMP){
+            entry.setSelectionRange(TMP_CHAR.length,TMP_CHAR.length);
+        }
+        window.clearInterval(empty_checker_timeout);
+    }
+
+    $(document).ready(function()    {
+        var entry = document.getElementById( "entry" );
+        entry.focus();
+        entry.value = TMP_CHAR;
+       //set the document size
+      var obj = document.getElementById('by');
+      obj.style.height =  $(document).height() + "px";
+
+
+      setTimeout(function(){
+        window.scrollTo(0, 1);
+
+        var entry = document.getElementById( "entry" );
+        entry.focus();
+        entry.value = TMP_CHAR;
+
+        }, 300);
+
+
+    /*
+        mousepad2.addEventListener("touchstart", function(event) {
+            //hideTheKeyBoard();
+            flick_start_time = new Date;
+            pre_x = event.touches[0].pageX;
+            pre_y = event.touches[0].pageY;
+//                scroll_pre_x = event.touches[0].pageX;
+//                scroll_pre_y = event.touches[0].pageY;
+            touch_Pressed=1;
+            touch_Moved=0;
+
+            if(document.activeElement == document.getElementById( "entry" )) {
+                sendFlushCurStr();
+                document.activeElement.blur();
+            }
+        });
+
+        mousepad2.addEventListener("touchmove", function(event) {
+
+            var coordinate;
+            touch_Moved=1;
+            event.preventDefault();
+            if((pre_x==0) && (pre_y==0)) {
+                pre_x = event.touches[0].pageX;
+                pre_y = event.touches[0].pageY;
+                return;
+            }
+            if((event.touches[0].pageX-pre_x == 0) && (event.touches[0].pageY-pre_y == 0)) {
+                return;
+            }
+
+            coordinate = (event.touches[0].pageX-pre_x).toString() + "," + (event.touches[0].pageY-pre_y).toString();
+            sendMouse_MoveEvent(coordinate);
+            pre_x = event.touches[0].pageX;
+            pre_y = event.touches[0].pageY;
+        });
+
+        mousepad2.addEventListener("touchend", function(event) {
+
+            var coordinate, coordinate2;
+            var direction = 0, count = 0;
+//                var flick_end_time = new Date;
+//                var flick_time = flick_end_time - flick_start_time;
+
+            if(touch_Moved==0&&touch_Pressed==1){
+                if(document.activeElement == document.getElementById( "entry" )){
+                    sendFlushCurStr();
+                }
+                else{
+                    sendMouse_KeyEvent(MOUSE_CLICK);
+                }
+            }
+             if(document.activeElement == document.getElementById( "entry" )){
+                    sendFlushCurStr();
+                    touch_Moved=0;
+                    touch_Pressed=0;
+                }
+              else {
+                    //sendMouse_KeyEvent(MOUSE_RELEASED);
+                    touch_Moved=0;
+                    touch_Pressed=0;
+              }
+
+        });
+*/
+/*
+        air_click_area.addEventListener("touchstart", function(event) {
+            event.preventDefault();
+            click_start_time = new Date;
+            touch_Pressed=1;
+        });
+
+        air_click_area.addEventListener("touchend", function(event) {
+            event.preventDefault();
+            var coordinate, coordinate2;
+            var direction = 0, count = 0;
+            var click_end_time = new Date;
+            var click_time = click_end_time - click_start_time;
+
+            if(touch_Pressed==1 && click_time < 350){
+                    sendMouse_KeyEvent(MOUSE_CLICK);
+                    touch_Pressed=0;
+            }
+
+        });
+        */
+        mousepad.addEventListener("touchstart", function(event) {
+
+            event.preventDefault();
+            //hideTheKeyBoard();
+            click_start_time = new Date;
+            pre_x = event.touches[0].pageX;
+            pre_y = event.touches[0].pageY;
+            touch_Pressed=1;
+            touch_Moved=0;
+
+            if(document.activeElement == document.getElementById( "entry" )) {
+                sendFlushCurStr();
+                touch_Pressed=0;
+                return;
+            }
+
+            if(window.DeviceMotionEvent && cur_mode == "c") {
+                window.addEventListener('devicemotion', gyro_event_listener);
+                cur_air_mode = 1;
+            }
+            air_disabled = 1;
+
+        //mousepad.innerHTML = "";
+        });
+
+        mousepad.addEventListener("touchmove", function(event) {
+
+            event.preventDefault();
+            var coordinate;
+            touch_Moved=1;
+            event.preventDefault();
+            if((pre_x==0) && (pre_y==0)) {
+                pre_x = event.touches[0].pageX;
+                pre_y = event.touches[0].pageY;
+                return;
+            }
+            if((event.touches[0].pageX-pre_x == 0) && (event.touches[0].pageY-pre_y == 0)) {
+                return;
+            }
+
+            if(document.activeElement == document.getElementById( "entry" )) {
+                touch_Moved=0;
+                touch_Pressed=0;
+                return;
+            }
+            touchmove_delta = parseInt(Math.sqrt(((event.touches[0].pageX-pre_x) * (event.touches[0].pageX-pre_x)) + ((event.touches[0].pageY-pre_y)*(event.touches[0].pageY-pre_y))));
+
+            coordinate = (event.touches[0].pageX-pre_x).toString() + "," + (event.touches[0].pageY-pre_y).toString();
+
+            /*
+            if(touchmove_delta >= 5 && cur_touch_mode ==0){
+                cur_air_mode = 0;
+                mousepad.innerHTML ="air->touch";
+                cur_touch_mode = 1;
+                //  mousepad.innerHTML = click_time;
+                /*
+                if(window.DeviceMotionEvent && forceEnable_air == 0 ) {
+                    window.removeEventListener('devicemotion', gyro_event_listener);
+                    cur_air_mode = 0;
+                }
+
+            }
+            */
+
+            if (air_delta >= 5 || touchmove_delta >= 5){
+                air_disabled = 0;
+            }
+
+
+            if(window.DeviceMotionEvent && cur_mode == "b" ) {
+                window.removeEventListener('devicemotion', gyro_event_listener);
+                cur_air_mode = 0;
+            }
+           // if (cur_touch_mode == 1 && cur_air_mode == 0){
+            sendMouse_MoveEvent(coordinate);
+            //mousepad.innerHTML ="touch";
+            //}
+            pre_x = event.touches[0].pageX;
+            pre_y = event.touches[0].pageY;
+            //mousepad.innerHTML = "";
+        });
+
+        mousepad.addEventListener("touchend", function(event) {
+
+            event.preventDefault();
+            var coordinate, coordinate2;
+            var direction = 0, count = 0;
+            var click_end_time = new Date;
+            var click_time = click_end_time - click_start_time;
+
+            if(document.activeElement == document.getElementById( "entry" )){
+                sendFlushCurStr();
+                hide_keypad();
+                touch_Moved=0;
+                touch_Pressed=0;
+            }
+            else if(touch_Pressed==1 && click_time < 350){
+                    sendMouse_KeyEvent(MOUSE_CLICK);
+                    touch_Moved=0;
+                    touch_Pressed=0;
+            }
+            //mousepad.innerHTML ="";
+
+          //  mousepad.innerHTML = click_time;
+            if(window.DeviceMotionEvent && cur_mode == "c" ) {
+                window.removeEventListener('devicemotion', gyro_event_listener);
+                cur_air_mode = 0;
+            }
+            if(window.DeviceMotionEvent && cur_mode == "b" ) {
+                window.addEventListener('devicemotion', gyro_event_listener);
+                cur_air_mode = 1;
+            }
+            cur_touch_mode = 0;
+            air_disabled = 0;
+
+
+        });
+
+        mousescroll.addEventListener("touchstart", function(event) {
+
+            scroll_pre_x = event.touches[0].pageX;
+            scroll_pre_y = event.touches[0].pageY;
+            if(document.activeElement == document.getElementById( "entry" )) {
+                sendFlushCurStr();
+                document.getElementById( "entry" ).blur();
+               return;
+            }
+        });
+
+        mousescroll.addEventListener("touchmove", function(event) {
+
+            var coordinate;
+            event.preventDefault();
+
+            if(document.activeElement == document.getElementById( "entry" )) {
+                sendFlushCurStr();
+                document.getElementById( "entry" ).blur();
+                return;
+            }
+            if(scroll_pre_y == 0){
+                scroll_pre_x = event.touches[0].pageX;
+                scroll_pre_y = event.touches[0].pageY;
+                return;
+            }
+            if(((event.touches[0].pageX-scroll_pre_x == 0) && (event.touches[0].pageY-scroll_pre_y == 0))||(event.touches[0].pageY-scroll_pre_y == 0)){
+                return;
+            }
+            var coordinate = (event.touches[0].pageX-scroll_pre_x).toString()+","+(event.touches[0].pageY-scroll_pre_y).toString();
+                if (Math.abs((event.touches[0].pageY-scroll_pre_y)) >= 3){
+                      sendWheel_MoveEvent(coordinate);
+                   }
+            scroll_pre_x = event.touches[0].pageX;
+            scroll_pre_y = event.touches[0].pageY;
+        });
+
+        mousescroll.addEventListener("touchend", function(event) {
+            scroll_pre_y=0;
+        });
+
+        // Firefox, Google Chrome, Opera, Safari, Internet Explorer from version 9
+        $("#entry").on("input", function(event) {
+
+            window.clearInterval(flush_timeout);
+            var cur_timestamp = (new Date).getTime();
+            latest_typed_timestamp = cur_timestamp;
+
+            //To prevent multiline field in textarea when the enter key is typed and send commit string and enter key event
+            if(this.value.substring(this.value.length - 1) == "\n"){
+                this.value = this.value.substring(0, this.value.length - 1);
+                sendFlushCurStr();
+                entry.value = TMP_CHAR;
+                TMP_TIMESTAMP = cur_timestamp;
+                empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                sendKeyEvent(KEY_ENTER);
+                return false;
+            }
+            //To prevent removing the TMP_CHAR(first) character for the all time
+            if(TMP_CHAR.substring(0, TMP_CHAR.length - 1) == this.value){
+                entry.value = TMP_CHAR;
+                TMP_TIMESTAMP = cur_timestamp;
+                empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                return false;
+            }
+            //To prevent duplicating preedit string error for Note2, S3 web browser
+            if(pre_str == this.value){
+                return;
+            }
+            /*To prevent wrong preedit string error for Tizen phone, when next character is made in CJK
+              correct event must happen like [pre_str:가 for 간 -> preedit:간 ->  pre_str: 간 for 가나 -> preedit:가나 ]
+              wrong event happen from tizen  [pre_str:가 for 간 -> preedit:간 -> preedit:가나 -> pre_str: 가 for 가나 -> preedit: 가 -> pre_str: 간 for  가 ] */
+            if(pre_pre_str == this.value){
+                return;
+            }
+            pre_pre_str = pre_str;
+            pre_str = this.value;
+
+            //send commit string when the space key is typed
+            if(this.value.substring(this.value.length - 1) == " ") {
+                sendFlushCurStr();
+            }
+            else{
+                flush_timeout = window.setInterval("sendFlushCurStr()", FLUSH_TIMEOUT);
+                sendPreeditStr(this.value);
+            }
+        });
+
+        // Internet Explorer
+        $("#entry").on("propertychange", function(event) {
+
+            window.clearInterval(flush_timeout);
+            var cur_timestamp = (new Date).getTime();
+            latest_typed_timestamp = cur_timestamp;
+
+            //To prevent multiline field in textarea when the enter key is typed and send commit string and enter key event
+            if(this.value.substring(this.value.length - 1) == "\n"){
+                this.value = this.value.substring(0, this.value.length - 1);
+                sendFlushCurStr();
+                entry.value = TMP_CHAR;
+                TMP_TIMESTAMP = cur_timestamp;
+                empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                sendKeyEvent(KEY_ENTER);
+                return false;
+            }
+            //To prevent removing the TMP_CHAR(first) chartor for the all time
+            if(TMP_CHAR.substring(0, TMP_CHAR.length - 1) == this.value){
+                entry.value = TMP_CHAR;
+                TMP_TIMESTAMP = cur_timestamp;
+                empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                return false;
+            }
+            //To prevent duplicating preedit string error for Note2, S3 web browser
+            if(pre_str == this.value){
+                return;
+            }
+            /*To prevent wrong preedit string error for Tizen phone, when next character is made in CJK
+              correct event must happen like [pre_str:가 for 간 -> preedit:간 ->  pre_str: 간 for 가나 -> preedit:가나 ]
+              wrong event happen from tizen  [pre_str:가 for 간 -> preedit:간 -> preedit:가나 -> pre_str: 가 for 가나 -> preedit: 가 -> pre_str: 간 for  가 ] */
+            if(pre_pre_str == this.value){
+                return;
+            }
+            pre_pre_str = pre_str;
+            pre_str = this.value;
+
+            //send commit string when the space key is typed
+            if(this.value.substring(this.value.length - 1) == " ") {
+                sendFlushCurStr();
+            }
+            else{
+                flush_timeout = window.setInterval("sendFlushCurStr()", FLUSH_TIMEOUT);
+                sendPreeditStr(this.value);
+            }
+        });
+
+        $("#entry").on("keydown", function(event) {
+
+            //To prevent Ctrl + C event (keycode 17:Ctrl, 67:C)
+            if(event.keyCode == 17 || event.keyCode == 67) return;
+
+            //To enable back space key continually, even there is no charactor for Note2, S3 web browser
+            if(this.value == TMP_CHAR && event.keyCode == KEY_BACKSPACE) {
+                sendKeyEvent(event.keyCode);
+
+            //To remove the last preedit charator, when tap the backspace key
+            }else if(this.value.length > TMP_CHAR.length && TMP_CHAR == this.value.substring(0, this.value.length - 1) && event.keyCode == KEY_BACKSPACE){
+                sendKeyEvent(event.keyCode);
+            }
+        });
+    });
+
+</script>
+<!-- page 1 -->
+    <!-- TV MODE -->
+    <div id="tvmode" data-role="page" data-fullscreen="true" class ="visible">
+        <table class="tb1" >
+        <!-- Header -->
+            <tr>
+                <td class="t_cell t_cell_header cell_width33 cell_height10 logo"></td>
+                <td class="t_cell cell_width77" colspan="2">
+                    <table  class="tb1">
+                        <tr>
+                            <td id ="reset_bt" class="t_cell reset_bt" ontouchstart="javascript:sendevent(this.id)"></td>
+                            <td id ="type_a" class="t_cell type_a" ontouchstart="javascript:sendevent(this.id)"></td>
+                            <td id ="type_b" class="t_cell type_b" ontouchstart="javascript:sendevent(this.id)"></td>
+                            <td id ="type_c" class="t_cell type_c" ontouchstart="javascript:sendevent(this.id)"></td>
+                        </tr>
+                    </table>
+                </td>
+            </tr>
+            <tr>
+                <td  class="t_cell t_cell_inner" colspan="3">
+                        <!-- Content -->
+<!--                         <table class="tv_table"  id="mousepad2" > -->
+                        <table class="tv_table" >
+
+                                <!-- Content_space-top
+                                <tr>
+                                    <td class="t_cell cell_height5"></td>
+                                </tr> -->
+                                <tr>
+                                    <td>
+                                    <!-- Content_area -->
+                                        <table class="tv_inner_table">
+                                            <tr>
+                                                <td class="t_cell cell_height18" colspan="2">&nbsp;</td>
+                                                <td id="bt_power" class="t_cell power cell_height18" ontouchstart="sendevent(this.id)"></td>
+                                            </tr>
+                                            <tr>
+                                                <td id="bt_volume_up" class="t_cell volume_up cell_width33" rowspan="2" ontouchstart="sendevent(this.id)"></td>
+                                                <td id="bt_channel_up" class="t_cell channel_up cell_width33" rowspan="2" ontouchstart="sendevent(this.id)"></td>
+                                                <td id="bt_switchmode" class="t_cell source cell_height13 cell_width33" ontouchstart="sendevent(this.id)"></td>
+                                            </tr>
+                                            <tr>
+                                                <td class="t_cell cell_height13"></td>
+                                            </tr>
+                                            <tr>
+                                                <td  class="t_cell volume t_cell_text"></td>
+                                                <td  class="t_cell channel t_cell_text"></td>
+                                                <td id="bt_menu" class="t_cell menu cell_height13" ontouchstart="sendevent(this.id)"></td>
+                                            </tr>
+                                            <tr>
+                                                <td id="bt_volume_down" class="t_cell volume_down" rowspan="2" ontouchstart="sendevent(this.id)"></td>
+                                                <td id="bt_channel_down" class="t_cell channel_down" rowspan="2" ontouchstart="sendevent(this.id)"></td>
+                                                <td id="bt_info" class="t_cell info cell_height13" ontouchstart="sendevent(this.id)"></td>
+                                            </tr>
+                                            <tr>
+                                                <td id="bt_select" class="t_cell return cell_height13" ontouchstart="sendevent(this.id)"></td>
+                                            </tr>
+                                            <tr>
+                                                <td id="bt_mute" class="t_cell mute" ontouchstart="sendevent(this.id)"></td>
+                                                <td id="bt_channel_list" class="t_cell chlist" ontouchstart="sendevent(this.id)"></td>
+                                                <td id="bt_exit" class="t_cell exit cell_height13" ontouchstart="sendevent(this.id)"></td>
+                                            </tr>
+                                        </table>
+                                    </td>
+                                </tr>
+                                <!-- Content_space-bottom -->
+                                <tr>
+                                    <td id = "air_click_area" class="t_cell cell_height20 cell_gray_font" ontouchstart="sendevent(this.id)"></td>
+                                </tr>
+                        </table>
+                </td>
+            </tr>
+        <!-- Footer -->
+            <tr>
+                <td id="sys_btn_home" class="t_cell_footer apps cell_width33" ontouchstart="javascript:sendevent(this.id)"></td>
+                <td id="sys_btn_modechange" class="t_cell_footer modeswitcher_to_mouse cell_width33" ontouchstart="javascript:inputModeChanged('tvmode','keymode')" ></td>
+                <td id="sys_btn_back" class="t_cell_footer back cell_width33" ontouchstart="sendevent(this.id)"></td>
+            </tr>
+        </table>
+    </div>
+
+<!-- end page 1 -->
+
+<!-- page 2 -->
+    <!-- MOUSE MODE -->
+    <div id="keymode"  data-role="page" data-fullscreen="true" class ="invisible">
+       <table class="tb1" >
+        <!-- Header -->
+            <tr>
+                <td class="t_cell t_cell_header cell_width33 cell_height10 logo" ontouchstart="home_icon_add('Tizen_Input')"></td>
+                <td class="t_cell cell_width77"  colspan="2">
+                    <table  class="tb1">
+                        <tr>
+                            <td id ="reset_bt2" class="t_cell reset_bt" ontouchstart="javascript:sendevent(this.id)"></td>
+                            <td id ="type_a2" class="t_cell type_a" ontouchstart="javascript:sendevent(this.id)"></td>
+                            <td id ="type_b2" class="t_cell type_b" ontouchstart="javascript:sendevent(this.id)"></td>
+                            <td id ="type_c2" class="t_cell type_c" ontouchstart="javascript:sendevent(this.id)"></td>
+                        </tr>
+                    </table>
+                </td>
+            </tr>
+            <tr>
+                <td  class="t_cell" colspan="3">
+                        <!-- Content -->
+                        <table class="tb1">
+                                <!-- Content_space-top -->
+                                <tr>
+                                    <td class="t_cell cell_height13 t_cell_vertical_align_bottom" >
+                                        <textarea name="entry" wrap="off" rows="1" id="entry"></textarea>
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <td>
+                                        <table class="tb1_thin_border mouse_panel ">
+                                            <tr>
+                                                <!-- Content_area -->
+                                                <td id="mousepad" class="t_cell t_cell_mousepad t_cell_thin_border"> </td>
+                                                <td id="mousescroll" class="t_cell cell_width15 t_cell_thin_border"> </td>
+                                            </tr>
+                                        </table>
+                                    </td>
+                                </tr>
+                                <!-- Content_space-bottom -->
+                        </table>
+                </td>
+            </tr>
+        <!-- Footer -->
+            <tr>
+                <td id="sys_btn_home2" class="t_cell_footer apps cell_width33" ontouchstart="javascript:sendevent(this.id)"></td>
+                <td id="sys_btn_modechange2" class="t_cell_footer modeswitcher_to_tv cell_width33" ontouchstart="javascript:inputModeChanged('keymode','tvmode')" ></td>
+                <td id="sys_btn_back2" class="cell_width16 t_cell_footer back cell_width33" ontouchstart="sendevent(this.id)"></td>
+            </tr>
+
+        </table>
+    </div>
+
+<!-- end page 2 -->
+<iframe id="home_icon_add_frame" style="display:none;width:0px;height:0px;"></iframe>
+
+</body>
+</html>
+
+
diff --git a/ism/data/remote-input/tv2.htm b/ism/data/remote-input/tv2.htm
new file mode 100644 (file)
index 0000000..d6fea03
--- /dev/null
@@ -0,0 +1,1028 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Tizen Remote Input</title>
+    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
+    <link rel="icon" href="/favicon.ico" type="image/x-icon">
+    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"/>
+     <script src="ajaxCaller.js" type="text/javascript"> </script>
+    <link rel="stylesheet" href="remote_input.css" type="text/css"/>
+     <script src="util.js" type="text/javascript"> </script>
+    <script src="jquery-2.0.2.min.js"></script>
+</head>
+
+<body id="by">
+<script>
+    // Key definition
+    var KEY_BACKSPACE = 8;
+    var KEY_ENTER = 13;
+    var KEY_SPACE = 32;
+    var KEY_ESCAPE = 27;
+    var MODE_CHANGE_BOUNDARY_VALUE = 15;
+
+    var KEY_MENU = 10001;
+    var KEY_HOME = 10002;
+    var KEY_BACK = 10003;
+
+    var MOUSE_CLICK = 555;
+
+    // Callback incremental index
+    var id_num = 0;
+
+    var TV_KEY_POWER = 124;
+    var TV_KEY_SWITCHMODE = 235;
+    var TV_KEY_MENU = 179;
+    var TV_KEY_UP = 111;
+    var TV_KEY_INFO = 69;
+    var TV_KEY_LEFT = 113;
+    var TV_KEY_SELECT = 36;
+    var TV_KEY_RIGHT = 114;
+    var TV_KEY_BACK = 166;
+    var TV_KEY_DOWN = 116;
+    var TV_KEY_EXIT = 182;
+    var TV_KEY_VOL_UP = 123;
+    var TV_KEY_MUTE = 121;
+    var TV_KEY_CHAN_UP = 112;
+    var TV_KEY_VOL_DOWN = 122;
+    var TV_KEY_CHAN_LIST = 68;
+    var TV_KEY_CHAN_DOWN = 117;
+
+    var multi_touched = 0;
+    var touch_started_x = 0;
+    var touch_started_y = 0;
+    var touch_contentarea_Pressed=0;
+    var touch_contentarea_Moved=0;
+    var touch_contentarea_pre_x=0;
+    var touch_contentarea_pre_y=0;
+
+    // Mouse prior coordinate, click flag
+    var pre_x = 0;
+    var pre_y = 0;
+    var touch_Pressed=0;
+    var touch_Moved=0;
+    var scroll_pre_x = 0;
+    var scroll_pre_y = 0;
+
+    // Callback incremental index
+    var id_num = 0;
+    var count = 0;
+
+    // Flush timer
+    var flush_timeout;
+    var cal_flush_timeout;
+    var CAL_FLUSH_TIMEOUT = 3000;
+    var FLUSH_TIMEOUT = 3000;
+    var FLUSH_ENTER_TIMEOUT = 50;
+    var click_start_time = 0;
+    //var flick_time = 0;
+    // Backup pre string
+    var pre_str = "";
+    var pre_pre_str = "";
+    var TMP_CHAR = " ";
+    var TMP_TIMESTAMP = 0;
+    var EMPTY_CHECKER_TIMEOUT = 10;
+    var latest_typed_timestamp = 0;
+    var cur_air_mode = 0;
+    var cur_reset_mode = 0;
+    var cur_touch_mode = 0;
+    var forceEnable_air = 0;
+    var touchmove_delta;
+    var air_delta;
+    var gry_basic_a = -0.043;
+    var gry_basic_b = 0.005;
+    var gry_basic_g = -0.002;
+    var gry_sum_a = 0;
+    var gry_sum_b = 0;
+    var gry_sum_g = 0;
+    var gry_sum_count = 0;
+    var progress = ["",".","..","...","...."];
+    var progress_count=0;
+    var cur_mode = 0;
+
+
+    function cbAjax(text, headers, callingContext){
+        id_num++;
+        return true;
+    }
+    function sendKeyEvent(keyCode){
+        var bodyVars = {id:id_num, key:'event', value:keyCode}
+        ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+    }
+    function sendMouse_KeyEvent(mouseCode) {
+        var bodyVars = {id:id_num, key:'mouse_key', value:mouseCode}
+        ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+    }
+
+    function sendMouse_MoveEvent(coordinate) {
+        var bodyVars = {id:id_num, key:'mouse_move', value:coordinate}
+        ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+    }
+
+    function sendWheel_MoveEvent(coordinate) {
+        var bodyVars = {id:id_num, key:'wheel_move', value:coordinate}
+        ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+    }
+    function sendAir_Input(coordinate) {
+        var bodyVars = {id:id_num, key:'air_input', value:coordinate}
+        ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+    }
+
+
+    function removeTmpChar(str){
+        if (TMP_CHAR.length < 1) return;
+        if (str.length >= TMP_CHAR.length) {
+            str = str.substring (TMP_CHAR.length);
+        }
+        return str;
+    }
+    function sendPreeditStr(str){
+        str = removeTmpChar(str);
+        var bodyVars = {id:id_num, key:'preedit', value:str}
+        ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+    }
+
+    function sendCommitStr(str){
+        str = removeTmpChar(str);
+        var bodyVars = {id:id_num, key:'commit', value:str}
+        ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+    }
+    function inputModeChanged(from, to) {
+            event.preventDefault();
+            var from_div = document.getElementById(from);
+            from_div.style.display = "none";
+            var to_div = document.getElementById(to);
+            to_div.style.display = "block";
+        }
+    function sendFlushCurStr(){
+        var entry = document.getElementById( "entry" );
+        var str = entry.value;
+        if(str.length > 0){
+            entry.value = TMP_CHAR;
+            pre_str = "";
+            pre_pre_str = "";
+            sendCommitStr (str)
+            window.clearInterval(flush_timeout);
+        }
+    }
+    function show_keypad(){
+        var entry = document.getElementById( "entry" );
+        entry.focus();
+        Android.showKeyboard();
+    }
+    function hide_keypad(){
+        var entry = document.getElementById( "entry" );
+        entry.blur();
+        Android.hideKeyboard();
+        setTimeout(function(){
+            window.scrollTo(0,1);
+            var entry = document.getElementById( "entry" );
+            entry.focus();
+           entry.value = TMP_CHAR;
+        }, 300);
+    }
+    function imageModeChanged(image, object) {
+        //event.preventDefault();
+        var bt = document.getElementById(object);
+        bt.style.background = "url(imgs/" + image + ")";
+        bt.style.backgroundRepeat = "no-repeat";
+        bt.style.backgroundSize = "auto 100%";
+        bt.style.backgroundPosition = "center top";
+        bt = document.getElementById((object+"2"));
+        bt.style.background = "url(imgs/" + image + ")";
+        bt.style.backgroundRepeat = "no-repeat";
+        bt.style.backgroundSize = "auto 100%";
+        bt.style.backgroundPosition = "center top";
+    }
+
+    function home_icon_add(title){
+        var home_page_uri = "http://moakey.com/tizen_tv/list.php";
+        var home_icon_uri = "http://" + document.domain +":8182/shortcut_icon.png";
+
+        var naver_UrlScheme= "intent://addshortcut?url="+home_page_uri+"%3F"+"&icon="+home_icon_uri+"&title="+title+"&oq="+title+"&serviceCode=nstore&version=7#Intent;scheme=naversearchapp;action=android.intent.action.VIEW;category=android.intent.category.BROWSABLE;package=com.nhn.android.search;end";
+        var UserAgent = navigator.userAgent.toLowerCase();
+
+        if(UserAgent.indexOf("iphone") == -1 && UserAgent.indexOf("ipad") == -1 && UserAgent.indexOf("tizen") == -1) {
+            alert('Add the ' + title +'shortCut icon');
+            var home_icon_add_frame=document.getElementById("home_icon_add_frame");
+                home_icon_add_frame.src=naver_UrlScheme;
+        }else{
+            alert("Not surpport in iOS, Tizen ");
+        }
+    }
+    function make_calibration(gry_a, gry_b, gry_g) {
+        gry_sum_a +=gry_a;
+        gry_sum_b +=gry_b;
+        gry_sum_g +=gry_g;
+        gry_sum_count++;
+        gry_basic_a = (gry_sum_a/gry_sum_count).toFixed(3);
+        gry_basic_b = (gry_sum_b/gry_sum_count).toFixed(3);
+        gry_basic_g = (gry_sum_g/gry_sum_count).toFixed(3);
+        if (gry_sum_count%4==0){
+            air_click_area.innerHTML="Calibrating" + progress[progress_count];
+            progress_count++;
+            if(progress_count >= 5){
+                progress_count = 0;
+            }
+        }
+       // air_click_area.innerHTML="a:"+gry_basic_a + " ,b: " + gry_basic_b + ", g:" + gry_basic_g;
+    }
+
+    function get_gyro_calibration(event) {
+        event.preventDefault();
+        var r = event.rotationRate;
+        if(r!=null) {
+            make_calibration(r.alpha, r.beta, r.gamma);
+        }
+    }
+
+    function gyro_event_listener(event) {
+
+        event.preventDefault();
+        var x = event.accelerationIncludingGravity.x;
+        var y = event.accelerationIncludingGravity.y;
+        var z = event.accelerationIncludingGravity.z;
+        var r = event.rotationRate;
+        var data;
+        /*
+        gry_basic_a = x;
+        gry_basic_b = y;
+        gry_basic_g = z;
+        */
+
+        if(x!=null || y!=null || z!=null || r!=null) {
+            var gyro_a = r.alpha - gry_basic_a;
+            var gyro_b = r.beta - gry_basic_b;
+            var gyro_g = r.gamma - gry_basic_g;
+
+            var UserAgent = navigator.userAgent.toLowerCase();
+            if(UserAgent.indexOf("android") != -1 ) {
+                gyro_a *=100;
+                gyro_b *=100;
+                gyro_g *=100;
+            }
+            /*
+            //gry_basic_a = r.alpha;
+            var xz_force = Math.sqrt(x * x + y * y);
+            var x_sin = x / xz_force;
+            var z_sin = y / xz_force;
+            //air_click_area.innerHTML = parseInt(x*100) +", y:"+ parseInt(y*100) +", z:"+ parseInt(z*100) +", a:"+ parseInt(gyro_a*100) +", b:"+ parseInt(gyro_b*100) +", g:"+ parseInt(gyro_g*100);
+
+
+            var x_offset = (- x_sin * gyro_a - z_sin * gyro_b);
+            var y_offset = (x_sin * gyro_b - z_sin * gyro_a);
+           */
+            //gry_basic_a = r.alpha;
+            var xz_force = Math.sqrt(x * x + z * z);
+            var x_sin = x / xz_force;
+            var z_sin = z / xz_force;
+            //air_click_area.innerHTML = parseInt(x*100) +", y:"+ parseInt(y*100) +", z:"+ parseInt(z*100) +", a:"+ parseInt(gyro_a*100) +", b:"+ parseInt(gyro_b*100) +", g:"+ parseInt(gyro_g*100);
+
+
+            var x_offset = (- x_sin * gyro_a - z_sin * gyro_g);
+            var y_offset = (x_sin * gyro_g - z_sin * gyro_a);
+
+
+            air_delta = parseInt(Math.sqrt(x_offset*x_offset + y_offset*y_offset));
+            data = parseInt(x_offset).toString() + "," + parseInt(y_offset).toString();
+          /*  if (air_delta <= 3){
+                return;
+            }
+          */
+           if(UserAgent.indexOf("iphone") != -1){
+                data = parseInt(x_offset*(-1)).toString() + "," + parseInt(y_offset*(-1)).toString();
+            }
+           // mousepad.innerHTML = "x:"+parseInt(x_offset)+"y:"+parseInt(y_offset)+"d:"+air_delta;
+            //mousepad.innerHTML = "air";
+            sendAir_Input(data);
+/*
+           if (forceEnable_air == 1 ){
+                sendAir_Input(data);
+                cur_air_mode = 1;
+            } else {
+                    if (cur_air_mode == 0 && air_delta >= 15){
+                        cur_air_mode = 1;
+                        mousepad.innerHTML = "touch->air";
+                        cur_touch_mode = 0;
+                    }
+                    if (cur_touch_mode == 0 && cur_air_mode == 1){
+                        mousepad.innerHTML = "air";
+                        sendAir_Input(data);
+                        //mousepad.innerHTML = data+" t:"+touchmove_delta+" a:" + air_delta;
+                    }
+            }
+            */
+        }
+    }
+    function Enable_calibration(checker){
+        if (checker == true){
+            imageModeChanged("reset_bt.png","reset_bt");
+            cur_reset_mode = 1;
+            window.addEventListener('devicemotion', get_gyro_calibration);
+        }
+        else{
+            imageModeChanged("reset_bt_pressed.png","reset_bt");
+            window.removeEventListener('devicemotion', get_gyro_calibration);
+            cur_reset_mode = 0;
+            air_click_area.innerHTML=""
+        }
+    }
+
+    function DisableMode(mode)
+    {
+        cur_mode = 0;
+
+        if (mode == "a")
+        {
+            imageModeChanged("a_bt_pressed.png","type_a");
+            if(window.DeviceMotionEvent) {
+                window.removeEventListener('devicemotion', gyro_event_listener);
+                //forceEnable_air=0;
+                air_click_area.innerHTML="";
+
+            }
+        }
+        else if(mode =="b")
+        {
+            imageModeChanged("b_bt_pressed.png","type_b");
+            if(window.DeviceMotionEvent) {
+                window.removeEventListener('devicemotion', gyro_event_listener);
+                //forceEnable_air=0;
+                air_click_area.innerHTML="";
+            }
+        }
+        else if (mode =="c")
+        {
+            imageModeChanged("c_bt_pressed.png","type_c");
+        }
+    }
+    function EnableMode(mode)
+    {
+        cur_mode = mode;
+
+        if (mode == "a")
+        {
+            imageModeChanged("a_bt.png","type_a");
+            imageModeChanged("b_bt_pressed.png","type_b");
+            imageModeChanged("c_bt_pressed.png","type_c");
+            //cur_air_mode = 1;
+            // Check for support for DeviceMotion events
+              if(window.DeviceMotionEvent) {
+                  window.addEventListener('devicemotion', gyro_event_listener);
+                  forceEnable_air = 1;
+                  air_click_area.innerHTML="click";
+              }
+        }
+        else if(mode =="b")
+        {
+            imageModeChanged("b_bt.png","type_b");
+            imageModeChanged("a_bt_pressed.png","type_a");
+            imageModeChanged("c_bt_pressed.png","type_c");
+            if(window.DeviceMotionEvent) {
+                window.addEventListener('devicemotion', gyro_event_listener);
+                forceEnable_air = 1;
+                air_click_area.innerHTML="click";
+
+            }
+        }
+        else if (mode =="c")
+        {
+            imageModeChanged("c_bt.png","type_c");
+            imageModeChanged("a_bt_pressed.png","type_a");
+            imageModeChanged("b_bt_pressed.png","type_b");
+            if(window.DeviceMotionEvent) {
+                window.removeEventListener('devicemotion', gyro_event_listener);
+                forceEnable_air = 0;
+            }
+        }
+    }
+
+    function EnableAirinput(checker){
+        if (checker == true){
+            imageModeChanged("air_bt.png","air_input_mode");
+            cur_air_mode = 1;
+          // Check for support for DeviceMotion events
+            if(window.DeviceMotionEvent) {
+                window.addEventListener('devicemotion', gyro_event_listener);
+                forceEnable_air = 1;
+            }
+        }
+        else{
+            imageModeChanged("air_bt_pressed.png","air_input_mode");
+            cur_air_mode = 0;
+            if(window.DeviceMotionEvent) {
+                window.removeEventListener('devicemotion', gyro_event_listener);
+                forceEnable_air=0;
+            }
+        }
+    }
+
+    function sendevent(form){
+        //alert(form);
+        if (form == "sys_btn_modechange") {
+            inputModeChanged("tvmode", "keymode");
+        }
+        else if (form == "sys_btn_home"){
+            sendKeyEvent(KEY_HOME);
+        }
+        else if (form == "sys_btn_back"){
+            sendKeyEvent(KEY_BACK);
+        }
+        else if (form == "sys_btn_modechange2"){
+            inputModeChanged("keymode", "tvmode");
+        }
+        else if (form == "sys_btn_home2"){
+            sendKeyEvent(KEY_HOME);
+        }
+        else if (form == "sys_btn_back2"){
+            sendKeyEvent(KEY_BACK);
+        }
+        else if (form == "bt_power"){
+            sendKeyEvent(TV_KEY_POWER);
+        }
+        else if (form == "bt_switchmode"){
+            sendKeyEvent(TV_KEY_SWITCHMODE);
+        }
+        else if (form == "bt_menu"){
+            sendKeyEvent(KEY_MENU);
+        }
+        else if (form == "bt_info"){
+            sendKeyEvent(TV_KEY_INFO);
+        }
+        else if (form == "bt_select"){
+            sendKeyEvent(TV_KEY_SELECT);
+        }
+        else if (form == "bt_back"){
+            sendKeyEvent(TV_KEY_BACK);
+        }
+        else if (form == "bt_exit"){
+            sendKeyEvent(TV_KEY_EXIT);
+        }
+        else if (form == "bt_volume_up"){
+            sendKeyEvent(TV_KEY_VOL_UP);
+        }
+        else if (form == "bt_mute"){
+            sendKeyEvent(TV_KEY_MUTE);
+        }
+        else if (form == "bt_channel_up"){
+            sendKeyEvent(TV_KEY_CHAN_UP);
+        }
+        else if (form == "bt_volume_down"){
+            sendKeyEvent(TV_KEY_VOL_DOWN);
+        }
+        else if (form == "bt_channel_list"){
+            sendKeyEvent(TV_KEY_CHAN_LIST);
+        }
+        else if (form == "bt_channel_down"){
+            sendKeyEvent(TV_KEY_CHAN_DOWN);
+        }
+        else if (form == "type_a" || form == "type_b" || form == "type_c"||form == "type_a2" || form == "type_b2" || form == "type_c2"){
+            if (cur_mode != form.charAt(5))
+                {
+                EnableMode(form.charAt(5));
+                }
+            else
+                {
+                DisableMode(form.charAt(5));
+                }
+        }
+        else if (form == "air_input_mode" || form == "air_input_mode2"){
+            if (cur_air_mode == 0 ) {
+                EnableAirinput(true);
+                air_click_area.innerHTML="click";
+            }
+            else{
+                EnableAirinput(false);
+                air_click_area.innerHTML="";
+            }
+        }
+        else if (form == "reset_bt" || form == "reset_bt2"){
+                Enable_calibration(true);
+                cal_flush_timeout = window.setTimeout(function(){
+                    alert("Finished Gyro Calibration.");
+                    Enable_calibration(false);}, CAL_FLUSH_TIMEOUT);
+        }
+        else if (form == "air_click_area"){
+            if (cur_mode == "a" ||cur_mode == "b"){
+            sendMouse_KeyEvent(MOUSE_CLICK);
+            }
+        }
+
+    }
+    function clearLog(){
+        log_box.value = "";log_box.value +"\n"+ str;
+    }
+    function reArrangeCursorPos(){
+        if(latest_typed_timestamp == TMP_TIMESTAMP){
+            entry.setSelectionRange(TMP_CHAR.length,TMP_CHAR.length);
+        }
+        window.clearInterval(empty_checker_timeout);
+    }
+
+    $(document).ready(function()    {
+
+       //set the document size
+      var obj = document.getElementById('by');
+      obj.style.height =  $(document).height() + "px";
+
+
+      setTimeout(function(){
+        window.scrollTo(0, 1);
+
+        var entry = document.getElementById( "entry" );
+        entry.focus();
+        entry.value = TMP_CHAR;
+
+        }, 300);
+
+
+
+    /*
+        mousepad2.addEventListener("touchstart", function(event) {
+            //hideTheKeyBoard();
+            flick_start_time = new Date;
+            pre_x = event.touches[0].pageX;
+            pre_y = event.touches[0].pageY;
+//                scroll_pre_x = event.touches[0].pageX;
+//                scroll_pre_y = event.touches[0].pageY;
+            touch_Pressed=1;
+            touch_Moved=0;
+
+            if(document.activeElement == document.getElementById( "entry" )) {
+                sendFlushCurStr();
+                document.activeElement.blur();
+            }
+        });
+
+        mousepad2.addEventListener("touchmove", function(event) {
+
+            var coordinate;
+            touch_Moved=1;
+            event.preventDefault();
+            if((pre_x==0) && (pre_y==0)) {
+                pre_x = event.touches[0].pageX;
+                pre_y = event.touches[0].pageY;
+                return;
+            }
+            if((event.touches[0].pageX-pre_x == 0) && (event.touches[0].pageY-pre_y == 0)) {
+                return;
+            }
+
+            coordinate = (event.touches[0].pageX-pre_x).toString() + "," + (event.touches[0].pageY-pre_y).toString();
+            sendMouse_MoveEvent(coordinate);
+            pre_x = event.touches[0].pageX;
+            pre_y = event.touches[0].pageY;
+        });
+
+        mousepad2.addEventListener("touchend", function(event) {
+
+            var coordinate, coordinate2;
+            var direction = 0, count = 0;
+//                var flick_end_time = new Date;
+//                var flick_time = flick_end_time - flick_start_time;
+
+            if(touch_Moved==0&&touch_Pressed==1){
+                if(document.activeElement == document.getElementById( "entry" )){
+                    sendFlushCurStr();
+                }
+                else{
+                    sendMouse_KeyEvent(MOUSE_CLICK);
+                }
+            }
+             if(document.activeElement == document.getElementById( "entry" )){
+                    sendFlushCurStr();
+                    touch_Moved=0;
+                    touch_Pressed=0;
+                }
+              else {
+                    //sendMouse_KeyEvent(MOUSE_RELEASED);
+                    touch_Moved=0;
+                    touch_Pressed=0;
+              }
+
+        });
+*/
+/*
+        air_click_area.addEventListener("touchstart", function(event) {
+            event.preventDefault();
+            click_start_time = new Date;
+            touch_Pressed=1;
+        });
+
+        air_click_area.addEventListener("touchend", function(event) {
+            event.preventDefault();
+            var coordinate, coordinate2;
+            var direction = 0, count = 0;
+            var click_end_time = new Date;
+            var click_time = click_end_time - click_start_time;
+
+            if(touch_Pressed==1 && click_time < 350){
+                    sendMouse_KeyEvent(MOUSE_CLICK);
+                    touch_Pressed=0;
+            }
+
+        });
+        */
+        mousepad.addEventListener("touchstart", function(event) {
+
+            event.preventDefault();
+            //hideTheKeyBoard();
+            click_start_time = new Date;
+            pre_x = event.touches[0].pageX;
+            pre_y = event.touches[0].pageY;
+            touch_Pressed=1;
+            touch_Moved=0;
+
+            if(document.activeElement == document.getElementById( "entry" )) {
+                sendFlushCurStr();
+                touch_Pressed=0;
+                return;
+            }
+
+            if(window.DeviceMotionEvent && cur_mode == "c") {
+                window.addEventListener('devicemotion', gyro_event_listener);
+                cur_air_mode = 1;
+            }
+
+        //mousepad.innerHTML = "";
+        });
+
+        mousepad.addEventListener("touchmove", function(event) {
+
+            event.preventDefault();
+            var coordinate;
+            touch_Moved=1;
+            event.preventDefault();
+            if((pre_x==0) && (pre_y==0)) {
+                pre_x = event.touches[0].pageX;
+                pre_y = event.touches[0].pageY;
+                return;
+            }
+            if((event.touches[0].pageX-pre_x == 0) && (event.touches[0].pageY-pre_y == 0)) {
+                return;
+            }
+
+            if(document.activeElement == document.getElementById( "entry" )) {
+                touch_Moved=0;
+                touch_Pressed=0;
+                return;
+            }
+            touchmove_delta = parseInt(Math.sqrt(((event.touches[0].pageX-pre_x) * (event.touches[0].pageX-pre_x)) + ((event.touches[0].pageY-pre_y)*(event.touches[0].pageY-pre_y))));
+
+            coordinate = (event.touches[0].pageX-pre_x).toString() + "," + (event.touches[0].pageY-pre_y).toString();
+
+            /*
+            if(touchmove_delta >= 5 && cur_touch_mode ==0){
+                cur_air_mode = 0;
+                mousepad.innerHTML ="air->touch";
+                cur_touch_mode = 1;
+                //  mousepad.innerHTML = click_time;
+                /*
+                if(window.DeviceMotionEvent && forceEnable_air == 0 ) {
+                    window.removeEventListener('devicemotion', gyro_event_listener);
+                    cur_air_mode = 0;
+                }
+
+            }
+            */
+            if(window.DeviceMotionEvent && cur_mode == "a" ) {
+                window.removeEventListener('devicemotion', gyro_event_listener);
+                cur_air_mode = 0;
+            }
+           // if (cur_touch_mode == 1 && cur_air_mode == 0){
+            sendMouse_MoveEvent(coordinate);
+            //mousepad.innerHTML ="touch";
+            //}
+            pre_x = event.touches[0].pageX;
+            pre_y = event.touches[0].pageY;
+            //mousepad.innerHTML = "";
+        });
+
+        mousepad.addEventListener("touchend", function(event) {
+
+            event.preventDefault();
+            var coordinate, coordinate2;
+            var direction = 0, count = 0;
+            var click_end_time = new Date;
+            var click_time = click_end_time - click_start_time;
+
+            if(document.activeElement == document.getElementById( "entry" )){
+                sendFlushCurStr();
+                hide_keypad();
+                touch_Moved=0;
+                touch_Pressed=0;
+            }
+            else if(touch_Pressed==1 && click_time < 350){
+                    sendMouse_KeyEvent(MOUSE_CLICK);
+                    touch_Moved=0;
+                    touch_Pressed=0;
+            }
+            //mousepad.innerHTML ="";
+
+          //  mousepad.innerHTML = click_time;
+            if(window.DeviceMotionEvent && cur_mode == "c" ) {
+                window.removeEventListener('devicemotion', gyro_event_listener);
+                cur_air_mode = 0;
+            }
+            if(window.DeviceMotionEvent && cur_mode == "a" ) {
+                window.addEventListener('devicemotion', gyro_event_listener);
+                cur_air_mode = 1;
+            }
+            cur_touch_mode = 0;
+
+
+        });
+
+        mousescroll.addEventListener("touchstart", function(event) {
+
+            scroll_pre_x = event.touches[0].pageX;
+            scroll_pre_y = event.touches[0].pageY;
+            if(document.activeElement == document.getElementById( "entry" )) {
+                sendFlushCurStr();
+                document.getElementById( "entry" ).blur();
+               return;
+            }
+        });
+
+        mousescroll.addEventListener("touchmove", function(event) {
+
+            var coordinate;
+            event.preventDefault();
+
+            if(document.activeElement == document.getElementById( "entry" )) {
+                sendFlushCurStr();
+                document.getElementById( "entry" ).blur();
+                return;
+            }
+            if(scroll_pre_y == 0){
+                scroll_pre_x = event.touches[0].pageX;
+                scroll_pre_y = event.touches[0].pageY;
+                return;
+            }
+            if(((event.touches[0].pageX-scroll_pre_x == 0) && (event.touches[0].pageY-scroll_pre_y == 0))||(event.touches[0].pageY-scroll_pre_y == 0)){
+                return;
+            }
+            var coordinate = (event.touches[0].pageX-scroll_pre_x).toString()+","+(event.touches[0].pageY-scroll_pre_y).toString();
+                if (Math.abs((event.touches[0].pageY-scroll_pre_y)) >= 3){
+                      sendWheel_MoveEvent(coordinate);
+                   }
+            scroll_pre_x = event.touches[0].pageX;
+            scroll_pre_y = event.touches[0].pageY;
+        });
+
+        mousescroll.addEventListener("touchend", function(event) {
+            scroll_pre_y=0;
+        });
+
+        // Firefox, Google Chrome, Opera, Safari, Internet Explorer from version 9
+        $("#entry").on("input", function(event) {
+
+            window.clearInterval(flush_timeout);
+            var cur_timestamp = (new Date).getTime();
+            latest_typed_timestamp = cur_timestamp;
+
+            //To prevent multiline field in textarea when the enter key is typed and send commit string and enter key event
+            if(this.value.substring(this.value.length - 1) == "\n"){
+                this.value = this.value.substring(0, this.value.length - 1);
+                sendFlushCurStr();
+                entry.value = TMP_CHAR;
+                TMP_TIMESTAMP = cur_timestamp;
+                empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                sendKeyEvent(KEY_ENTER);
+                return false;
+            }
+            //To prevent removing the TMP_CHAR(first) character for the all time
+            if(TMP_CHAR.substring(0, TMP_CHAR.length - 1) == this.value){
+                entry.value = TMP_CHAR;
+                TMP_TIMESTAMP = cur_timestamp;
+                empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                return false;
+            }
+            //To prevent duplicating preedit string error for Note2, S3 web browser
+            if(pre_str == this.value){
+                return;
+            }
+            /*To prevent wrong preedit string error for Tizen phone, when next character is made in CJK
+              correct event must happen like [pre_str:가 for 간 -> preedit:간 ->  pre_str: 간 for 가나 -> preedit:가나 ]
+              wrong event happen from tizen  [pre_str:가 for 간 -> preedit:간 -> preedit:가나 -> pre_str: 가 for 가나 -> preedit: 가 -> pre_str: 간 for  가 ] */
+            if(pre_pre_str == this.value){
+                return;
+            }
+            pre_pre_str = pre_str;
+            pre_str = this.value;
+
+            //send commit string when the space key is typed
+            if(this.value.substring(this.value.length - 1) == " ") {
+                sendFlushCurStr();
+            }
+            else{
+                flush_timeout = window.setInterval("sendFlushCurStr()", FLUSH_TIMEOUT);
+                sendPreeditStr(this.value);
+            }
+        });
+
+        // Internet Explorer
+        $("#entry").on("propertychange", function(event) {
+
+            window.clearInterval(flush_timeout);
+            var cur_timestamp = (new Date).getTime();
+            latest_typed_timestamp = cur_timestamp;
+
+            //To prevent multiline field in textarea when the enter key is typed and send commit string and enter key event
+            if(this.value.substring(this.value.length - 1) == "\n"){
+                this.value = this.value.substring(0, this.value.length - 1);
+                sendFlushCurStr();
+                entry.value = TMP_CHAR;
+                TMP_TIMESTAMP = cur_timestamp;
+                empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                sendKeyEvent(KEY_ENTER);
+                return false;
+            }
+            //To prevent removing the TMP_CHAR(first) chartor for the all time
+            if(TMP_CHAR.substring(0, TMP_CHAR.length - 1) == this.value){
+                entry.value = TMP_CHAR;
+                TMP_TIMESTAMP = cur_timestamp;
+                empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                return false;
+            }
+            //To prevent duplicating preedit string error for Note2, S3 web browser
+            if(pre_str == this.value){
+                return;
+            }
+            /*To prevent wrong preedit string error for Tizen phone, when next character is made in CJK
+              correct event must happen like [pre_str:가 for 간 -> preedit:간 ->  pre_str: 간 for 가나 -> preedit:가나 ]
+              wrong event happen from tizen  [pre_str:가 for 간 -> preedit:간 -> preedit:가나 -> pre_str: 가 for 가나 -> preedit: 가 -> pre_str: 간 for  가 ] */
+            if(pre_pre_str == this.value){
+                return;
+            }
+            pre_pre_str = pre_str;
+            pre_str = this.value;
+
+            //send commit string when the space key is typed
+            if(this.value.substring(this.value.length - 1) == " ") {
+                sendFlushCurStr();
+            }
+            else{
+                flush_timeout = window.setInterval("sendFlushCurStr()", FLUSH_TIMEOUT);
+                sendPreeditStr(this.value);
+            }
+        });
+
+        $("#entry").on("keydown", function(event) {
+
+            //To prevent Ctrl + C event (keycode 17:Ctrl, 67:C)
+            if(event.keyCode == 17 || event.keyCode == 67) return;
+
+            //To enable back space key continually, even there is no charactor for Note2, S3 web browser
+            if(this.value == TMP_CHAR && event.keyCode == KEY_BACKSPACE) {
+                sendKeyEvent(event.keyCode);
+
+            //To remove the last preedit charator, when tap the backspace key
+            }else if(this.value.length > TMP_CHAR.length && TMP_CHAR == this.value.substring(0, this.value.length - 1) && event.keyCode == KEY_BACKSPACE){
+                sendKeyEvent(event.keyCode);
+            }
+        });
+    });
+</script>
+<!-- page 1 -->
+    <!-- TV MODE -->
+    <div id="tvmode" data-role="page" data-fullscreen="true" class ="visible">
+        <table class="tb1" >
+        <!-- Header -->
+            <tr>
+                <td class="t_cell t_cell_header cell_width33 cell_height10 logo"></td>
+                <td class="t_cell cell_width77" colspan="2">
+                    <table  class="tb1">
+                        <tr>
+                            <td id ="reset_bt" class="t_cell reset_bt" ontouchstart="javascript:sendevent(this.id)"></td>
+                            <td id ="type_a" class="t_cell type_a" ontouchstart="javascript:sendevent(this.id)"></td>
+                            <td id ="type_b" class="t_cell type_b" ontouchstart="javascript:sendevent(this.id)"></td>
+                            <td id ="type_c" class="t_cell type_c" ontouchstart="javascript:sendevent(this.id)"></td>
+                        </tr>
+                    </table>
+                </td>
+            </tr>
+            <tr>
+                <td  class="t_cell t_cell_inner" colspan="3">
+                        <!-- Content -->
+<!--                         <table class="tv_table"  id="mousepad2" > -->
+                        <table class="tv_table" >
+
+                                <!-- Content_space-top
+                                <tr>
+                                    <td class="t_cell cell_height5"></td>
+                                </tr> -->
+                                <tr>
+                                    <td>
+                                    <!-- Content_area -->
+                                        <table class="tv_inner_table">
+                                            <tr>
+                                                <td class="t_cell cell_height18" colspan="2">&nbsp;</td>
+                                                <td id="bt_power" class="t_cell power cell_height18" ontouchstart="sendevent(this.id)"></td>
+                                            </tr>
+                                            <tr>
+                                                <td id="bt_volume_up" class="t_cell volume_up cell_width33" rowspan="2" ontouchstart="sendevent(this.id)"></td>
+                                                <td id="bt_channel_up" class="t_cell channel_up cell_width33" rowspan="2" ontouchstart="sendevent(this.id)"></td>
+                                                <td id="bt_switchmode" class="t_cell source cell_height13 cell_width33" ontouchstart="sendevent(this.id)"></td>
+                                            </tr>
+                                            <tr>
+                                                <td class="t_cell cell_height13"></td>
+                                            </tr>
+                                            <tr>
+                                                <td  class="t_cell volume t_cell_text"></td>
+                                                <td  class="t_cell channel t_cell_text"></td>
+                                                <td id="bt_menu" class="t_cell menu cell_height13" ontouchstart="sendevent(this.id)"></td>
+                                            </tr>
+                                            <tr>
+                                                <td id="bt_volume_down" class="t_cell volume_down" rowspan="2" ontouchstart="sendevent(this.id)"></td>
+                                                <td id="bt_channel_down" class="t_cell channel_down" rowspan="2" ontouchstart="sendevent(this.id)"></td>
+                                                <td id="bt_info" class="t_cell info cell_height13" ontouchstart="sendevent(this.id)"></td>
+                                            </tr>
+                                            <tr>
+                                                <td id="bt_select" class="t_cell return cell_height13" ontouchstart="sendevent(this.id)"></td>
+                                            </tr>
+                                            <tr>
+                                                <td id="bt_mute" class="t_cell mute" ontouchstart="sendevent(this.id)"></td>
+                                                <td id="bt_channel_list" class="t_cell chlist" ontouchstart="sendevent(this.id)"></td>
+                                                <td id="bt_exit" class="t_cell exit cell_height13" ontouchstart="sendevent(this.id)"></td>
+                                            </tr>
+                                        </table>
+                                    </td>
+                                </tr>
+                                <!-- Content_space-bottom -->
+                                <tr>
+                                    <td id = "air_click_area" class="t_cell cell_height20 cell_gray_font" ontouchstart="sendevent(this.id)"></td>
+                                </tr>
+                        </table>
+                </td>
+            </tr>
+        <!-- Footer -->
+            <tr>
+                <td id="sys_btn_home" class="t_cell_footer apps cell_width33" ontouchstart="javascript:sendevent(this.id)"></td>
+                <td id="sys_btn_modechange" class="t_cell_footer modeswitcher_to_mouse cell_width33" ontouchstart="javascript:inputModeChanged('tvmode','keymode')" ></td>
+                <td id="sys_btn_back" class="t_cell_footer back cell_width33" ontouchstart="sendevent(this.id)"></td>
+            </tr>
+        </table>
+    </div>
+
+<!-- end page 1 -->
+
+<!-- page 2 -->
+    <!-- MOUSE MODE -->
+    <div id="keymode"  data-role="page" data-fullscreen="true" class ="invisible">
+       <table class="tb1" >
+        <!-- Header -->
+            <tr>
+                <td class="t_cell t_cell_header cell_width33 cell_height10 logo" ontouchstart="home_icon_add('Tizen_Input')"></td>
+                <td class="t_cell cell_width77"  colspan="2">
+                    <table  class="tb1">
+                        <tr>
+                            <td id ="reset_bt2" class="t_cell reset_bt" ontouchstart="javascript:sendevent(this.id)"></td>
+                            <td id ="type_a2" class="t_cell type_a" ontouchstart="javascript:sendevent(this.id)"></td>
+                            <td id ="type_b2" class="t_cell type_b" ontouchstart="javascript:sendevent(this.id)"></td>
+                            <td id ="type_c2" class="t_cell type_c" ontouchstart="javascript:sendevent(this.id)"></td>
+                        </tr>
+                    </table>
+                </td>
+            </tr>
+            <tr>
+                <td  class="t_cell" colspan="3">
+                        <!-- Content -->
+                        <table class="tb1">
+                                <!-- Content_space-top -->
+                                <tr>
+                                    <td class="t_cell cell_height13 t_cell_vertical_align_bottom" >
+                                        <textarea name="entry" wrap="off" rows="1" id="entry"></textarea>
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <td>
+                                        <table class="tb1_thin_border mouse_panel ">
+                                            <tr>
+                                                <!-- Content_area -->
+                                                <td id="mousepad" class="t_cell t_cell_mousepad t_cell_thin_border"> </td>
+                                                <td id="mousescroll" class="t_cell cell_width15 t_cell_thin_border"> </td>
+                                            </tr>
+                                        </table>
+                                    </td>
+                                </tr>
+                                <!-- Content_space-bottom -->
+                        </table>
+                </td>
+            </tr>
+        <!-- Footer -->
+            <tr>
+                <td id="sys_btn_home2" class="t_cell_footer apps cell_width33" ontouchstart="javascript:sendevent(this.id)"></td>
+                <td id="sys_btn_modechange2" class="t_cell_footer modeswitcher_to_tv cell_width33" ontouchstart="javascript:inputModeChanged('keymode','tvmode')" ></td>
+                <td id="sys_btn_back2" class="cell_width16 t_cell_footer back cell_width33" ontouchstart="sendevent(this.id)"></td>
+            </tr>
+
+        </table>
+    </div>
+
+<!-- end page 2 -->
+<iframe id="home_icon_add_frame" style="display:none;width:0px;height:0px;"></iframe>
+
+</body>
+</html>
+
+
diff --git a/ism/data/remote-input/tv_mode.htm b/ism/data/remote-input/tv_mode.htm
new file mode 100644 (file)
index 0000000..b90e207
--- /dev/null
@@ -0,0 +1,149 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Tizen Remote Input</title>
+
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable = 0"/>
+    <link rel="stylesheet" href="custom3.css" type="text/css"/>
+    <link rel="stylesheet" href="jquery.mobile-1.3.1.min.css" type="text/css"/>
+    <script src="tv_mode.js" type="text/javascript"> </script>
+    <script src="jquery-2.0.2.min.js"></script>
+    <script src="jquery.mobile-1.3.1.min.js"></script>
+</head>
+
+<body>
+    <script>
+
+    </script>
+
+
+
+<!--Start page 1 -->
+    <div id="tvmode" data-role="page" data-theme="a" data-fullscreen="true">
+
+        <div data-role="header" style="line-height:0em">
+<!--              <h1><table align=left border=0 width=100%><tr><td align=right><img width=35 src="wifikeyboard.png"></td><td align=left >Tizen Remote Input</td><td align="right" ><a href="#keymode" data-transition="flip"><img width=35 src="keyboard.png"></a></td></tr></table></h1> -->
+<!--            <h1><table align=left border=0 width=100%><tr><td align=right><img width=35 src="wifikeyboard.png"></td><td align=left >Tizen Remote Input</td><td align="center" ></td></tr></table></h1> -->
+             <h1><table border="0" width="100%"><tr><td align="right" width="25%"><img width=35 src="wifikeyboard.png"></td><td align=center >Tizen Remote Input</td><td align="right" width="25%" ><right><a  href="#keymode" data-transition="flip" data-role="button" data-theme="a" style= "height:30px; width:50px" ><font size="1" style="normal" >모드</p>전환</font></a></right></td></tr></table></h1>
+
+        </div> <!-- /header -->
+
+        <div id ="content_div" data-role="content" >
+
+            <div align="center" style="line-height:0em">
+                <table border="0" cellpadding="0" cellspacing="0">
+                    <tr >
+                        <td style= "width:70px; text-align: center" ><center><a id="bt_power" href="#" data-role="button" data-icon="gear" data-iconpos="bottom" data-theme="i" style= "height:60px; width:60px" ><font size="1" style="normal" >전원</font> </a></center></td>
+                        <td style= "width:150px; text-align: center"><font size="4" style="font-weight: bold" ></font></td>
+                        <td style= "width:70px"><center><a id="bt_switchmode" href="#" data-role="button" data-theme="a" style= "height:60px; width:60px" ><font size="1" style="normal" >외부</p>입력</font></a></center></td>
+                    </tr>
+                </table>
+
+                <table style="text-align: center;" border="0" cellpadding="3" cellspacing="0">
+                    <tr>
+                        <td><a id="bt_menu" href="#" data-role="button" data-icon="grid" data-iconpos="bottom" data-theme="f" style= "height:60px; width:60px" ><font size="1" style="normal" >간편</p>메뉴</font> </a></td>
+                        <td><a id="bt_up" href="#" data-role="button" data-icon="arrow-u" data-iconpos="top" data-theme="a" style= "height:65px; width:65px" ><font size="2" style="normal" ></font> </a></td>
+                        <td><a id="bt_info" href="#" data-role="button" data-icon="info" data-iconpos="bottom" data-theme="f" style= "height:60px; width:60px" ><font size="1" style="normal" >정보</p>표시</font> </a></td>
+                    </tr>
+                    <tr>
+                        <td><a id="bt_left" href="#" data-role="button" data-icon="arrow-l" data-iconpos="left" data-theme="a" style= "height:65px; width:65px" ><font size="1" style="normal" ></font> </a></td>
+                        <td><a id="bt_select" href="#" data-role="button" data-icon="check" data-iconpos="bottom" data-theme="a"style= "height:65px; width:65px" ><font size="2" style="normal" ></font> </a></td>
+                        <td><a id="bt_right" href="#" data-role="button" data-icon="arrow-r" data-iconpos="right" data-theme="a"style= "height:65px; width:65px" ><font size="1" style="normal" ></font> </a></td>
+                    </tr>
+                    <tr>
+                        <td><a id="bt_back" href="#" data-role="button" data-icon="back" data-iconpos="bottom" data-theme="f"style= "height:60px; width:60px" ><font size="1" style="normal" >복귀</font> </a></td>
+                        <td><a id="bt_down" href="#" data-role="button" data-icon="arrow-d" data-iconpos="bottom" data-theme="a"style= "height:65px; width:65px" ><font size="2" style="normal" ></font> </a></td>
+                        <td><a id="bt_exit" href="#" data-role="button" data-icon="home" data-iconpos="bottom" data-theme="f"style= "height:60px; width:60px" ><font size="1" style="normal" >종료</font> </a></td>
+                    </tr>
+                </table>
+                <table style="text-align: center;" border="0" cellpadding="3" cellspacing="0">
+                    <tr>
+                        <td style="vertical-align: middle; width:120px; text-align: center;"><center><a id="bt_volume_up" href="#" data-role="button" data-icon="plus" data-iconpos="top"  data-theme="h" style= "height:75px; width:75px" ><font size="2" style="normal" >음</font></a></center></td>
+                        <td align="center" ><a id="bt_mute" href="#" data-role="button" data-theme="a"style= "height:40px; width:40px" ><font size="1" style="normal" >조용</font> </a></td>
+                        <td style="vertical-align: middle; width:120px; text-align: center;"><center><a id="bt_channel_up" href="#" data-role="button" data-icon="arrow-u" data-iconpos="top" data-theme="h"style= "height:75px; width:75px" ><font size="2" style="normal" >채</font> </a></center></td>
+                    </tr>
+                    <tr>
+                        <td style="vertical-align: middle; width:120px; text-align: center;"><center><a id="bt_volume_down" href="#" data-role="button" data-icon="minus" data-iconpos="bottom" data-theme="h"style= "height:75px; width:75px" ><font size="2" style="normal" >량</font> </a></center></td>
+                        <td align="center"><a id="bt_channel_list" href="#" data-role="button" data-theme="a"style= "height:40px; width:55px" ><font size="1" style="normal" >채널</p>목록</font> </a></td>
+                        <td style="vertical-align: middle; width:120px; text-align: center;"><center><a id="bt_channel_down" href="#" data-role="button" data-icon="arrow-d" data-iconpos="bottom" data-theme="h"style= "height:75px; width:75px" ><font size="2" style="normal" >널</font> </a></center></td>
+                    </tr>
+                </table>
+            </div>
+        </div>
+        <!-- /content -->
+
+        <div data-role="footer" data-tap-toggle="false" data-position="fixed">
+            <div data-role="navbar" data-grid="b">
+                <ul>
+                    <li><a href="#" id="sys_btn_menu" data-icon="bars"  data-transition="flip">메 뉴</a></li>
+                    <li><a href="#" id="sys_btn_home" data-icon="home">Smart Home</a></li>
+                    <li><a href="#" id="sys_btn_back" data-icon="back">복 귀</a></li>
+                </ul>
+            </div>
+        </div>
+        <!-- /footer -->
+    </div>
+<!-- End page 1 -->
+
+<!--Start page 2 -->
+        <div id="keymode"  data-role="page" data-theme="a" data-fullscreen="true">
+
+        <div data-role="header" style="line-height:0em">
+<!--            <h1><table align=left border=0 width=100% ><tr><td align=right style="text-align:center; vertical-align:super;"><img width=35 src="wifikeyboard.png"></td><td align="center" >Tizen Remote Input</td><td align=left><a href="#tvmode" data-transition="flip"><img width=35 src="remocon.png"></a></td></tr></table></h1>-->
+             <h1><table align="left" border="0" width="100%"><tr><td align="right" width="25%"><img width=35 src="wifikeyboard.png"></td><td align=center >Tizen Remote Input</td><td align="right" width="25%"><right><a  href="#tvmode" data-transition="flip" data-role="button" data-theme="a" style= "height:30px; width:50px" ><font size="1" style="normal" >모드</p>전환</font></a></right></td></tr></table></h1>
+
+<!--             <h1><table align=left border=0 width=100% ><tr><td align=right style="text-align:center; vertical-align:super;"><img width=35 src="wifikeyboard.png"></td><td align="left" >Tizen Remote Input</td><td></td></tr></table></h1> -->
+        </div>
+        <!-- /header -->
+
+        <div id ="content_div2" data-role="content">
+            <textarea name="entry" wrap="off"  style="overflow:hidden;" rows="1" id="entry"></textarea>
+<!--             <label><input type="checkbox" id="search_link_checker" name="search_link"> <font size ="2"> search_link_checker </font></input></label> -->
+            <div>
+                <div id="mousepad" style="background-image:url(mouse_pad.png); float:left; background-size: 100% 100%; background-repeat: no-repeat;width:88%;height:340px;"></div>
+                <div id="mousescroll" style="background-image:url(scrollbar.png); float:left; background-size: 100% 100%; background-repeat: no-repeat;width:12%;height:340px;"></div>
+            </div>
+            <fieldset class="ui-grid-c">
+<!--
+                <div class="ui-block-a">
+                    <button id="arrow_left" type="button" data-inline="true" data-icon="arrow-l"
+                    data-iconpos="left" data-theme="c"><font size="1" style="nomal" weight="300">TV MODE</font></button>
+                </div>
+
+                <div class="ui-block-b">
+                    <button id="arrow_right" type="button" data-icon="arrow-r"
+                    data-iconpos="left" data-theme="c"><font size="1" style="nomal" weight="300">복 귀</font></button>
+                </div>
+
+                <div class="ui-block-c">
+                    <button id="arrow_up" type="button" data-icon="arrow-u"
+                    data-iconpos="left" data-theme="b"><font size="1" style="nomal" weight="300">&nbsp;</font></button>
+                </div>
+                <div class="ui-block-d">
+                    <button id="arrow_down" type="button" data-icon="arrow-d"
+                    data-iconpos="left" data-theme="b"><font size="1" style="nomal" weight="300">&nbsp;</font></button>
+                </div> -->
+            </fieldset>
+            <!--<textarea name="logbox" id="log_box" style="overflow:auto; height:10px;width:100%;letter-spacing:0; padding:8; border-style:dotted; font-size:12px" ></textarea>  -->
+        </div>
+        <!-- /content -->
+
+        <div data-role="footer" data-tap-toggle="false" data-position="fixed"  >
+            <div data-role="navbar" class="nav-glyphish-example" data-grid="b">
+                <ul>
+                    <li><a href="#" id="sys_btn_menu2" data-icon="bars"  data-transition="flip">메 뉴</a></li>
+                    <li><a href="#" id="sys_btn_home2" data-icon="home">Smart Home</a></li>
+                    <li><a href="#" id="sys_btn_back2" data-icon="back">복 귀</a></li>
+                </ul>
+            </div>
+
+        </div>
+        <!-- /footer -->
+    </div>
+
+<!-- page 2 -->
+</body>
+</html>
+
+
diff --git a/ism/data/remote-input/tv_mode.js b/ism/data/remote-input/tv_mode.js
new file mode 100644 (file)
index 0000000..6d38d9d
--- /dev/null
@@ -0,0 +1,546 @@
+document.write("<script type='text/javascript' src='ajaxCaller.js'><"+"/script>");
+document.write("<script type='text/javascript' src='util.js'><"+"/script>");
+    // Key definition
+    var KEY_BACKSPACE = 8;
+    var KEY_ENTER = 13;
+    var KEY_SPACE = 32;
+    var KEY_ESCAPE = 27;
+
+    var KEY_MENU = 10001;
+    var KEY_HOME = 10002;
+    var KEY_BACK = 10003;
+
+    var MOUSE_CLICK = 555;
+    //var MOUSE_PRESSED = 556;
+    //var MOUSE_RELEASED =557;
+
+    // Callback incremental index
+    var id_num = 0;
+
+    var TV_KEY_POWER = 124;
+    var TV_KEY_SWITCHMODE = 235;
+    var TV_KEY_MENU = 179;
+    var TV_KEY_UP = 111;
+    var TV_KEY_INFO = 69;
+    var TV_KEY_LEFT = 113;
+    var TV_KEY_SELECT = 36;
+    var TV_KEY_RIGHT = 114;
+    var TV_KEY_BACK = 166;
+    var TV_KEY_DOWN = 116;
+    var TV_KEY_EXIT = 182;
+    var TV_KEY_VOL_UP = 123;
+    var TV_KEY_MUTE = 121;
+    var TV_KEY_CHAN_UP = 112;
+    var TV_KEY_VOL_DOWN = 122;
+    var TV_KEY_CHAN_LIST = 68;
+    var TV_KEY_CHAN_DOWN = 117;
+
+    var multi_touched = 0;
+    var touch_started_x = 0;
+    var touch_started_y = 0;
+    var touch_contentarea_Pressed=0;
+    var touch_contentarea_Moved=0;
+    var touch_contentarea_pre_x=0;
+    var touch_contentarea_pre_y=0;
+
+    // Mouse prior coordinate, click flag
+    var pre_x = 0;
+    var pre_y = 0;
+    var touch_Pressed=0;
+    var touch_Moved=0;
+    var scroll_pre_x = 0;
+    var scroll_pre_y = 0;
+
+    // Callback incremental index
+    var id_num = 0;
+    var count = 0;
+
+    // Flush timer
+    var flush_timeout;
+    var FLUSH_TIMEOUT = 2000;
+    var FLUSH_ENTER_TIMEOUT = 50;
+    var flick_start_time = 0;
+    var flick_time = 0;
+    // Backup pre string
+    var pre_str = "";
+    var TMP_CHAR = " ";
+    var TMP_TIMESTAMP = 0;
+    var EMPTY_CHECKER_TIMEOUT = 10;
+    var latest_typed_timestamp = 0;
+
+
+    function cbAjax(text, headers, callingContext){
+        id_num++;
+        return true;
+    }
+    function sendKeyEvent(keyCode){
+        var bodyVars = {id:id_num, key:'event', value:keyCode}
+        ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+    }
+    function sendMouse_KeyEvent(mouseCode) {
+        var bodyVars = {id:id_num, key:'mouse_key', value:mouseCode}
+        ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+    }
+
+    function sendMouse_MoveEvent(coordinate) {
+        var bodyVars = {id:id_num, key:'mouse_move', value:coordinate}
+        ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+    }
+
+    function sendWheel_MoveEvent(coordinate) {
+        var bodyVars = {id:id_num, key:'wheel_move', value:coordinate}
+        ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+    }
+    /*
+    function sendScroll(direction, count) {
+        for (i = 0 ; i < count ; i++) {
+            sendMouse_KeyEvent(direction);
+        }
+    }
+*/
+    function removeTmpChar(str){
+        if (TMP_CHAR.length < 1) return;
+        if (str.length >= TMP_CHAR.length) {
+            str = str.substring (TMP_CHAR.length);
+        }
+        return str;
+    }
+
+    function sendPreeditStr(str){
+        if ($("#search_link_checker").prop("checked")){
+            return;
+        }
+        str = removeTmpChar(str);
+        var bodyVars = {id:id_num, key:'preedit', value:str}
+        ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+    }
+
+    function sendCommitStr(str){
+        str = removeTmpChar(str);
+        if ($("#search_link_checker").prop("checked")){
+            var bodyVars = {id:id_num, key:'search', value:str}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+        else{
+            var bodyVars = {id:id_num, key:'commit', value:str}
+            ajaxCaller.postForPlainText("/tizen-temp.htm", bodyVars, cbAjax);
+        }
+    }
+
+    function sendFlushCurStr(){
+        var entry = document.getElementById( "entry" );
+        var str = entry.value;
+        if(str.length > 0){
+            entry.value = TMP_CHAR;
+            pre_str = "";
+            sendCommitStr (str)
+            window.clearInterval(flush_timeout);
+        }
+    }
+    /*
+    function printLog(str){
+        log_box.value = log_box.value +"\n"+ str;
+        var psconsole = $('#log_box');
+        psconsole.scrollTop(psconsole[0].scrollHeight - psconsole.height());
+    }
+    */
+    function clearLog(){
+        log_box.value = "";log_box.value +"\n"+ str;
+    }
+    function reArrangeCursorPos(){
+        if(latest_typed_timestamp == TMP_TIMESTAMP){
+            entry.setSelectionRange(TMP_CHAR.length,TMP_CHAR.length);
+        }
+        window.clearInterval(empty_checker_timeout);
+    }
+
+    $(document).ready(function()    {
+
+      setTimeout(function(){
+        window.scrollTo(0, 1);
+        }, 0);
+
+
+        var entry = document.getElementById( "entry" );
+        //entry.focus();
+        entry.value = TMP_CHAR;
+/*
+        // 4 arrow keys
+        $("#arrow_left").click(function(event) {
+              window.location='tv_mode.htm';
+//                sendFlushCurStr();
+//                sendKeyEvent(KEY_LEFT);
+//               var entry = document.getElementById( "entry" );
+//               entry.focus();
+        });
+
+        $("#arrow_right").click(function(event) {
+            sendFlushCurStr();
+            sendKeyEvent(KEY_BACK);
+
+        });
+
+        $("#arrow_down").click(function(event) {
+            sendFlushCurStr();
+            sendKeyEvent(KEY_DOWN);
+        });
+
+        $("#arrow_up").click(function(event) {
+            sendFlushCurStr();
+            sendKeyEvent(KEY_UP);
+        });
+*/
+
+        // 3 system hw buttons
+        $("#sys_btn_menu").click(function(event) {
+            sendKeyEvent(KEY_MENU);
+        });
+        $("#sys_btn_home").click(function(event) {
+            sendKeyEvent(KEY_HOME);
+        });
+        $("#sys_btn_back").click(function(event) {
+            sendKeyEvent(KEY_BACK);
+        });
+
+        $("#sys_btn_menu2").click(function(event) {
+            sendFlushCurStr();
+            sendKeyEvent(KEY_MENU);
+        });
+        $("#sys_btn_home2").click(function(event) {
+            sendFlushCurStr();
+            sendKeyEvent(KEY_HOME);
+        });
+        $("#sys_btn_back2").click(function(event) {
+            sendFlushCurStr();
+            sendKeyEvent(KEY_BACK);
+        });
+
+        // Tv remote control buttons
+        $("#bt_power").click(function(event) {
+            sendKeyEvent(TV_KEY_POWER);
+        });
+        $("#bt_switchmode").click(function(event) {
+            sendKeyEvent(TV_KEY_SWITCHMODE);
+        });
+        $("#bt_menu").click(function(event) {
+            sendKeyEvent(TV_KEY_MENU);
+        });
+        $("#bt_up").click(function(event) {
+            sendKeyEvent(TV_KEY_UP);
+        });
+        $("#bt_info").click(function(event) {
+            sendKeyEvent(TV_KEY_INFO);
+        });
+        $("#bt_left").click(function(event) {
+            sendKeyEvent(TV_KEY_LEFT);
+        });
+        $("#bt_select").click(function(event) {
+            sendKeyEvent(TV_KEY_SELECT);
+        });
+        $("#bt_right").click(function(event) {
+            sendKeyEvent(TV_KEY_RIGHT);
+        });
+        $("#bt_back").click(function(event) {
+            sendKeyEvent(TV_KEY_BACK);
+        });
+        $("#bt_down").click(function(event) {
+            sendKeyEvent(TV_KEY_DOWN);
+        });
+        $("#bt_exit").click(function(event) {
+            sendKeyEvent(TV_KEY_EXIT);
+        });
+        $("#bt_volume_up").click(function(event) {
+            sendKeyEvent(TV_KEY_VOL_UP);
+        });
+        $("#bt_mute").click(function(event) {
+            sendKeyEvent(TV_KEY_MUTE);
+        });
+        $("#bt_channel_up").click(function(event) {
+            sendKeyEvent(TV_KEY_CHAN_UP);
+        });
+        $("#bt_volume_down").click(function(event) {
+            sendKeyEvent(TV_KEY_VOL_DOWN);
+        });
+        $("#bt_channel_list").click(function(event) {
+            sendKeyEvent(TV_KEY_CHAN_LIST);
+        });
+        $("#bt_channel_down").click(function(event) {
+            sendKeyEvent(TV_KEY_CHAN_DOWN);
+        });
+
+
+        content_div.addEventListener("touchstart", function(event) {
+            touch_started_x = event.touches[0].pageX;
+            touch_started_y = event.touches[0].pageY;
+            multi_touched = event.touches.length;
+            touch_contentarea_Pressed=1;
+            touch_contentarea_Moved=0;
+            touch_contentarea_pre_x = event.touches[0].pageX;
+            touch_contentarea_pre_y = event.touches[0].pageY;
+
+        });
+
+        content_div.addEventListener("touchmove", function(event) {
+            event.preventDefault();
+            touch_contentarea_Moved = 1;
+            touch_contentarea_pre_x = event.touches[0].pageX;
+            touch_contentarea_pre_y = event.touches[0].pageY;
+            event.preventDefault();
+        });
+        content_div.addEventListener("touchend", function(event) {
+            if(touch_contentarea_Moved==1 && touch_contentarea_Pressed==1 && multi_touched == 2){
+                if(touch_contentarea_pre_x-touch_started_x == 0){
+                    return;
+                }
+                coordinate2= touch_contentarea_pre_x-touch_started_x;
+                if (Math.abs(coordinate2) >=130){
+                $.mobile.changePage('#keymode','flip','reverse');
+//                        window.location='key_mode.htm';
+                }
+            }
+            touch_contentarea_Pressed=0;
+            touch_contentarea_Moved=0;
+        });
+
+
+        content_div2.addEventListener("touchstart", function(event) {
+            touch_started_x = event.touches[0].pageX;
+            touch_started_y = event.touches[0].pageY;
+            multi_touched = event.touches.length;
+            touch_contentarea_Pressed=1;
+            touch_contentarea_Moved=0;
+            touch_contentarea_pre_x = event.touches[0].pageX;
+            touch_contentarea_pre_y = event.touches[0].pageY;
+
+        });
+
+        content_div2.addEventListener("touchmove", function(event) {
+            event.preventDefault();
+            touch_contentarea_Moved = 1;
+            touch_contentarea_pre_x = event.touches[0].pageX;
+            touch_contentarea_pre_y = event.touches[0].pageY;
+            event.preventDefault();
+        });
+        content_div2.addEventListener("touchend", function(event) {
+            if(touch_contentarea_Moved==1 && touch_contentarea_Pressed==1 && multi_touched == 2){
+                if(touch_contentarea_pre_x-touch_started_x == 0){
+                    return;
+                }
+                coordinate2= touch_contentarea_pre_x-touch_started_x;
+                if (Math.abs(coordinate2) >=130){
+                $.mobile.changePage('#tvmode','flip','reverse');
+                }
+            }
+            touch_contentarea_Pressed=0;
+            touch_contentarea_Moved=0;
+        });
+
+
+        mousepad.addEventListener("touchstart", function(event) {
+            //hideTheKeyBoard();
+            flick_start_time = new Date;
+            pre_x = event.touches[0].pageX;
+            pre_y = event.touches[0].pageY;
+//                scroll_pre_x = event.touches[0].pageX;
+//                scroll_pre_y = event.touches[0].pageY;
+            touch_Pressed=1;
+            touch_Moved=0;
+
+            if(document.activeElement == document.getElementById( "entry" )) {
+                sendFlushCurStr();
+                document.activeElement.blur();
+            }
+        });
+
+        mousepad.addEventListener("touchmove", function(event) {
+
+            var coordinate;
+            touch_Moved=1;
+            event.preventDefault();
+            if((pre_x==0) && (pre_y==0)) {
+                pre_x = event.touches[0].pageX;
+                pre_y = event.touches[0].pageY;
+                return;
+            }
+            if((event.touches[0].pageX-pre_x == 0) && (event.touches[0].pageY-pre_y == 0)) {
+                return;
+            }
+
+            coordinate = (event.touches[0].pageX-pre_x).toString() + "," + (event.touches[0].pageY-pre_y).toString();
+            sendMouse_MoveEvent(coordinate);
+            pre_x = event.touches[0].pageX;
+            pre_y = event.touches[0].pageY;
+        });
+
+        mousepad.addEventListener("touchend", function(event) {
+
+            var coordinate, coordinate2;
+            var direction = 0, count = 0;
+//                var flick_end_time = new Date;
+//                var flick_time = flick_end_time - flick_start_time;
+
+            if(touch_Moved==0&&touch_Pressed==1){
+                if(document.activeElement == document.getElementById( "entry" )){
+                    sendFlushCurStr();
+                }
+                else{
+                    sendMouse_KeyEvent(MOUSE_CLICK);
+                }
+            }
+            /*
+            else{
+                if(touch_Moved==1 && touch_Pressed==1 && flick_time < 200 && multi_touched ==1){
+                    //printLog("flick : " + Math.abs(pre_x-scroll_pre_x) +","+Math.abs(pre_y-scroll_pre_y));
+                    if((Math.abs(pre_x-scroll_pre_x) > 70) ||(Math.abs(pre_y-scroll_pre_y) < 50)){
+                        return;
+                    }
+                    coordinate = (scroll_pre_x - pre_x).toString() + "," + (scroll_pre_y - pre_y).toString();
+                    //sendMouse_MoveEvent(coordinate);
+
+                    coordinate2= pre_y-scroll_pre_y;
+                    direction = (coordinate2 > 0) ? MOUSE_SCROLL_UP : MOUSE_SCROLL_DOWN ;
+                    //sendScroll(direction, 5);
+                }
+            }*/
+
+             if(document.activeElement == document.getElementById( "entry" )){
+                    sendFlushCurStr();
+                    touch_Moved=0;
+                    touch_Pressed=0;
+                }
+              else {
+                    //sendMouse_KeyEvent(MOUSE_RELEASED);
+                    touch_Moved=0;
+                    touch_Pressed=0;
+              }
+
+        });
+
+        mousescroll.addEventListener("touchstart", function(event) {
+
+            scroll_pre_x = event.touches[0].pageX;
+            scroll_pre_y = event.touches[0].pageY;
+//                sendMouse_KeyEvent(MOUSE_PRESSED);
+        });
+
+        mousescroll.addEventListener("touchmove", function(event) {
+
+            var coordinate;
+            event.preventDefault();
+
+            if(scroll_pre_y == 0){
+                scroll_pre_x = event.touches[0].pageX;
+                scroll_pre_y = event.touches[0].pageY;
+                return;
+            }
+            if(((event.touches[0].pageX-scroll_pre_x == 0) && (event.touches[0].pageY-scroll_pre_y == 0))||(event.touches[0].pageY-scroll_pre_y == 0)){
+                return;
+            }
+            var coordinate = (event.touches[0].pageX-scroll_pre_x).toString()+","+(event.touches[0].pageY-scroll_pre_y).toString();
+            sendWheel_MoveEvent(coordinate);
+
+            scroll_pre_x = event.touches[0].pageX;
+            scroll_pre_y = event.touches[0].pageY;
+        });
+
+        mousescroll.addEventListener("touchend", function(event) {
+            scroll_pre_y=0;
+            //sendMouse_KeyEvent(MOUSE_RELEASED);
+        });
+
+        // Firefox, Google Chrome, Opera, Safari, Internet Explorer from version 9
+        $("#entry").on("input", function(event) {
+
+            window.clearInterval(flush_timeout);
+            var cur_timestamp = (new Date).getTime();
+            latest_typed_timestamp = cur_timestamp;
+
+            //To prevent multiline field in textarea when the enter key is typed and send keyevent
+            if(this.value.substring(this.value.length - 1) == "\n"){
+                this.value = this.value.substring(0, this.value.length - 1);
+                sendFlushCurStr();
+                entry.value = TMP_CHAR;
+                TMP_TIMESTAMP = cur_timestamp;
+                empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                sendKeyEvent(KEY_ENTER);
+                return false;
+            }
+            //To prevent removing the first chartor(TMP_CHAR)
+            if(TMP_CHAR.substring(0, TMP_CHAR.length - 1) == this.value){
+                entry.value = TMP_CHAR;
+                TMP_TIMESTAMP = cur_timestamp;
+                empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                return false;
+            }
+            //To prevent duplicating preedit string error for Note2, S3 web browser
+            if(pre_str == this.value){
+                return;
+            }
+            pre_str = this.value;
+            if(this.value.substring(this.value.length - 1) == " ") {
+                var commitStr = this.value;
+                sendFlushCurStr();
+            }
+            else{
+                if ($("#search_link_checker").prop("checked")){
+                    flush_timeout = window.setInterval("sendFlushCurStr()", FLUSH_TIMEOUT);
+                }
+                sendPreeditStr(this.value);
+            }
+        });
+
+        // Internet Explorer
+        $("#entry").on("propertychange", function(event) {
+
+            window.clearInterval(flush_timeout);
+            var cur_timestamp = (new Date).getTime();
+            latest_typed_timestamp = cur_timestamp;
+
+            //To prevent multiline field in textarea when the enter key is typed and send keyevent
+            if(this.value.substring(this.value.length - 1) == "\n"){
+                this.value = this.value.substring(0, this.value.length - 1);
+                sendFlushCurStr();
+                entry.value = TMP_CHAR;
+                TMP_TIMESTAMP = cur_timestamp;
+                empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                sendKeyEvent(KEY_ENTER);
+                return false;
+            }
+            //To prevent removing the first chartor(TMP_CHAR)
+            if(TMP_CHAR.substring(0, TMP_CHAR.length - 1) == this.value){
+                entry.value = TMP_CHAR;
+                TMP_TIMESTAMP = cur_timestamp;
+                empty_checker_timeout = window.setInterval("reArrangeCursorPos()", EMPTY_CHECKER_TIMEOUT);
+                return false;
+            }
+            //To prevent duplicating preedit string error for Note2, S3 web browser
+            if(pre_str == this.value){
+                return;
+            }
+            pre_str = this.value;
+            if(this.value.substring(this.value.length - 1) == " ") {
+                var commitStr = this.value;
+                sendFlushCurStr();
+            }
+            else{
+                if ($("#search_link_checker").prop("checked")){
+                    flush_timeout = window.setInterval("sendFlushCurStr()", FLUSH_TIMEOUT);
+                }
+                sendPreeditStr(this.value);
+            }
+        });
+
+        $("#entry").on("keydown", function(event) {
+
+            if(event.keyCode == 17 || event.keyCode == 67) return;
+
+            //To enable back space key continually, even there is no charactor for Note2, S3 web browser
+            if(this.value == TMP_CHAR && event.keyCode == KEY_BACKSPACE) {
+                sendKeyEvent(event.keyCode);
+
+            //To remove the last preedit charator, when tap the backspace key
+            }else if(this.value.length > TMP_CHAR.length && TMP_CHAR == this.value.substring(0, this.value.length - 1) && event.keyCode == KEY_BACKSPACE){
+                sendKeyEvent(event.keyCode);
+            }
+        });
+    });
diff --git a/ism/data/remote-input/util.js b/ism/data/remote-input/util.js
new file mode 100644 (file)
index 0000000..ede6a0c
--- /dev/null
@@ -0,0 +1,184 @@
+
+var util = {
+
+  shouldDebug: false,
+
+  // Note: Will fail in pathological cases (where the members contain
+  // strings similar to describe() result).
+  membersEqual: function(array1, array2) {
+    return util.describe(array1)==util.describe(array2);
+  },
+
+  describe: function(obj) {
+    if (obj==null) { return null; }
+    switch(typeof(obj)) {
+      case 'object': {
+        var message = "";
+        for (key in obj) {
+          message += ", [" + key + "]: [" + obj[key] + "]";
+        }
+        if (message.length > 0) {
+          message = message.substring(2); // chomp initial ', '
+        }
+        return message;
+      }
+      default: return "" + obj;
+    }
+  },
+
+  debug: function(message) {
+      if (this.shouldDebug) {
+        alert("AjaxJS Message:\n\n" + message);
+      }
+  },
+
+  error: function(message) {
+      if (this.shouldDebug) {
+        alert("AjaxJS ERROR:\n\n" + message);
+      }
+  },
+
+  trim: function(str) {
+    return str.replace(/(^\s+|\s+$)/g,'');
+  },
+
+  strip: function(str) {
+    return str.replace(/\s+/, "");
+  }
+
+}
+
+function $() {
+
+    var elements = new Array();
+
+    for (var i = 0; i < arguments.length; i++) {
+
+      var element = arguments[i];
+
+      if (typeof element == 'string') {
+        if (document.getElementById) {
+          element = document.getElementById(element);
+        } else if (document.all) {
+          element = document.all[element];
+        }
+      }
+
+      elements.push(element);
+
+    }
+
+    if (arguments.length == 1 && elements.length > 0) {
+      return elements[0];
+    } else {
+      return elements;
+    }
+}
+
+function $C(elType) {
+  return document.createElement(elType);
+}
+
+// From prototype library. Try.these(f1, f2, f3);
+var Try = {
+  these: function() {
+    var returnValue;
+    for (var i = 0; i<arguments.length; i++) {
+      var lambda = arguments[i];
+      try {
+        returnValue = lambda();
+        break;
+      } catch (e) {}
+    }
+    return returnValue;
+  }
+}
+
+function getElementsByClassName(classname) {
+    var a = [];
+    var re = new RegExp('\\b' + classname + '\\b');
+    var els = document.getElementsByTagName("*");
+    for(var i=0,j=els.length; i<j; i++)
+        if(re.test(els[i].className))a.push(els[i]);
+    return a;
+}
+
+function extractIFrameBody(iFrameEl) {
+
+  var doc = null;
+  if (iFrameEl.contentDocument) { // For NS6
+    doc = iFrameEl.contentDocument;
+  } else if (iFrameEl.contentWindow) { // For IE5.5 and IE6
+    doc = iFrameEl.contentWindow.document;
+  } else if (iFrameEl.document) { // For IE5
+    doc = iFrameEl.document;
+  } else {
+    alert("Error: could not find sumiFrame document");
+    return null;
+  }
+  return doc.body;
+
+}
+
+
+
+/* function getElementsByClassName(needle) {
+
+
+
+  var xpathResult = document.evaluate('//*[@class = needle]', document, null, 0, null);
+  var outArray = new Array();
+  while ((outArray[outArray.length] = xpathResult.iterateNext())) {
+  }
+  return outArray;
+}
+*/
+
+/*
+  function acceptNode(node) {
+    if (node.hasAttribute("class")) {
+      var c = " " + node.className + " ";
+       if (c.indexOf(" " + needle + " ") != -1)
+         return NodeFilter.FILTER_ACCEPT;
+    }
+    return NodeFilter.FILTER_SKIP;
+  }
+
+  var treeWalker = document.createTreeWalker(document.documentElement,
+                                             NodeFilter.SHOW_ELEMENT,
+                                             acceptNode,
+                                             true);
+  var outArray = new Array();
+  if (treeWalker) {
+    var node = treeWalker.nextNode();
+    while (node) {
+      outArray.push(node);
+      node = treeWalker.nextNode();
+    }
+  }
+  return outArray;
+}
+
+*/
+///////////////////////////////////////////////////////////////////////////////
+// Used for pattern-specific demos.
+///////////////////////////////////////////////////////////////////////////////
+
+var DELAY = 1000;
+var steps = 0;
+function andThen(action) {
+  var delayTime = (++steps * DELAY);
+  setTimeout(action, delayTime);
+}
+
+function log(message) {
+  $("log").innerHTML += message + "<br/>";
+}
+
+function createXMLHttpRequest() {
+  try { return new ActiveXObject("Msxml2.XMLHTTP");    } catch(e) {}
+  try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
+  try { return new XMLHttpRequest();                   } catch(e) {}
+  alert("XMLHttpRequest not supported");
+  return null;
+}
diff --git a/ism/data/remote-input/web-helper-client.js b/ism/data/remote-input/web-helper-client.js
new file mode 100644 (file)
index 0000000..afc5656
--- /dev/null
@@ -0,0 +1,464 @@
+/*
+ * Copyright (c) 2012 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+var WebHelperClient = {
+    /* Web IME Initializer - first call this function with a handler object that contains the
+     * callback functions listed below, starting with "on*" prefix, to be acknowledged when
+     * input related events occurs. */
+    initialize : function (handler) {
+        this.handler = handler;
+        if (this.impl === null) {
+            this.impl = new this.WebHelperClientInternal(this);
+        }
+        this.impl.activate();
+    },
+
+    /* IME -> ISF functions */
+    log : function(str) {
+        this.impl.log(str);
+    },
+    commitString : function(str) {
+        this.impl.commitString(str);
+    },
+    updatePreeditString : function(str) {
+        this.impl.updatePreeditString(str);
+    },
+    sendKeyEvent : function(code) {
+        this.impl.sendKeyEvent(code);
+    },
+    sendMouse_KeyEvent : function(code) {
+        this.impl.sendMouse_KeyEvent(code);
+    },
+    sendMouse_MoveEvent : function(code) {
+        this.impl.sendMouse_MoveEvent(code);
+    },
+    sendWheel_MoveEvent : function(code) {
+        this.impl.sendWheel_MoveEvent(code);
+    },
+    sendAir_Input : function(code) {
+        this.impl.sendAir_Input(code);
+    },
+    sendAir_Setting : function(code) {
+        this.impl.sendAir_Setting(code);
+    },
+    forwardKeyEvent : function(code) {
+        this.impl.forwardKeyEvent(code);
+    },
+    setKeyboardSizes : function(portraitWidth, portraitHeight, landscapeWidth, landscapeHeight) {
+        this.impl.setKeyboardSizes(portraitWidth, portraitHeight, landscapeWidth, landscapeHeight);
+    },
+
+    /* ISF -> IME callbacks */
+    onInit : function() {
+        if (typeof this.handler.onInit === 'function') {
+            this.handler.onInit();
+        }
+    },
+    onExit : function() {
+        if (typeof this.handler.onExit === 'function') {
+            this.handler.onExit();
+        }
+    },
+    onFocusIn : function(inputContext) {
+        if (typeof this.handler.onFocusIn === 'function') {
+            this.handler.onFocusIn(inputContext);
+        }
+    },
+    onFocusOut : function(inputContext) {
+        if (typeof this.handler.onFocusOut === 'function') {
+            this.handler.onFocusOut(inputContext);
+        }
+    },
+
+    onShow : function(inputContext) {
+        if (typeof this.handler.onShow === 'function') {
+            this.handler.onShow(inputContext);
+        }
+    },
+    onHide : function(inputContext) {
+        if (typeof this.handler.onHide === 'function') {
+            this.handler.onHide(inputContext);
+        }
+    },
+
+    onSetRotation : function(inputContext) {
+        if (typeof this.handler.onSetRotation === 'function') {
+            this.handler.onSetRotation(inputContext);
+        }
+    },
+
+    onUpdateCursorPosition : function(inputContext, position) {
+        if (typeof this.handler.onUpdateCursorPosition === 'function') {
+            this.handler.onUpdateCursorPosition(inputContext, position);
+        }
+    },
+
+    onSetLanguage : function(language) {
+        if (typeof this.handler.onSetLanguage === 'function') {
+            this.handler.onSetLanguage(language);
+        }
+    },
+
+    onSetImdata : function(imdata) {
+        if (typeof this.handler.onSetImdata === 'function') {
+            this.handler.onSetImdata(imdata);
+        }
+    },
+    onGetImdata : function() {
+        var imdata = "";
+        if (typeof this.handler.onGetImdata === 'function') {
+            imdata = this.handler.onGetImdata();
+        }
+        this.impl.replyGetImdata(imdata);
+    },
+
+    onSetReturnKeyType : function(type) {
+        if (typeof this.handler.onSetReturnKeyType === 'function') {
+            this.handler.onSetReturnKeyType(type);
+        }
+    },
+    onGetReturnKeyType : function() {
+        if (typeof this.handler.onGetReturnKeyType === 'function') {
+            this.handler.onGetReturnKeyType();
+        }
+    },
+
+    onSetReturnKeyDisable : function(disabled) {
+        if (typeof this.handler.onSetReturnKeyDisable === 'function') {
+            this.handler.onSetReturnKeyDisable(disabled);
+        }
+    },
+    onGetReturnKeyDisable : function() {
+        if (typeof this.handler.onGetReturnKeyDisable === 'function') {
+            this.handler.onGetReturnKeyDisable();
+        }
+    },
+
+    onSetLayout : function(layout) {
+        if (typeof this.handler.onSetLayout === 'function') {
+            this.handler.onSetLayout(layout);
+        }
+    },
+    onGetLayout : function() {
+        if (typeof this.handler.onGetLayout === 'function') {
+            this.handler.onGetLayout();
+        }
+    },
+
+    onResetInputContext : function(inputContext) {
+        if (typeof this.handler.onResetInputContext === 'function') {
+            this.handler.onResetInputContext(inputContext);
+        }
+    },
+
+    onProcessKeyEvent : function(code, mask, layout) {
+        var processed = false;
+        if (typeof this.handler.onProcessKeyEvent === 'function') {
+            processed = this.handler.onProcessKeyEvent(code, mask, layout);
+        }
+        this.impl.replyProcessKeyEvent(processed);
+    },
+
+    /* Internal implementation, no need to check for keyboard developers */
+    impl : null,
+    handler : null,
+    WebHelperClientInternal: function (client) {
+
+        this.MessageTypes = {
+            PLAIN:"plain",
+            QUERY:"query",
+            REPLY:"reply"
+        };
+
+        this.MessageCommands = {
+            INIT:"init",
+            EXIT:"exit",
+
+            FOCUS_IN:"focus_in",
+            FOCUS_OUT:"focus_out",
+            SHOW:"show",
+            HIDE:"hide",
+            SET_ROTATION:"set_rotation",
+            UPDATE_CURSOR_POSITION:"update_cursor_position",
+            SET_LANGUAGE:"set_language",
+            SET_IMDATA:"set_imdata",
+            GET_IMDATA:"get_imdata",
+            SET_RETURN_KEY_TYPE:"set_return_key_type",
+            GET_RETURN_KEY_TYPE:"get_return_key_type",
+            SET_RETURN_KEY_DISABLE:"set_return_key_disable",
+            GET_RETURN_KEY_DISABLE:"get_return_key_disable",
+            SET_LAYOUT:"set_layout",
+            GET_LAYOUT:"get_layout",
+            RESET_INPUT_CONTEXT:"reset_input_context",
+            PROCESS_KEY_EVENT:"process_key_event",
+
+            LOG:"log",
+            COMMIT_STRING:"commit_string",
+            UPDATE_PREEDIT_STRING:"update_preedit_string",
+            SEND_KEY_EVENT:"send_key_event",
+            SEND_MOUSE_KEY:"send_mouse_key",
+            SEND_MOUSE_MOVE:"send_mouse_move",
+            SEND_WHEEL_MOVE:"send_wheel_move",
+            SEND_AIR_INPUT:"send_air_input",
+            SEND_AIR_SETTING:"send_air_setting",
+            FORWARD_KEY_EVENT:"forward_key_event",
+            SET_KEYBOARD_SIZES:"set_keyboard_sizes",
+            CONNECT:"connect"
+        };
+
+        this.log = function(str) {
+            if (this.socket !== "undefined") {
+                this.socket.send(
+                    this.MessageTypes.PLAIN + "|" +
+                    this.MessageCommands.LOG + "|" +
+                    str);
+            }
+        };
+        this.commitString = function(str) {
+            if (this.socket !== "undefined") {
+                this.socket.send(
+                    this.MessageTypes.PLAIN + "|" +
+                    this.MessageCommands.COMMIT_STRING + "|" +
+                    str);
+            }
+        };
+        this.updatePreeditString = function(str) {
+            if (this.socket !== "undefined") {
+                this.socket.send(
+                    this.MessageTypes.PLAIN + "|" +
+                    this.MessageCommands.UPDATE_PREEDIT_STRING + "|" +
+                    str);
+            }
+        };
+        this.sendKeyEvent = function(code) {
+            if (this.socket !== "undefined") {
+                this.socket.send(
+                    this.MessageTypes.PLAIN + "|" +
+                    this.MessageCommands.SEND_KEY_EVENT + "|" +
+                    code);
+            }
+        };
+        this.sendMouse_KeyEvent = function(code) {
+            if (this.socket !== "undefined") {
+                this.socket.send(
+                    this.MessageTypes.PLAIN + "|" +
+                    this.MessageCommands.SEND_MOUSE_KEY + "|" +
+                    code);
+            }
+        };
+        this.sendMouse_MoveEvent = function(code) {
+            if (this.socket !== "undefined") {
+                this.socket.send(
+                    this.MessageTypes.PLAIN + "|" +
+                    this.MessageCommands.SEND_MOUSE_MOVE + "|" +
+                    code);
+            }
+        };
+        this.sendWheel_MoveEvent = function(code) {
+            if (this.socket !== "undefined") {
+                this.socket.send(
+                    this.MessageTypes.PLAIN + "|" +
+                    this.MessageCommands.SEND_WHEEL_MOVE + "|" +
+                    code);
+            }
+        };
+        this.sendAir_Input = function(code) {
+            if (this.socket !== "undefined") {
+                this.socket.send(
+                    this.MessageTypes.PLAIN + "|" +
+                    this.MessageCommands.SEND_AIR_INPUT + "|" +
+                    code);
+            }
+        };
+        this.sendAir_Setting = function(code) {
+            if (this.socket !== "undefined") {
+                this.socket.send(
+                    this.MessageTypes.PLAIN + "|" +
+                    this.MessageCommands.SEND_AIR_SETTING + "|" +
+                    code);
+            }
+        };
+
+        this.forwardKeyEvent = function(code) {
+            if (this.socket !== "undefined") {
+                this.socket.send(
+                    this.MessageTypes.PLAIN + "|" +
+                    this.MessageCommands.FORWARD_KEY_EVENT + "|" +
+                    code);
+            }
+        };
+        this.setKeyboardSizes = function(portraitWidth, portraitHeight, landscapeWidth, landscapeHeight) {
+            if (this.socket !== "undefined") {
+                this.socket.send(
+                    this.MessageTypes.PLAIN + "|" +
+                    this.MessageCommands.SET_KEYBOARD_SIZES + "|" +
+                    portraitWidth + "|" + portraitHeight + "|" +
+                    landscapeWidth + "|" + landscapeHeight);
+            }
+        };
+        this.replyGetImdata = function(data) {
+            if (this.socket !== "undefined") {
+                this.socket.send(
+                    this.MessageTypes.REPLY + "|" +
+                    this.MessageCommands.GET_IMDATA + "|" +
+                    data);
+            }
+        };
+        this.replyProcessKeyEvent = function(ret) {
+            if (this.socket !== "undefined") {
+                this.socket.send(
+                    this.MessageTypes.REPLY + "|" +
+                    this.MessageCommands.PROCESS_KEY_EVENT + "|" +
+                    ret);
+            }
+        };
+        this.defaultHandler = function (items) {
+            if (items[1] === this.MessageCommands.INIT) {
+                client.onInit();
+            }
+            if (items[1] === this.MessageCommands.EXIT) {
+                client.onExit();
+            }
+            if (items[1] === this.MessageCommands.FOCUS_IN) {
+                client.onFocusIn(items[2]);
+            }
+            if (items[1] === this.MessageCommands.FOCUS_OUT) {
+                client.onFocusOut(items[2]);
+            }
+
+            if (items[1] === this.MessageCommands.SHOW) {
+                client.onShow(items[2]);
+            }
+            if (items[1] === this.MessageCommands.HIDE) {
+                client.onHide(items[2]);
+            }
+
+            if (items[1] === this.MessageCommands.SET_ROTATION) {
+                client.onSetRotation(items[2]);
+            }
+
+            if (items[1] === this.MessageCommands.UPDATE_CURSOR_POSITION) {
+                client.onUpdateCursorPosition(items[2], items[3]);
+            }
+
+            if (items[1] === this.MessageCommands.SET_LANGUAGE) {
+                client.onSetLanguage(items[2]);
+            }
+
+            if (items[1] === this.MessageCommands.SET_IMDATA) {
+                client.onSetImdata(items[2], items[3]);
+            }
+            if (items[1] === this.MessageCommands.GET_IMDATA) {
+                client.onGetImdata();
+            }
+
+            if (items[1] === this.MessageCommands.SET_RETURN_KEY_TYPE) {
+                client.onSetReturnKeyType(items[2]);
+            }
+            if (items[1] === this.MessageCommands.GET_RETURN_KEY_TYPE) {
+                client.onGetReturnKeyType();
+            }
+
+            if (items[1] === this.MessageCommands.SET_RETURN_KEY_DISABLE) {
+                client.onSetReturnKeyDisable(items[2]);
+            }
+            if (items[1] === this.MessageCommands.GET_RETURN_KEY_DISABLE) {
+                client.onGetReturnKeyDisable();
+            }
+
+            if (items[1] === this.MessageCommands.SET_LAYOUT) {
+                client.onSetLayout(items[2]);
+            }
+            if (items[1] === this.MessageCommands.GET_LAYOUT) {
+                client.onGetLayout();
+            }
+
+            if (items[1] === this.MessageCommands.RESET_INPUT_CONTEXT) {
+                client.onResetInputContext(items[2]);
+            }
+
+            if (items[1] === this.MessageCommands.PROCESS_KEY_EVENT) {
+                client.onProcessKeyEvent(items[2], items[3], items[4]);
+            }
+        };
+
+        this.getAppropriateWsUrl = function() {
+
+            var pcol;
+            var u = document.URL;
+
+
+            if (u.substring(0, 5) == "https") {
+                pcol = "wss://";
+                u = u.substr(8);
+            } else {
+                pcol = "ws://";
+                if (u.substring(0, 4) == "http")
+                    u = u.substr(7);
+            }
+
+            u = u.split('/');
+            return pcol + u[0];
+        };
+
+        this.connectWebSocket = function() {
+            if (typeof MozWebSocket != "undefined") {
+                this.socket =
+                    new MozWebSocket(this.getAppropriateWsUrl(), "keyboard-protocol");
+            } else {
+                this.socket =
+                    new WebSocket(this.getAppropriateWsUrl(), "keyboard-protocol");
+            }
+        };
+
+        this.activate = function() {
+            this.connectWebSocket();
+            this.registerHandlers(this);
+        };
+
+        this.registerHandlers = function(handler) {
+            try {
+                this.socket.onopen = function() {
+                    this.send(
+                    handler.MessageTypes.PLAIN + "|" +
+                    handler.MessageCommands.CONNECT + "|" +
+                    "websocket");
+                };
+
+                this.socket.onmessage = function(msg) {
+                    var items = msg.data.split("|");
+                    handler.defaultHandler(items);
+                };
+
+                this.socket.onclose = function(evt) {
+                    /* Try to reconnect if disconnected uncleanly */
+                    if (evt.wasClean === false) {
+                        /*
+                        setTimeout((function(handler) {
+                            alert("connecting again!");
+                            this.connectWebSocket();
+                            this.registerHandlers(this);
+                        }).call(handler), 500);
+                        */
+                    }
+                };
+            } catch(exception) {
+                alert(exception);
+            }
+        };
+    }
+};
index a137c0e..5b6af6f 100644 (file)
@@ -17,7 +17,11 @@ AM_CPPFLAGS = -I$(top_builddir) \
            -DSCIM_MODULE_PATH=\"@SCIM_MODULE_PATH@\" \
            -DSCIM_TEMPDIR=\"@SCIM_TEMPDIR@\"
 
-noinst_HEADERS = isf_panel_utility.h
+noinst_HEADERS = isf_panel_utility.h \
+              websocketserver.h \
+              motion_input.h \
+              remote_input.h
+
 
 if ISF_BUILD_PANEL_EFL
 CONFIG_SCIM_PANEL_EFL  = isf-panel-efl
@@ -26,6 +30,9 @@ endif
 bin_PROGRAMS           = $(CONFIG_SCIM_PANEL_EFL)
 
 isf_panel_efl_SOURCES  = isf_panel_efl.cpp \
+                         motion_input.cpp \
+                         remote_input.cpp \
+                         websocketserver.cpp \
                          isf_panel_utility.cpp
 
 isf_panel_efl_CXXFLAGS = @ECOREX_CFLAGS@ \
@@ -39,6 +46,8 @@ isf_panel_efl_CXXFLAGS = @ECOREX_CFLAGS@ \
                          @TTS_CFLAGS@ \
                          @EDBUS_CFLAGS@ \
                          @BLUETOOTH_CFLAGS@ \
+                         @OPENCV_CFLAGS@ \
+                         @LIBWEBSOCKETS_CFLAGS@ \
                          @FEEDBACK_CFLAGS@ \
                          @APP_CONTROL_CFLAGS@ \
                          @PKGMGR_INFO_CFLAGS@ \
@@ -56,6 +65,8 @@ isf_panel_efl_LDFLAGS  = @LTLIBINTL@ -rpath $(libdir) \
                          @TTS_LIBS@ \
                          @EDBUS_LIBS@ \
                          @BLUETOOTH_LIBS@ \
+                         @OPENCV_LIBS@ \
+                         @LIBWEBSOCKETS_LIBS@ \
                          @FEEDBACK_LIBS@ \
                          @APP_CONTROL_LIBS@ \
                          @PKGMGR_INFO_LIBS@ \
diff --git a/ism/extras/efl_panel/MotionDataType.h b/ism/extras/efl_panel/MotionDataType.h
new file mode 100644 (file)
index 0000000..667089f
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef _MOTIONDATATYPE_H
+#define _MOTIONDATATYPE_H
+
+#ifndef PI
+#define PI 3.1415926535897932384626433832795
+#endif
+#ifndef MAX
+#define MAX(a, b) ( ( (a) > (b) ) ? (a) : (b) )
+#endif
+#ifndef MIN
+#define MIN(a, b) ( ( (a) < (b) ) ? (a) : (b) )
+#endif
+
+struct Point2D
+{
+    int x;
+    int y;
+
+    Point2D() : x(0), y(0){};
+    Point2D(int x, int y) : x(x), y(y){};
+};
+struct Point2Df
+{
+    double x;
+    double y;
+
+    Point2Df() : x(0), y(0){};
+    Point2Df(double x, double y) : x(x), y(y){};
+};
+struct Point3Df
+{
+    double x;
+    double y;
+    double z;
+
+    Point3Df() : x(0), y(0), z(0){};
+    Point3Df(double x, double y, double z) : x(x), y(y), z(z){};
+};
+
+#endif //MotionDataType
index 3a15ca6..5f62a93 100644 (file)
@@ -85,6 +85,8 @@
 #include "isf_pkg.h"
 #include "privilege_checker.h"
 
+#include "remote_input.h"
+
 using namespace scim;
 
 
@@ -242,6 +244,8 @@ static void       slot_set_keyboard_mode               (int mode);
 static void       slot_get_ise_state                   (int &state);
 static void       slot_start_default_ise               (void);
 static void       slot_stop_default_ise                (void);
+static void       slot_enable_remote_input             (void);
+static void       slot_disable_remote_input            (void);
 
 static void       slot_run_helper                      (const String &uuid, const String &config, const String &display);
 
@@ -458,6 +462,9 @@ static bool               feedback_initialized              = false;
 static E_DBus_Connection     *edbus_conn;
 static E_DBus_Signal_Handler *edbus_handler;
 
+static Remote_Input*        remote_input_impl               = NULL;
+static bool               launch_remote_input               = false;
+
 #if HAVE_ECOREX
 static Ecore_Event_Handler *_candidate_show_handler         = NULL;
 #endif
@@ -3985,6 +3992,8 @@ static bool initialize_panel_agent (const ConfigPointer& config, const String &d
     _info_manager->signal_connect_start_default_ise          (slot (slot_start_default_ise));
     _info_manager->signal_connect_stop_default_ise           (slot (slot_stop_default_ise));
     _info_manager->signal_connect_show_panel                 (slot (slot_show_helper_ise_selector));
+    _info_manager->signal_connect_enable_remote_input        (slot (slot_enable_remote_input));
+    _info_manager->signal_connect_disable_remote_input       (slot (slot_disable_remote_input));
 
     _info_manager->signal_connect_get_recent_ise_geometry    (slot (slot_get_recent_ise_geometry));
     _info_manager->signal_connect_check_privilege_by_sockfd  (slot (slot_check_privilege_by_sockfd));
@@ -5848,6 +5857,18 @@ static void slot_register_helper_properties (int id, const PropertyList &props)
 #endif
 }
 
+static void slot_enable_remote_input (void)
+{
+    SCIM_DEBUG_MAIN (3) << __FUNCTION__ << "...\n";
+    LOGD("Enable remote input");
+}
+
+static void slot_disable_remote_input (void)
+{
+    SCIM_DEBUG_MAIN (3) << __FUNCTION__ << "...\n";
+    LOGD("Disable remote input");
+}
+
 static void slot_show_ise (void)
 {
     SCIM_DEBUG_MAIN (3) << __FUNCTION__ << "...\n";
@@ -7333,6 +7354,15 @@ int main (int argc, char *argv [])
     if (ret != BT_ERROR_NONE)
         LOGW ("bt_deinitialize failed: %d\n", ret);
 #endif
+    launch_remote_input = scim_global_config_read (String (SCIM_GLOBAL_CONFIG_LAUNCH_REMOTE_INPUT), launch_remote_input);
+     /* Create remote input */
+    if (launch_remote_input) {
+         LOGD("remote input start");
+         remote_input_impl = new Remote_Input();
+         if (remote_input_impl) {
+             remote_input_impl->init(_info_manager);
+         }
+    }
 
 #if HAVE_ECOREX
     if (xclient_message_handler) {
diff --git a/ism/extras/efl_panel/motion_input.cpp b/ism/extras/efl_panel/motion_input.cpp
new file mode 100644 (file)
index 0000000..57c8531
--- /dev/null
@@ -0,0 +1,290 @@
+#include "motion_input.h"
+#include <opencv2/opencv.hpp>
+
+template<typename _Tp>
+void hpfitler(const _Tp* Y, _Tp* Trend, int numObs, double smoothing)
+{
+    if (numObs < 2)
+    {
+        return;
+    }
+
+    CvMat* A=cvCreateMat(numObs,numObs,CV_32FC1);
+    cvZero(A);
+    CvMat* b= cvCreateMat(numObs,1,CV_32FC1);
+    for (int i=0;i<numObs;i++)
+    {
+        cvSetReal1D(b,i,Y[i]);
+    }
+    if (numObs==3)
+    {
+        for (int i=0;i<numObs;i++)
+        {
+            cvSetReal2D(A,i,i,smoothing);
+        }
+        CvMat* A_mul= cvCreateMat(3,3,CV_32FC1);
+        float A_mul_float[]={ 1, -2, 1, -2, 4, -2, 1, -2, 1};
+        cvSetData(A_mul,A_mul_float,CV_AUTOSTEP);
+        cvMatMul(A,A_mul,A);
+        cvReleaseMat(&A_mul);
+    }
+    else
+    {
+        float e[]={smoothing,-4*smoothing,(1+6*smoothing),-4*smoothing,smoothing};
+        for (int i=0;i<numObs;i++)
+        {
+            cvSetReal2D(A,i,i,e[2]);
+        }
+        for (int i=0;i<numObs-1;i++)
+        {
+            cvSetReal2D(A,i,i+1,e[1]);
+            cvSetReal2D(A,i+1,i,e[1]);
+        }
+        for (int i=0;i<numObs-2;i++)
+        {
+            cvSetReal2D(A,i,i+2,e[0]);
+            cvSetReal2D(A,i+2,i,e[0]);
+        }
+        cvSetReal2D(A,0,0,1+smoothing);
+        cvSetReal2D(A,0,1,-2*smoothing);
+        cvSetReal2D(A,1,0,-2*smoothing);
+        cvSetReal2D(A,1,1,1+5*smoothing);
+        cvSetReal2D(A,numObs-2,numObs-2,1+5*smoothing);
+        cvSetReal2D(A,numObs-2,numObs-1,-2*smoothing);
+        cvSetReal2D(A,numObs-1,numObs-2,-2*smoothing);
+        cvSetReal2D(A,numObs-1,numObs-1,1+smoothing);
+    }
+    CvMat* Trend_x= cvCreateMat(numObs,1,CV_32FC1);
+
+    cvSolve(A,b,Trend_x);
+
+    for (int i=0;i<Trend_x->rows;i++)
+    {
+        Trend[i]=Trend_x->data.fl[i];
+    }
+    cvReleaseMat(&Trend_x);
+    cvReleaseMat(&b);
+    cvReleaseMat(&A);
+}
+void hpfitler(std::deque<Point2Df>& pY, std::deque<Point2Df>& pTrend, double smoothing)
+{
+    if (pTrend.empty())
+    {
+        pTrend=pY;
+    }
+    int Ylength=pY.size();
+    float *Y=new float[Ylength];
+    float *Trend=new float[Ylength];
+
+    for (int i=0;i<Ylength;i++)
+        Y[i]=pY[i].x;
+    hpfitler<float>(Y,Trend,Ylength,smoothing);
+    for (int i=0;i<Ylength;i++)
+        pTrend[i].x=Trend[i];
+
+    for (int i=0;i<Ylength;i++)
+        Y[i]=pY[i].y;
+    hpfitler<float>(Y,Trend,Ylength,smoothing);
+    for (int i=0;i<Ylength;i++)
+        pTrend[i].y=Trend[i];
+
+    delete[] Y;
+    delete[] Trend;
+}
+void hpfitler(std::deque<Point3Df>& pY, std::deque<Point3Df>& pTrend, double smoothing)
+{
+    if (pTrend.empty())
+    {
+        pTrend=pY;
+    }
+    int Ylength=pY.size();
+    float *Y=new float[Ylength];
+    float *Trend=new float[Ylength];
+
+    for (int i=0;i<Ylength;i++)
+        Y[i]=pY[i].x;
+    hpfitler<float>(Y,Trend,Ylength,smoothing);
+    for (int i=0;i<Ylength;i++)
+        pTrend[i].x=Trend[i];
+
+    for (int i=0;i<Ylength;i++)
+        Y[i]=pY[i].y;
+    hpfitler<float>(Y,Trend,Ylength,smoothing);
+    for (int i=0;i<Ylength;i++)
+        pTrend[i].y=Trend[i];
+
+    for (int i=0;i<Ylength;i++)
+        Y[i]=pY[i].z;
+    hpfitler<float>(Y, Trend, Ylength, smoothing);
+    for (int i=0;i<Ylength;i++)
+        pTrend[i].z=Trend[i];
+
+    delete[] Y;
+    delete[] Trend;
+}
+
+Motion_Input::Motion_Input()
+{
+    _GyrFilterBuffer.clear();
+    _AccFilterBuffer.clear();
+    _Cursor_acc_val = 1.0;
+    _Cursor_gain_val = 1.0;  //16:9
+    _Cursor_smooth_val = 20;
+    _Cursor_speed_val = 1.0;
+    _uinput_fd = 0;
+    _filterNumber = 5;
+}
+Motion_Input::~Motion_Input()
+{
+
+}
+
+bool Motion_Input::filter_raw_sensor_data(Point3Df *origin_AccData, Point3Df *origin_GyrData)
+{
+    //int filterNumber = 20;
+    Point3Df AccData;
+    Point3Df GyrData;
+
+    this->copy_sensor_data(origin_AccData, &AccData);
+    this->copy_sensor_data(origin_GyrData, &GyrData);
+
+    _GyrFilterBuffer.push_back(GyrData);
+    _AccFilterBuffer.push_back(AccData);
+
+    if (_GyrFilterBuffer.size() > _filterNumber)
+    {
+        _GyrFilterBuffer.pop_front();
+        std::deque<Point3Df> filter_points(_GyrFilterBuffer.size());
+        hpfitler(_GyrFilterBuffer, filter_points, _Cursor_smooth_val);
+
+        //this->_GyroData = filter_points[_filterNumber - 1];
+
+        double gyr_mean = this->cal_gyr_mean();
+        double val_xyz = GyrData.x * GyrData.x + GyrData.y * GyrData.y + GyrData.z * GyrData.z;
+
+        double zoom_m = 1 / (1 + 1000 * exp(-gyr_mean));
+        double rate_m = 1 / (1 + 10 * exp(-gyr_mean / 100));
+        double rate_xyz = 1 / (1 + 10 * exp(-val_xyz / 200));
+        double rate = MIN(rate_xyz / rate_m, 1.);
+
+        GyrData.x = zoom_m * (GyrData.x * (1 - rate) + filter_points[_filterNumber - 1].x * rate);
+        GyrData.y = zoom_m * (GyrData.y * (1 - rate) + filter_points[_filterNumber - 1].y * rate);
+        GyrData.z = zoom_m * (GyrData.z * (1 - rate) + filter_points[_filterNumber - 1].z * rate);
+    }
+
+    if (_AccFilterBuffer.size() > _filterNumber)
+    {
+        _AccFilterBuffer.pop_front();
+        std::deque<Point3Df> filter_points(_AccFilterBuffer.size());
+        hpfitler(_AccFilterBuffer, filter_points, _Cursor_smooth_val);
+        AccData = filter_points[_filterNumber - 1];
+    }
+
+    this->copy_sensor_data(&AccData, origin_AccData);
+    this->copy_sensor_data(&GyrData, origin_GyrData);
+
+    return true;
+}
+bool Motion_Input::calculate_cursor_delta_value( Point3Df AccData, Point3Df GyrData, Point2D *Cursor_delta)
+{
+    int y_offset, x_offset;
+    //double scale_rate = 1. / 1000;
+
+    AccData.x *= _Cursor_acc_val;
+    AccData.y *= _Cursor_acc_val;
+    AccData.z *= _Cursor_acc_val;
+/*
+    GyrData.x *= _Cursor_gain_val;
+    GyrData.x *= _Cursor_gain_val;
+    GyrData.x *= _Cursor_gain_val;
+
+    double a_norm = GyrData.x * GyrData.x + GyrData.y * GyrData.y + GyrData.z * GyrData.z;
+    double g_norm = AccData.x * AccData.x + AccData.y * AccData.y + AccData.z * AccData.z;
+    scale_rate *= 1 / (1 + 20 * exp(-a_norm));
+    scale_rate *= 1 / (1 + 20 * exp(-a_norm / 2));
+*/
+
+    double xz_force = sqrt(AccData.x * AccData.x + AccData.z * AccData.z);
+    double x_sin = AccData.x / xz_force;
+    double z_sin = AccData.z / xz_force;
+
+
+    x_offset =(- x_sin * GyrData.x - z_sin * GyrData.z) *_Cursor_gain_val;
+    y_offset =(x_sin * GyrData.z - z_sin * GyrData.x)*_Cursor_gain_val;
+
+/*
+    x_offset = scale_rate * (- x_sin * _GyroData.x - z_sin * _GyroData.z) * _ImageWidth;
+    y_offset = scale_rate * (x_sin * _GyroData.z - z_sin * _GyroData.x) * _ImageWidth;
+*/
+    Cursor_delta->x = x_offset;
+    Cursor_delta->y = y_offset;
+
+    return true;
+}
+bool Motion_Input::Set_cursor_movement_acceleration(double Cursor_acc_val)
+{
+
+    _Cursor_acc_val = Cursor_acc_val;
+    return true;
+}
+
+bool Motion_Input::Set_cursor_movement_gain(double Cursor_gain_val)
+{
+
+    _Cursor_gain_val = Cursor_gain_val;  //16:9
+    return true;
+}
+
+bool Motion_Input::Set_cursor_movement_smoothness(int Cursor_smooth_val)
+{
+
+    _Cursor_smooth_val = Cursor_smooth_val;
+    return true;
+}
+
+bool Motion_Input::Set_cursor_movement_speed(double Cursor_speed_val)
+{
+
+    _Cursor_speed_val = Cursor_speed_val;
+    return true;
+}
+bool Motion_Input::Set_filter_number(int filter_number)
+{
+
+    _filterNumber = filter_number;
+    _GyrFilterBuffer.clear();
+    _AccFilterBuffer.clear();
+    return true;
+}
+bool Motion_Input::copy_sensor_data(Point3Df *source_Data, Point3Df *Data)
+{
+    if (!source_Data || !Data )
+        return false;
+
+    Data->x = source_Data->x;
+    Data->y = source_Data->y;
+    Data->z = source_Data->z;
+
+    return true;
+}
+
+double Motion_Input::cal_gyr_mean()
+{
+    int judge_len = _filterNumber;
+    int buf_num =  _GyrFilterBuffer.size();
+    int start_frame = buf_num - judge_len;
+    if (buf_num < judge_len) return -1;
+
+    Point3Df gyr_mean(0, 0, 0);
+
+    for(int i = start_frame; i < buf_num; i++){
+        gyr_mean.x += _GyrFilterBuffer[i].x;
+        gyr_mean.y += _GyrFilterBuffer[i].y;
+        gyr_mean.z += _GyrFilterBuffer[i].z;
+    }
+    gyr_mean.x /= judge_len;
+    gyr_mean.y /= judge_len;
+    gyr_mean.z /= judge_len;
+
+    return gyr_mean.x * gyr_mean.x + gyr_mean.y * gyr_mean.y + gyr_mean.z * gyr_mean.z;
+}
diff --git a/ism/extras/efl_panel/motion_input.h b/ism/extras/efl_panel/motion_input.h
new file mode 100644 (file)
index 0000000..2d821c5
--- /dev/null
@@ -0,0 +1,52 @@
+#pragma once
+
+#include "MotionDataType.h"
+#include <iostream>
+#include <vector>
+#include <deque>
+
+using namespace std;
+
+class Motion_Input
+{
+public :
+    Point2D _Cursor_delta;      // Mouse delta X,Y in screen
+
+private:
+    deque<Point3Df>  _GyrFilterBuffer;
+    deque<Point3Df>  _AccFilterBuffer;
+
+    double _Cursor_acc_val;
+    double _Cursor_gain_val;  //16:9
+    int _Cursor_smooth_val;
+    double _Cursor_speed_val;
+    int _uinput_fd;
+    int _filterNumber;
+
+public:
+
+    Motion_Input();
+    ~Motion_Input();
+
+    void init_motion_input();
+
+    bool calculate_cursor_delta_value( Point3Df AccData, Point3Df GyrData, Point2D *Cursor_delta);
+
+    bool filter_raw_sensor_data(Point3Df *origin_AccData, Point3Df *origin_GyrData);
+
+    bool Set_cursor_movement_acceleration(double Cursor_acc_val);
+
+    bool Set_cursor_movement_gain(double Cursor_gain_val);
+
+    bool Set_cursor_movement_smoothness(int Cursor_smooth_val);
+
+    bool Set_cursor_movement_speed(double Cursor_speed_val);
+
+    bool Set_filter_number(int filter_number);
+
+    //calculate history mean gyroscope value
+    double cal_gyr_mean();
+
+    bool copy_sensor_data(Point3Df *source_Data, Point3Df *Data);
+
+};
diff --git a/ism/extras/efl_panel/remote_input.cpp b/ism/extras/efl_panel/remote_input.cpp
new file mode 100644 (file)
index 0000000..a077f00
--- /dev/null
@@ -0,0 +1,771 @@
+/*
+ * ISF(Input Service Framework)
+ *
+ * ISF is based on SCIM 1.4.7 and extended for supporting more mobile fitable.
+ * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
+ *
+ * Contact: Inhong Han <inhong1.han@samsung.com>
+ *
+ * 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.
+ *
+ * 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.
+ *
+ * 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
+ *
+ */
+
+#include "remote_input.h"
+#include <math.h>
+#include <iostream>
+
+using namespace scim;
+
+extern std::vector<String>          _uuids;
+extern std::vector<String>          _names;
+extern std::vector<String>          _module_names;
+extern std::vector<String>          _langs;
+extern std::vector<String>          _icons;
+extern std::vector<uint32>          _options;
+extern std::vector<TOOLBAR_MODE_T>  _modes;
+
+static InfoManager*      _info_manager;
+
+static unsigned int _ise_selector_ise_idx = 0;
+
+// Global variables for remote keyboard
+int priv_id;
+int ret;
+notification_h noti = NULL;
+int noti_count = 0;
+unsigned int preedit_from_remote = 0;
+
+char tv_ip_address[128] = {0};
+char tv_id[128] = {0};
+char db_server_ip[128] = {0};
+
+static WebSocketServer *g_web_socket_server = NULL;
+Remote_Input* Remote_Input::m_instance = NULL;
+
+int entry_focused = 0;
+static Motion_Input motion_input;
+
+// curl enum value //
+enum {
+    ERROR_ARGS = 1 ,
+    ERROR_CURL_INIT = 2
+} ;
+
+enum {
+    OPTION_FALSE = 0 ,
+    OPTION_TRUE = 1
+} ;
+
+enum {
+    FLAG_DEFAULT = 0
+} ;
+
+static size_t showSize( void *source , size_t size , size_t nmemb , void *userData ){
+    // we don't touch the data here, so the cast is commented out
+    const char* data = static_cast< const char* >( source ) ;
+    const int bufferSize = size * nmemb ;
+    LOGD ("received TV ID : %s", data);
+    strcpy(tv_id, data);
+
+    return bufferSize;
+}
+
+void get_current_ip()
+{
+    int sock_fd;
+    struct ifconf conf;
+    struct ifreq* ifr;
+    struct sockaddr_in* sin = NULL;
+    char buff[128];
+    int num, i;
+
+    sock_fd = socket(PF_INET, SOCK_DGRAM, 0);
+    if (sock_fd < 0)
+    {
+        LOGD ("Fail to create socket");
+        return;
+    }
+    conf.ifc_len = 128;
+    conf.ifc_buf = buff;
+
+    ioctl(sock_fd, SIOCGIFCONF, &conf);
+    num = conf.ifc_len / sizeof(struct ifreq);
+    ifr = conf.ifc_req;
+
+    for (i = 0; i < num; i++)
+    {
+        sin = (struct sockaddr_in*)(&ifr->ifr_addr);
+
+        ioctl(sock_fd, SIOCGIFFLAGS, ifr);
+        if (((ifr->ifr_flags & IFF_LOOPBACK) == 0)
+                && (ifr->ifr_flags & IFF_UP))
+        {
+            char noti_str[128] = {0};
+            strcat(noti_str, ifr->ifr_name);
+            strcat(noti_str, ":http://");
+            strcat(noti_str, inet_ntoa(sin->sin_addr));
+            strcat(noti_str, ":7172");
+//            post_notification("Wifi ", noti_str);
+        }
+        ifr++;
+    }
+
+    tv_ip_address[0] = '\0';
+    //strcat(tv_ip_address, "http://");
+    strcat(tv_ip_address, inet_ntoa(sin->sin_addr));
+    strcat(tv_ip_address, ":7172");
+
+    close(sock_fd);
+}
+
+Remote_Input::Remote_Input()
+{
+    if (m_instance != NULL) {
+        LOGD("WARNING : m_instance is NOT NULL");
+    }
+    m_instance = this;
+    fd_uinput_keyboard = 0;
+    fd_uinput_mouse = 0;
+}
+
+Remote_Input::~Remote_Input()
+{
+    if (m_instance == this) {
+        m_instance = NULL;
+    }
+}
+
+Remote_Input*
+Remote_Input::get_instance()
+{
+    return m_instance;
+}
+
+void Remote_Input::init (InfoManager* info_manager)
+{
+    LOGD("Remote Input init");
+    /* Create web socket server for remote input */
+    g_web_socket_server = new WebSocketServer();
+    if (g_web_socket_server) {
+        g_web_socket_server->init();
+    }
+
+    /* Create uinput device for remote input */
+    if (!init_uinput_keyboard_device())
+    {
+        LOGD ("Fail to create uinput device for keyboard");
+    }
+    if (!init_uinput_mouse_device())
+    {
+        LOGD ("Fail to create uinput device for mouse");
+    }
+
+    if (info_manager != NULL) {
+        _info_manager = info_manager;
+    } else {
+        LOGW("Error panel_agent is NULL !!");
+    }
+
+}
+
+void Remote_Input::exit()
+{
+    /* Delete web socket server */
+    if (g_web_socket_server) delete g_web_socket_server;
+
+    /* Close uinput device */
+    if(ioctl(fd_uinput_keyboard, UI_DEV_DESTROY) < 0)
+    {
+        LOGD ( "error destroy\n");
+    }
+    close(fd_uinput_keyboard);
+
+    if(ioctl(fd_uinput_mouse, UI_DEV_DESTROY) < 0)
+    {
+        LOGD ("error destroy\n");
+    }
+    close(fd_uinput_mouse);
+}
+
+bool Remote_Input::init_uinput_keyboard_device() {
+    //For initialize uinput device for keyboard
+     struct uinput_user_dev device_key;
+     int uinput_keys[] = {KEY_POWER, KEY_F6, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_MINUS, KEY_0, KEY_REDO, KEY_F10, KEY_F9, KEY_F8, KEY_F7, KEY_F12, KEY_F11, KEY_LEFTMETA, KEY_HOMEPAGE, KEY_BOOKMARKS, KEY_MENU, KEY_F18, KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, KEY_ENTER, KEY_BACK, KEY_EXIT, KEY_ESC, KEY_BACKSPACE};
+     memset(&device_key, 0, sizeof device_key);
+
+     fd_uinput_keyboard = open("/dev/uinput", O_WRONLY | O_NONBLOCK);
+     if (fd_uinput_keyboard < 0)
+     {
+         LOGW ("Fail to open fd uinput_keyboard!\n");
+         return false;
+     }
+
+     strcpy(device_key.name,"Remote-Input(Keyboard)");
+     device_key.id.bustype = BUS_USB;
+     device_key.id.vendor = 1;
+     device_key.id.product = 1;
+     device_key.id.version = 1;
+
+     if (write(fd_uinput_keyboard, &device_key, sizeof(device_key)) != sizeof(device_key))
+     {
+         LOGW ("Fail to setup uinput structure on fd\n");
+         return false;
+     }
+
+     if (ioctl(fd_uinput_keyboard, UI_SET_EVBIT, EV_KEY) < 0)
+     {
+         LOGW ("Fail to enable EV_KEY event type\n");
+         return false;
+     }
+
+     if (ioctl(fd_uinput_keyboard, UI_SET_EVBIT, EV_SYN) < 0)
+     {
+         LOGW ("Fail to enable EV_SYN event type\n");
+         return false;
+     }
+
+     for (int i  = 0; i < sizeof(uinput_keys)/sizeof(uinput_keys[0]); i ++)
+     {
+         if (ioctl(fd_uinput_keyboard, UI_SET_KEYBIT, uinput_keys[i]) < 0)
+         {
+             LOGW ("Fail to register uinput event key : %d\n", uinput_keys[i]);
+             return false;
+         }
+     }
+
+     if (ioctl(fd_uinput_keyboard, UI_DEV_CREATE) < 0)
+     {
+         LOGW ("Fail to create keyboard uinput device\n");
+         return false;
+     }
+
+    return true;
+}
+
+bool Remote_Input::init_uinput_mouse_device() {
+    //For initialize uinput device for mouse
+    //     int fd_uinput_mouse = 0;
+
+    struct uinput_user_dev device_mouse;
+    int uinput_btns[] = {BTN_LEFT, BTN_RIGHT, BTN_MIDDLE};
+    int uinput_rel_axes[] = {REL_X, REL_Y, REL_WHEEL};
+    memset(&device_mouse, 0, sizeof device_mouse);
+
+    //open the device node
+    fd_uinput_mouse = open("/dev/uinput", O_WRONLY | O_NONBLOCK);
+    if (fd_uinput_mouse < 0)
+    {
+        LOGW ("Fail to open fd uinput_mouse!\n");
+        return false;
+    }
+
+    strcpy(device_mouse.name, "Remote-Input(Mouse)");
+    device_mouse.id.bustype = BUS_USB;
+    device_mouse.id.vendor = 1;
+    device_mouse.id.product = 1;
+    device_mouse.id.version = 1;
+
+    if (write(fd_uinput_mouse, &device_mouse, sizeof(device_mouse)) != sizeof(device_mouse))
+    {
+        LOGW ("Fail to setup uinput structure on fd\n");
+        return false;
+    }
+
+    if (ioctl(fd_uinput_mouse, UI_SET_EVBIT, EV_KEY) < 0)
+    {
+        LOGW ("Fail to enable EV_KEY event type\n");
+        return false;
+    }
+
+    for (int i  = 0; i < sizeof(uinput_btns)/sizeof(uinput_btns[0]); i++)
+    {
+        if (ioctl(fd_uinput_mouse, UI_SET_KEYBIT, uinput_btns[i]) < 0)
+        {
+            LOGW ("Fail to register uinput event key: %d\n", uinput_btns[i]);
+            return false;
+        }
+    }
+
+    if (ioctl(fd_uinput_mouse, UI_SET_EVBIT, EV_REL) < 0)
+    {
+        LOGW ("Fail to enable EV_REL event type\n");
+        return false;
+    }
+
+    for (int i  = 0; i < sizeof(uinput_rel_axes)/sizeof(uinput_rel_axes[0]); i++)
+    {
+        if (ioctl(fd_uinput_mouse, UI_SET_RELBIT, uinput_rel_axes[i]) < 0)
+        {
+            LOGW ("Fail to register uinput event key: %d\n", uinput_rel_axes[i]);
+            return false;
+        }
+    }
+
+    if (ioctl(fd_uinput_mouse, UI_SET_EVBIT, EV_SYN) < 0)
+    {
+        LOGW ("Fail to enable EV_SYN event type\n");
+        return false;
+    }
+
+    if (ioctl(fd_uinput_mouse,UI_DEV_CREATE) < 0)
+    {
+        LOGW ("Fail to create keyboard uinput device\n");
+        return false;
+    }
+
+    return true;
+}
+
+void Remote_Input::send_uinput_event(UINPUT_DEVICE device, __u16 type, __u16 code, __s32 value)
+{
+    struct input_event event;
+
+    memset(&event, 0, sizeof(event));
+    event.type = type;
+    event.code = code;
+    event.value = value;
+
+    if (device == UINPUT_KEYBOARD){
+        if (write(fd_uinput_keyboard, &event, sizeof(event)) != sizeof(event)) {
+            LOGW ("Error to send uinput event");
+        }
+    }
+    else if (device == UINPUT_MOUSE){
+        if (write(fd_uinput_mouse, &event, sizeof(event)) != sizeof(event)) {
+            LOGW ("Error to send uinput event");
+        }
+    }
+    else{
+        LOGW ("Fail to send uinput event because of device name!");
+    }
+}
+
+void Remote_Input::panel_send_uinput_event(UINPUT_DEVICE device, __u16 type, __u16 code, __s32 value)
+{
+    send_uinput_event(device, type, code, value);
+}
+
+void Remote_Input::panel_send_uinput_event_for_key(UINPUT_DEVICE device, __u16 code)
+{
+    panel_send_uinput_event (device, EV_KEY, code, 1);
+    panel_send_uinput_event (device, EV_SYN, SYN_REPORT, 0);
+    panel_send_uinput_event (device, EV_KEY, code, 0);
+    panel_send_uinput_event (device, EV_SYN, SYN_REPORT, 0);
+
+}
+
+void Remote_Input::panel_send_uinput_event_for_touch_mouse(UINPUT_DEVICE device, __s32 value_x, __s32 value_y)
+{
+    struct timespec sleeptime = {0, 50};//speed (low value: fast, high value: slow)
+    __s32 x, y, delta;
+
+    //mouse accelerate
+    delta = sqrt((value_x*value_x)+(value_y*value_y));
+
+    if (delta > 10){
+        x = (value_x*7);
+        y = (value_y*7);
+    }
+    else if (delta > 7){
+        x = (value_x*5);
+        y = (value_y*5);
+    }
+    else if (delta > 3){
+        x = (value_x*3);
+        y = (value_y*3);
+    }
+    else {
+        x = (value_x*2);
+        y = (value_y*2);
+    }
+    //LOGD("touch Move : x: %d,  y: %d, delta :%d", x, y, delta);
+    panel_send_uinput_event (device, EV_REL, REL_X, x);
+    panel_send_uinput_event (device, EV_REL, REL_Y, y);
+    panel_send_uinput_event (device, EV_SYN, SYN_REPORT, 0);
+    nanosleep(&sleeptime, NULL);
+
+}
+
+void Remote_Input::panel_send_uinput_event_for_wheel(UINPUT_DEVICE device, __s32 value_y)
+{
+    struct timespec sleeptime = {0, 800000};
+    __s32 y;
+
+    y = value_y / 4;
+
+    //LOGD("wheel value : %d, %d", value_y, y);
+    panel_send_uinput_event (device, EV_REL, REL_WHEEL, y);
+    panel_send_uinput_event (device, EV_SYN, SYN_REPORT, 0);
+    nanosleep(&sleeptime, NULL);
+}
+
+void Remote_Input::panel_send_uinput_event_for_air_mouse(UINPUT_DEVICE device, double data[])
+{
+    struct timespec sleeptime = {0, 100};//speed (low value: fast, high value: slow)
+    Point3Df AccData = Point3Df(data[0], data[1], data[2]);
+    Point3Df GyrData = Point3Df(data[3], data[4], data[5]);
+    Point2D Cursor_delta = Point2D(0,0);
+
+    LOGD("1) Acc x: %f, y: %f, z: %f, Gyro x: %f, y:%f, z:%f", AccData.x, AccData.y, AccData.z, GyrData.x, GyrData.y, GyrData.z);
+    motion_input.filter_raw_sensor_data(&AccData, &GyrData);
+    LOGD("2) Acc x: %f, y: %f, z: %f, Gyro x: %f, y:%f, z:%f", AccData.x, AccData.y, AccData.z, GyrData.x, GyrData.y, GyrData.z);
+
+    motion_input.calculate_cursor_delta_value(AccData, GyrData, &Cursor_delta);
+    LOGD("3) Cursor_delta.x : %d, y: %d", Cursor_delta.x, Cursor_delta.y);
+
+    panel_send_uinput_event (device, EV_REL, REL_X, Cursor_delta.x);
+    panel_send_uinput_event (device, EV_REL, REL_Y, Cursor_delta.y);
+    panel_send_uinput_event (device, EV_SYN, SYN_REPORT, 0);
+    nanosleep (&sleeptime, NULL);
+}
+
+void Remote_Input::reset_setting_value_for_air_mouse(double data[])
+{
+    LOGD("ISE_AIR_SETTING acc :%f, gain: %f, smooth: %f, speed: %f, filter: %f ", data[0], data[1],data[2],data[3],data[4]);
+
+    motion_input.Set_cursor_movement_acceleration(data[0]);
+    motion_input.Set_cursor_movement_gain(data[1]);
+    motion_input.Set_cursor_movement_smoothness((int)data[2]);
+    motion_input.Set_cursor_movement_speed(data[3]);
+    motion_input.Set_filter_number(data[4]);
+}
+
+void Remote_Input::handle_websocket_message(ISE_MESSAGE &message)
+{
+    LOGD("Received message : %s, %s, %s", message.type.c_str(), message.command.c_str() , message.values.at(0).c_str());
+
+    if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SEND_KEY_EVENT]) == 0) {
+        if (message.values.size() == 1) {
+            int e = atoi(message.values.at(0).c_str());
+            LOGD("send_key_event key num : %d", e);
+            switch (e) {
+                case 8://backspace
+                    LOGD ("back");
+                    _info_manager->forward_key_event(KeyEvent(SCIM_KEY_BackSpace));
+                    _info_manager->forward_key_event(KeyEvent(SCIM_KEY_BackSpace, SCIM_KEY_ReleaseMask));
+                    break;
+
+                case 13://enter
+                    LOGD ("enter");
+                    _info_manager->forward_key_event(KeyEvent(SCIM_KEY_Select));
+                    _info_manager->forward_key_event(KeyEvent(SCIM_KEY_Select, SCIM_KEY_ReleaseMask));
+                    break;
+
+                case 10001://Menu
+                    LOGD ("menu");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_LEFTMETA);
+                    break;
+
+                case 10002://Home
+                    LOGD ("home");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_HOMEPAGE);
+                    break;
+
+                case 10003://Back
+                    LOGD ("back");
+                    //panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_BACK); //for TDC, 2.4 binary
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_ESC); //for tv product binary
+                    break;
+
+                case 124://TV_KEY_POWER
+                    LOGD ("TV_KEY_POWER");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_POWER);
+                    break;
+
+                case 235://TV_KEY_SWITCHMODE
+                    LOGD ("TV_KEY_SWITCHMODE");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_F6);
+                    break;
+
+                case 179://TV_KEY_MENU
+                    LOGD ("TV_KEY_SHORT_MENU");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_MENU);
+                    break;
+
+                case 111://TV_KEY_UP
+                    LOGD ("TV_KEY_UP");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_UP);
+                    break;
+
+                case 69://TV_KEY_INFO
+                    LOGD ("TV_KEY_INFO");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_F18);
+                    break;
+
+                case 113://TV_KEY_LEFT
+                    LOGD ("TV_KEY_LEFT");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_LEFT);
+                    break;
+
+                case 36://TV_KEY_SELECT
+                    LOGD ("TV_KEY_SELECT");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_ENTER);
+                    break;
+
+                case 114://TV_KEY_RIGHT
+                    LOGD ("TV_KEY_RIGHT");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_RIGHT);
+                    break;
+
+                case 166://TV_KEY_BACK
+                    LOGD ("TV_KEY_BACK");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_BACK);
+                    break;
+
+                case 116://TV_KEY_DOWN
+                    LOGD ("TV_KEY_DOWN");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_DOWN);
+                    break;
+
+                case 182://TV_KEY_EXIT
+                    LOGD ("TV_KEY_EXIT");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_EXIT);
+                    break;
+
+                case 123://TV_KEY_VOL_UP
+                    LOGD ("TV_KEY_VOL_UP");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_F10);
+                    break;
+
+                case 121://TV_KEY_MUTE
+                    LOGD ("TV_KEY_MUTE");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_F8);
+                    break;
+
+                case 112://TV_KEY_CHAN_UP
+                    LOGD ("TV_KEY_CHAN_UP");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_F12);
+                    break;
+
+                case 122://TV_KEY_VOL_DOWN
+                    LOGD ("TV_KEY_VOL_DOWN");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_F9);
+                    break;
+
+                case 68://TV_KEY_CHAN_LIST
+                    LOGD ("TV_KEY_CHAN_LIST");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_F7);
+                    break;
+
+                case 117://TV_KEY_CHAN_DOWN
+                    LOGD ("TV_KEY_CHAN_DOWN");
+                    panel_send_uinput_event_for_key(UINPUT_KEYBOARD, KEY_F11);
+                    break;
+
+                case 304://GAME_A
+                    LOGD ("GAME_A");
+                    //panel_send_uinput_event_for_key(UINPUT_KEYBOARD, );
+                    //ecore_x_test_fake_key_press("BNT_A");
+                    break;
+
+                case 305://GAME_B
+                    LOGD ("GAME_B");
+                    //panel_send_uinput_event_for_key(UINPUT_KEYBOARD, );
+                    //ecore_x_test_fake_key_press("BNT_B");
+                    break;
+
+                case 307://GAME_X
+                    LOGD ("GAME_X");
+                    //panel_send_uinput_event_for_key(UINPUT_KEYBOARD, );
+                    //ecore_x_test_fake_key_press("BNT_X");
+                    break;
+
+                case 308://GAME_Y
+                    LOGD ("GAME_Y");
+                    //panel_send_uinput_event_for_key(UINPUT_KEYBOARD, );
+                    //ecore_x_test_fake_key_press("BNT_Y");
+                    break;
+
+                case 314://GAME_SELECT
+                    LOGD ("GAME_SELECT");
+                    //panel_send_uinput_event_for_key(UINPUT_KEYBOARD, );
+                    //ecore_x_test_fake_key_press("BNT_SELECT");
+                    break;
+
+                case 315://GAME_START
+                    LOGD ("GAME_START");
+                    //panel_send_uinput_event_for_key(UINPUT_KEYBOARD, );
+                    //ecore_x_test_fake_key_press("BNT_START");
+                    break;
+
+                default:
+                    LOGD ("unknow key=%d", e);
+                    break;
+            }
+        }
+    }
+
+    if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_LOG]) == 0) {
+        if (message.values.size() == 1) {
+            LOGD("Web_page LOG: %s", message.values.at(0).c_str());
+        }
+    }
+
+    if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_COMMIT_STRING]) == 0) {
+        if (message.values.size() == 1) {
+            scim::AttributeList attrs;
+            attrs.push_back(scim::Attribute(0, scim::utf8_mbstowcs((char*)message.values.at(0).c_str()).length(), scim::SCIM_ATTR_DECORATE, scim::SCIM_ATTR_DECORATE_UNDERLINE));
+
+            LOGD( "commit_str:|%s|", message.values.at(0).c_str());
+            _info_manager->commit_string(scim::utf8_mbstowcs((char*)message.values.at(0).c_str()));
+        }
+    }
+
+    if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_UPDATE_PREEDIT_STRING]) == 0) {
+        if (message.values.size() == 1) {
+            scim::AttributeList attrs;
+            attrs.push_back(scim::Attribute(0, scim::utf8_mbstowcs((char*)message.values.at(0).c_str()).length(), scim::SCIM_ATTR_DECORATE, scim::SCIM_ATTR_DECORATE_UNDERLINE));
+
+            if (preedit_from_remote == 1){
+                LOGD ("preedit:|%s| from same %d", message.values.at(0).c_str(),preedit_from_remote);
+                _info_manager->update_preedit_string(scim::utf8_mbstowcs((char*)message.values.at(0).c_str()), attrs);
+                preedit_from_remote = 1;
+            }
+            else{
+                //FIXME flush_imengine fuction need
+                //flush_immengine_by_remote();
+                LOGD ("preedit:|%s| from different %d", message.values.at(0).c_str(),preedit_from_remote);
+                _info_manager->update_preedit_string(scim::utf8_mbstowcs((char*)message.values.at(0).c_str()), attrs);
+                preedit_from_remote = 1;
+            }
+        }
+    }
+
+    if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SEND_MOUSE_KEY]) == 0) {
+        if (message.values.size() == 1) {
+
+            int e = atoi(message.values.at(0).c_str());
+            if (e == 555) {
+                panel_send_uinput_event_for_key(UINPUT_MOUSE, BTN_LEFT);
+            }
+        }
+    }
+
+    if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SEND_MOUSE_MOVE]) == 0) {
+        if (message.values.size() == 1) {
+
+            std::size_t tmp_offset = message.values.at(0).find(',');
+            int x = atoi(message.values.at(0).substr(0, tmp_offset).c_str());
+            int y = atoi(message.values.at(0).substr(tmp_offset+1).c_str());
+            panel_send_uinput_event_for_touch_mouse(UINPUT_MOUSE, (__s32)x, (__s32)y);
+        }
+    }
+
+    if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SEND_WHEEL_MOVE]) == 0) {
+        if (message.values.size() == 1) {
+
+            std::size_t tmp_offset = message.values.at(0).find(',');
+            int x = atoi(message.values.at(0).substr(0, tmp_offset).c_str());
+            int y = atoi(message.values.at(0).substr(tmp_offset+1).c_str());
+            panel_send_uinput_event_for_wheel(UINPUT_MOUSE, (__s32)y);
+        }
+    }
+
+    if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SEND_AIR_SETTING]) == 0) {
+        if (message.values.size() == 1) {
+
+            double set_data[5] = {0};
+            char *pch;
+            char *string = (char *)message.values.at(0).c_str();
+            int count=0;
+
+            pch = strtok (string,",");
+            while (pch !=NULL){
+                set_data[count++]=atof(pch);
+                pch = strtok (NULL,",");
+            }
+
+            LOGD( "2. SETTING data : %f, %f, %f, %f, %f" ,set_data[0],set_data[1],set_data[2],set_data[3],set_data[4] );
+            reset_setting_value_for_air_mouse(set_data);
+        }
+    }
+
+    if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SEND_AIR_INPUT]) == 0) {
+
+        if (message.values.size() == 1) {
+
+            double dataBuf[6] = {0};
+            char *pch;
+            char *string = (char *)message.values.at(0).c_str();
+            int count=0;
+
+            pch = strtok (string,",");
+            while (pch !=NULL){
+                dataBuf[count++]=atof(pch);
+                pch = strtok (NULL,",");
+            }
+            //LOGD( "2. CV Air Input data : %f, %f, %f, %f, %f, %f" ,dataBuf[0],dataBuf[1],dataBuf[2],dataBuf[3],dataBuf[4],dataBuf[5] );
+            panel_send_uinput_event_for_air_mouse(UINPUT_MOUSE, dataBuf);
+        }
+    }
+}
+
+void Remote_Input::post_notification(const char* _ptitle, const char* _ptext)
+{
+    if (_ptext == NULL)
+        return;
+    notification_status_message_post(_ptext);
+}
+
+void Remote_Input::ongoing_notification(const char* _ptitle, const char* _ptext)
+{
+    if (_ptext == NULL)
+        return;
+    noti = notification_create(NOTIFICATION_TYPE_ONGOING);
+    ret = notification_set_layout(noti, NOTIFICATION_LY_ONGOING_EVENT);
+
+    if (ret != NOTIFICATION_ERROR_NONE)
+    {
+        LOGW ( "Fail to notification_set_image [%d]", ret);
+    }
+
+    ret = notification_set_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, "/usr/share/scim/ise-wifi-keyboard/wifikeyboard.png");
+    if (ret != NOTIFICATION_ERROR_NONE)
+    {
+        LOGW ( "Fail to notification_set_image [%d]", ret);
+    }
+
+    ret = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, _ptext, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+    if (ret != NOTIFICATION_ERROR_NONE)
+    {
+        LOGW ( "Fail to notification_set_text [%d]", ret);
+    }
+
+    ret = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, _ptitle, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+    if (ret != NOTIFICATION_ERROR_NONE)
+    {
+        LOGW ( "Fail to notification_set_text [%d]", ret);
+    }
+
+    //ret = notification_insert(noti, &priv_id);
+    if (ret != NOTIFICATION_ERROR_NONE)
+    {
+        LOGW ( "Fail to notification_insert [%d]", ret);
+    }
+}
+
+void Remote_Input::del_notification()
+{
+    ret = notification_free(noti);
+    if (ret != NOTIFICATION_ERROR_NONE)
+    {
+        LOGW ( "Fail to notification_free [%d]", ret);
+    }
+    //notification_delete_group_by_priv_id(NULL, NOTIFICATION_TYPE_NOTI, priv_id);
+    noti_count = 0;
+}
+
+
+
diff --git a/ism/extras/efl_panel/remote_input.h b/ism/extras/efl_panel/remote_input.h
new file mode 100644 (file)
index 0000000..d60ae80
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * ISF(Input Service Framework)
+ *
+ * ISF is based on SCIM 1.4.7 and extended for supporting more mobile fitable.
+ * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
+ *
+ * Contact: Jihoon Kim <jihoon48.kim@samsung.com>
+ *
+ * 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.
+ *
+ * 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.
+ *
+ * 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
+ *
+ */
+
+#ifndef __REMOTE_INPUT_H__
+#define __REMOTE_INPUT_H__
+
+#define Uses_SCIM_PANEL_AGENT
+
+
+#include <dlog.h>
+
+#include <notification.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+//for socket
+#include <net/if.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
+#include <linux/sockios.h>
+#include <sys/ioctl.h>
+#include <arpa/inet.h>
+
+#include <unistd.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <linux/input.h>
+#include <linux/uinput.h>
+
+#include "scim.h"
+#include "scim_private.h"
+#include "motion_input.h"
+#include "websocketserver.h"
+
+#define LOG_TAG                                         "ISF_REMOTE_INPUT"
+using namespace scim;
+
+enum UINPUT_DEVICE{
+    UINPUT_KEYBOARD = 0,
+    UINPUT_MOUSE
+};
+
+class Remote_Input
+{
+public :
+
+private:
+    static Remote_Input*    m_instance;
+    int fd_uinput_keyboard;
+    int fd_uinput_mouse;
+
+public:
+    Remote_Input();
+    ~Remote_Input();
+
+    static Remote_Input* get_instance();
+
+    void init(InfoManager* info_manager);
+
+    void exit();
+
+    bool init_uinput_keyboard_device();
+
+    bool init_uinput_mouse_device();
+
+    void send_uinput_event(UINPUT_DEVICE device, __u16 type, __u16 code, __s32 value);
+
+    void panel_send_uinput_event(UINPUT_DEVICE device, __u16 type, __u16 code, __s32 value);
+
+    void panel_send_uinput_event_for_key(UINPUT_DEVICE device, __u16 code);
+
+    void panel_send_uinput_event_for_air_mouse(UINPUT_DEVICE device, double data[]);
+
+    void panel_send_uinput_event_for_wheel(UINPUT_DEVICE device, __s32 value_y);
+
+    void panel_send_uinput_event_for_touch_mouse(UINPUT_DEVICE device, __s32 value_x, __s32 value_y);
+
+    void reset_setting_value_for_air_mouse(double data[]);
+
+    void handle_websocket_message(ISE_MESSAGE &message);
+
+    void del_notification();
+
+    void ongoing_notification(const char* _ptitle, const char* _ptext);
+
+    void post_notification(const char* _ptitle, const char* _ptext);
+
+};
+
+#endif /* __REMOTE_INPUT_H__ */
diff --git a/ism/extras/efl_panel/websocketserver.cpp b/ism/extras/efl_panel/websocketserver.cpp
new file mode 100644 (file)
index 0000000..fe75371
--- /dev/null
@@ -0,0 +1,1190 @@
+/*
+ * Copyright (c) 2012 - 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.
+ *
+ */
+
+#ifdef CMAKE_BUILD
+#include "lws_config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <getopt.h>
+#include <string.h>
+#include <sys/time.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <assert.h>
+#include <dlog.h>
+#include <feedback.h>
+
+#include "websocketserver.h"
+#include "remote_input.h"
+
+#ifdef WIN32
+
+#ifdef EXTERNAL_POLL
+    #ifndef WIN32_LEAN_AND_MEAN
+    #define WIN32_LEAN_AND_MEAN
+    #endif
+    #include <winsock2.h>
+    #include <ws2tcpip.h>
+    #include <stddef.h>
+
+    #include "websock-w32.h"
+#endif
+
+#else // NOT WIN32
+#include <syslog.h>
+#endif
+
+#include <signal.h>
+
+#include <libwebsockets.h>
+
+pthread_t g_ws_server_thread = (pthread_t)NULL;
+pthread_mutex_t g_ws_server_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+pthread_cond_t g_ws_query_condition = PTHREAD_COND_INITIALIZER;
+pthread_mutex_t g_ws_query_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+bool g_ws_server_exit = false;
+struct libwebsocket_context *g_ws_server_context = NULL;
+
+WebSocketServer* WebSocketServer::m_current_instance = NULL;
+static Remote_Input* remote_input_impl= NULL;
+
+int force_exit = 0;
+
+extern unsigned int preedit_from_remote;
+//extern void flush_immengine_by_remote();
+
+enum demo_protocols {
+    /* always first */
+    PROTOCOL_HTTP = 0,
+
+    PROTOCOL_KEYBOARD,
+
+    /* always last */
+    MAX_PROTOCOL_COUNT
+};
+struct serveable {
+    const char *urlpath;
+    const char *mimetype;
+};
+
+static const struct serveable whitelist[] = {
+    { "/favicon.ico", "image/x-icon" },
+    { "/libwebsockets.org-logo.png", "image/png" },
+
+    { "/tv.htm", "text/html" },
+    { "/air.htm", "text/html" },
+    { "/airsetting.htm", "text/html" },
+    { "/tv2.htm", "text/html" },
+    { "/airinput.htm", "text/html" },
+    { "/ajaxCaller.js", "text/javascript" },
+    { "/remote_input.js", "text/javascript" },
+    { "/remote_input.css", "text/css" },
+    { "/util.js", "text/javascript" },
+    { "/jquery-2.0.2.min.js", "text/javascript" },
+    { "/web-helper-client.js", "text/javascript" },
+    { "/web_index.html", "text/html" },
+    { "/style.css", "text/css" },
+    { "/test.htm", "text/html" },
+    { "/testpage.htm", "text/html" },
+    { "/avahi.htm", "text/html" },
+
+    { "/imgs/chlist_pressed.png", "image/png" },
+    { "/imgs/channel.png", "image/png" },
+    { "/imgs/channel_up.png", "image/png" },
+    { "/imgs/channel_up_pressed.png", "image/png" },
+    { "/imgs/channel_down.png", "image/png" },
+    { "/imgs/channel_down_pressed.png", "image/png" },
+    { "/imgs/back.png", "image/png" },
+    { "/imgs/back_pressed.png", "image/png" },
+    { "/imgs/apps.png", "image/png" },
+    { "/imgs/apps_pressed.png", "image/png" },
+    { "/shortcut_icon.png", "image/png" },
+    { "/imgs/chlist.png", "image/png" },
+    { "/imgs/exit_pressed.png", "image/png" },
+    { "/imgs/exit.png", "image/png" },
+    { "/imgs/info_pressed.png", "image/png" },
+    { "/imgs/info.png", "image/png" },
+    { "/imgs/menu_pressed.png", "image/png" },
+    { "/imgs/menu.png", "image/png" },
+    { "/imgs/modeswitcher_pressed.png", "image/png" },
+    { "/imgs/modeswitcher_to_mouse.png", "image/png" },
+    { "/imgs/modeswitcher_to_tv.png", "image/png" },
+    { "/imgs/modeswitcher.png", "image/png" },
+    { "/imgs/mouse_panel_bg.png", "image/png" },
+    { "/imgs/mute_pressed.png", "image/png" },
+    { "/imgs/mute.png", "image/png" },
+    { "/imgs/power_pressed.png", "image/png" },
+    { "/imgs/power.png", "image/png" },
+    { "/imgs/remote_keyboard_logo.png", "image/png" },
+    { "/imgs/remotekeyboard_bg.png", "image/png" },
+    { "/imgs/remotekeyboard_remocon_bg.png", "image/png" },
+    { "/imgs/return_pressed.png", "image/png" },
+    { "/imgs/return.png", "image/png" },
+    { "/imgs/scrollbar.png", "image/png" },
+    { "/imgs/source_pressed.png", "image/png" },
+    { "/imgs/source.png", "image/png" },
+    { "/imgs/volume_down_pressed.png", "image/png" },
+    { "/imgs/volume_down.png", "image/png" },
+    { "/imgs/volume_up_pressed.png", "image/png" },
+    { "/imgs/volume_up.png", "image/png" },
+    { "/imgs/volume.png", "image/png" },
+    { "/imgs/air_bt.png", "image/png" },
+    { "/imgs/air_bt_pressed.png", "image/png" },
+    { "/imgs/reset_bt.png", "image/png" },
+    { "/imgs/reset_bt_pressed.png", "image/png" },
+    { "/imgs/air_panel_bg.png", "image/png" },
+    { "/imgs/a_bt.png", "image/png" },
+    { "/imgs/a_bt_pressed.png", "image/png" },
+    { "/imgs/b_bt.png", "image/png" },
+    { "/imgs/b_bt_pressed.png", "image/png" },
+    { "/imgs/c_bt.png", "image/png" },
+    { "/imgs/c_bt_pressed.png", "image/png" },
+
+    /* last one is the default served if no match */
+    { "/tv.htm", "text/html" },
+};
+#define LOCAL_RESOURCE_PATH "/usr/share/scim/remote-input"
+
+/*
+ * We take a strict whitelist approach to stop ../ attacks
+ */
+
+struct per_session_data__http {
+    int fd;
+};
+
+/* this protocol server (always the first one) just knows how to do HTTP */
+
+static int callback_http(struct libwebsocket_context *context,
+        struct libwebsocket *wsi,
+        enum libwebsocket_callback_reasons reason, void *user,
+                               void *in, size_t len)
+{
+    //LOGD(" ");
+#if 0
+    char client_name[128];
+    char client_ip[128];
+#endif
+    char buf[256];
+    int n, m;
+    unsigned char *p;
+    static unsigned char buffer[4096];
+    struct stat stat_buf;
+    struct per_session_data__http *pss = (struct per_session_data__http *)user;
+#ifdef EXTERNAL_POLL
+    int fd = (int)(long)in;
+#endif
+
+    switch (reason) {
+    case LWS_CALLBACK_HTTP:
+
+        /* check for the "send a big file by hand" example case */
+
+        if (!strcmp((const char *)in, "/leaf.jpg")) {
+
+            /* well, let's demonstrate how to send the hard way */
+
+            p = buffer;
+
+            pss->fd = open(LOCAL_RESOURCE_PATH"/leaf.jpg", O_RDONLY);
+            if (pss->fd < 0)
+                return -1;
+
+            fstat(pss->fd, &stat_buf);
+
+            /*
+             * we will send a big jpeg file, but it could be
+             * anything.  Set the Content-Type: appropriately
+             * so the browser knows what to do with it.
+             */
+
+            p += sprintf((char *)p,
+                "HTTP/1.0 200 OK\x0d\x0a"
+                "Server: libwebsockets\x0d\x0a"
+                "Content-Type: image/jpeg\x0d\x0a"
+                    "Content-Length: %u\x0d\x0a\x0d\x0a",
+                    (unsigned int)stat_buf.st_size);
+
+            /*
+             * send the http headers...
+             * this won't block since it's the first payload sent
+             * on the connection since it was established
+             * (too small for partial)
+             */
+
+            n = libwebsocket_write(wsi, buffer,
+                   p - buffer, LWS_WRITE_HTTP);
+
+            if (n < 0) {
+                close(pss->fd);
+                return -1;
+            }
+            /*
+             * book us a LWS_CALLBACK_HTTP_WRITEABLE callback
+             */
+            libwebsocket_callback_on_writable(context, wsi);
+            break;
+        }
+
+        /* if not, send a file the easy way */
+
+        for (n = 0; n < (sizeof(whitelist) / sizeof(whitelist[0]) - 1); n++)
+            if (in && strcmp((const char *)in, whitelist[n].urlpath) == 0)
+                break;
+
+        sprintf(buf, LOCAL_RESOURCE_PATH"%s", whitelist[n].urlpath);
+
+        if (libwebsockets_serve_http_file(context, wsi, buf, whitelist[n].mimetype))
+            return -1; /* through completion or error, close the socket */
+
+        /*
+         * notice that the sending of the file completes asynchronously,
+         * we'll get a LWS_CALLBACK_HTTP_FILE_COMPLETION callback when
+         * it's done
+         */
+
+        break;
+
+    case LWS_CALLBACK_HTTP_FILE_COMPLETION:
+//      lwsl_info("LWS_CALLBACK_HTTP_FILE_COMPLETION seen\n");
+        /* kill the connection after we sent one file */
+        return -1;
+
+    case LWS_CALLBACK_HTTP_WRITEABLE:
+        /*
+         * we can send more of whatever it is we were sending
+         */
+
+        do {
+            n = read(pss->fd, buffer, sizeof buffer);
+            /* problem reading, close conn */
+            if (n < 0)
+                goto bail;
+            /* sent it all, close conn */
+            if (n == 0)
+                goto bail;
+            /*
+             * because it's HTTP and not websocket, don't need to take
+             * care about pre and postamble
+             */
+            m = libwebsocket_write(wsi, buffer, n, LWS_WRITE_HTTP);
+            if (m < 0)
+                /* write failed, close conn */
+                goto bail;
+            if (m != n)
+                /* partial write, adjust */
+                lseek(pss->fd, m - n, SEEK_CUR);
+
+        } while (!lws_send_pipe_choked(wsi));
+        libwebsocket_callback_on_writable(context, wsi);
+        break;
+
+bail:
+        close(pss->fd);
+        return -1;
+
+    /*
+     * callback for confirming to continue with client IP appear in
+     * protocol 0 callback since no websocket protocol has been agreed
+     * yet.  You can just ignore this if you won't filter on client IP
+     * since the default uhandled callback return is 0 meaning let the
+     * connection continue.
+     */
+
+    case LWS_CALLBACK_FILTER_NETWORK_CONNECTION:
+#if 0
+        libwebsockets_get_peer_addresses(context, wsi, (int)(long)in, client_name,
+                 sizeof(client_name), client_ip, sizeof(client_ip));
+
+        fprintf(stderr, "Received network connect from %s (%s)\n",
+                            client_name, client_ip);
+#endif
+        /* if we returned non-zero from here, we kill the connection */
+        break;
+
+#ifdef EXTERNAL_POLL
+    /*
+     * callbacks for managing the external poll() array appear in
+     * protocol 0 callback
+     */
+
+    case LWS_CALLBACK_ADD_POLL_FD:
+
+        if (count_pollfds >= max_poll_elements) {
+            lwsl_err("LWS_CALLBACK_ADD_POLL_FD: too many sockets to track\n");
+            return 1;
+        }
+
+        fd_lookup[fd] = count_pollfds;
+        pollfds[count_pollfds].fd = fd;
+        pollfds[count_pollfds].events = (int)(long)len;
+        pollfds[count_pollfds++].revents = 0;
+        break;
+
+    case LWS_CALLBACK_DEL_POLL_FD:
+        if (!--count_pollfds)
+            break;
+        m = fd_lookup[fd];
+        /* have the last guy take up the vacant slot */
+        pollfds[m] = pollfds[count_pollfds];
+        fd_lookup[pollfds[count_pollfds].fd] = m;
+        break;
+
+    case LWS_CALLBACK_SET_MODE_POLL_FD:
+        pollfds[fd_lookup[fd]].events |= (int)(long)len;
+        break;
+
+    case LWS_CALLBACK_CLEAR_MODE_POLL_FD:
+        pollfds[fd_lookup[fd]].events &= ~(int)(long)len;
+        break;
+#endif
+
+    default:
+        break;
+    }
+
+    return 0;
+}
+
+
+/* keyboard protocol */
+
+struct per_session_data__keyboard {
+    int session_id;
+    int valid;
+};
+
+static int
+callback_keyboard(struct libwebsocket_context *context,
+struct libwebsocket *wsi,
+    enum libwebsocket_callback_reasons reason,
+    void *user, void *in, size_t len);
+
+/* list of supported protocols and callbacks */
+static struct libwebsocket_protocols protocols[] = {
+    /* first protocol must always be HTTP handler */
+    {
+        "http-only",        /* name */
+        callback_http,      /* callback */
+        sizeof(struct per_session_data__http),  /* per_session_data_size */
+        0,          /* max frame size / rx buffer */
+    },
+    {
+        "keyboard-protocol",
+        callback_keyboard,
+        sizeof(struct per_session_data__keyboard),
+        80,
+    },
+    { NULL, NULL, 0, 0 } /* terminator */
+};
+
+static int
+callback_keyboard(struct libwebsocket_context *context,
+            struct libwebsocket *wsi,
+            enum libwebsocket_callback_reasons reason,
+                           void *user, void *in, size_t len)
+{
+    //LOGD(" %d",reason);
+    static int last_session_id = 0;
+    const int bufsize = 512;
+    int n = 0;
+    unsigned char buf[LWS_SEND_BUFFER_PRE_PADDING + bufsize +
+                          LWS_SEND_BUFFER_POST_PADDING];
+    unsigned char *p = &buf[LWS_SEND_BUFFER_PRE_PADDING];
+    struct per_session_data__keyboard *pss = (struct per_session_data__keyboard *)user;
+    WebSocketServer *agent = WebSocketServer::get_current_instance();
+    switch (reason) {
+
+    case LWS_CALLBACK_ESTABLISHED:
+        pss->session_id = ++last_session_id;
+        LOGD("LWS_CALLBACK_ESTABLISHED : %d", pss->session_id);
+        //pss->valid = false;
+        libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+        break;
+
+    case LWS_CALLBACK_CLOSED:
+        LOGD("LWS_CALLBACK_CLOSED : %d", pss->session_id);
+        break;
+
+    case LWS_CALLBACK_SERVER_WRITEABLE:
+        LOGD("LWS_CALLBACK_SERVER_WRITEABLE");
+        if (agent) {
+            /* We allow data tranmission only if this client is guaranteed to be valid */
+                pthread_mutex_lock(&g_ws_server_mutex);
+                std::queue<ISE_MESSAGE>& messages = agent->get_send_message_queue();
+                while (messages.size() > 0) {
+                    ISE_MESSAGE &message = messages.front();
+                    //n = sprintf((char *)p, "%s %s", message.command.c_str(), message.value.c_str());
+                    std::string str = CISEMessageSerializer::serialize(message);
+                    LOGD("SEND_WEBSOCKET_MESSAGE : %s", str.c_str());
+                    n = snprintf((char *)p, bufsize, "%s", str.c_str());
+                    /* too small for partial */
+                    n = libwebsocket_write(wsi, p, n, LWS_WRITE_TEXT);
+                    messages.pop();
+                }
+                pthread_mutex_unlock(&g_ws_server_mutex);
+
+                if (n < 0) {
+                    lwsl_err("ERROR %d writing to di socket\n", n);
+                    return -1;
+                }
+        }
+        break;
+
+    case LWS_CALLBACK_RECEIVE:
+        //LOGD("LWS_CALLBACK_RECEIVE");
+        if (in) {
+            std::string str = (const char *)in;
+            //LOGD("Receive MSG :|%s|", str.c_str());
+            ISE_MESSAGE message = CISEMessageSerializer::deserialize(str);
+/*
+            if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_LOGIN]) == 0) {
+                if (message.values.at(0).compare(CMagicKeyManager::get_magic_key()) == 0) {
+                    LOGD("LOGIN successful, validating client");
+                    pss->valid = true;
+                } else {
+                    LOGD("LOGIN failed, invalidating client");
+                    pss->valid = false;
+                }
+            }
+*/
+                pthread_mutex_lock(&g_ws_server_mutex);
+                std::queue<ISE_MESSAGE>& messages = agent->get_recv_message_queue();
+                messages.push(message);
+                pthread_mutex_unlock(&g_ws_server_mutex);
+
+                const char *recved_message = "recved";
+                ecore_pipe_write(agent->get_recv_message_pipe(), recved_message, strlen(recved_message));
+
+                /* If we received reply message, let's send signal to wake up our main thread */
+                if (message.type.compare(ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_REPLY]) == 0) {
+                    pthread_mutex_lock(&g_ws_query_mutex);
+                    pthread_cond_signal(&g_ws_query_condition);
+                    pthread_mutex_unlock(&g_ws_query_mutex);
+                }
+        }
+
+        break;
+    default:
+        break;
+    }
+
+    return 0;
+}
+
+void *process_ws_server(void *data)
+{
+    //LOGD(" ");
+    unsigned int oldus = 0;
+
+    while (!force_exit && !g_ws_server_exit) {
+        struct timeval tv;
+        gettimeofday(&tv, NULL);
+
+        /*
+         * This provokes the LWS_CALLBACK_SERVER_WRITEABLE for every
+         * live websocket connection using the DUMB_INCREMENT protocol,
+         * as soon as it can take more packets (usually immediately)
+         */
+
+        /*
+        if (((unsigned int)tv.tv_usec - oldus) > 50000) {
+            libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+            oldus = tv.tv_usec;
+        }
+        */
+
+        /*
+         * If libwebsockets sockets are all we care about,
+         * you can use this api which takes care of the poll()
+         * and looping through finding who needed service.
+         *
+         * If no socket needs service, it'll return anyway after
+         * the number of ms in the second argument.
+         */
+
+        libwebsocket_service(g_ws_server_context, 50);
+    }
+    return NULL;
+}
+
+void log_func(int level, const char *line)
+{
+    //LOGD(" ");
+
+}
+
+WebSocketServer::WebSocketServer()
+{
+    //LOGD(" ");
+    if (m_current_instance != NULL) {
+        LOGD("WARNING : m_current_instance is NOT NULL");
+    }
+    m_current_instance = this;
+    m_recv_message_pipe = NULL;
+}
+
+WebSocketServer::~WebSocketServer()
+{
+    //LOGD(" ");
+    if (m_current_instance == this) {
+        m_current_instance = NULL;
+    }
+
+    if (m_recv_message_pipe) {
+        ecore_pipe_del(m_recv_message_pipe);
+        m_recv_message_pipe = NULL;
+    }
+}
+
+static void recv_message_pipe_handler(void *data, void *buffer, unsigned int nbyte)
+{
+    //LOGD(" ");
+    WebSocketServer *agent = WebSocketServer::get_current_instance();
+    if (agent) {
+        agent->process_recved_messages();
+    }
+}
+
+bool WebSocketServer::init()
+{
+    LOGD(" ");
+    bool ret = true;
+
+    struct lws_context_creation_info info;
+
+    memset(&info, 0, sizeof info);
+    info.port = 7172;
+
+    /* tell the library what debug level to emit and to send it to syslog */
+    int debug_level = LLL_DEBUG;
+    lws_set_log_level(debug_level, log_func);
+
+    info.iface = NULL;
+    info.protocols = protocols;
+#ifndef LWS_NO_EXTENSIONS
+    info.extensions = libwebsocket_get_internal_extensions();
+#endif
+    info.ssl_cert_filepath = NULL;
+    info.ssl_private_key_filepath = NULL;
+    info.gid = -1;
+    info.uid = -1;
+    info.options = 0;
+
+    feedback_initialize(); // Initialize feedback
+
+    /* The WebSocket server is running on a separate thread, and let the thread send a message
+        through this pipe to guarantee thread safety */
+    m_recv_message_pipe = ecore_pipe_add(recv_message_pipe_handler, NULL);
+
+    /* Let's retry creating server context for a certain number of times */
+    const int max_retry_num = 10;
+    int retry_num = 0;
+
+    do {
+        g_ws_server_context = libwebsocket_create_context(&info);
+        LOGD("libwebsocket context : %p", g_ws_server_context);
+        sleep(1);
+    } while (g_ws_server_context == NULL && retry_num++ < max_retry_num);
+
+    pthread_mutex_init(&g_ws_server_mutex, NULL);
+
+    pthread_mutex_init(&g_ws_query_mutex, NULL);
+    pthread_cond_init(&g_ws_query_condition, NULL);
+
+    if (g_ws_server_context) {
+        pthread_create(&g_ws_server_thread, NULL, &process_ws_server, NULL);
+    } else {
+        ret = false;
+    }
+
+    on_init();
+
+    remote_input_impl = Remote_Input::get_instance();
+
+    return ret;
+}
+
+bool WebSocketServer::exit()
+{
+    //LOGD(" ");
+    on_exit();
+
+    g_ws_server_exit = true;
+
+    feedback_deinitialize(); // Deinitialize feedback
+
+    if (m_recv_message_pipe) {
+        ecore_pipe_del(m_recv_message_pipe);
+        m_recv_message_pipe = NULL;
+    }
+
+    if(g_ws_server_thread) {
+        pthread_join(g_ws_server_thread, NULL);
+    }
+
+    pthread_cond_destroy(&g_ws_query_condition);
+    pthread_mutex_destroy(&g_ws_query_mutex);
+
+    pthread_mutex_destroy(&g_ws_server_mutex);
+
+    libwebsocket_context_destroy(g_ws_server_context);
+
+    return true;
+}
+
+void WebSocketServer::signal(int sig)
+{
+    //LOGD(" ");
+    force_exit = 1;
+}
+
+template<class T>
+std::string to_string(T i)
+{
+    std::stringstream ss;
+    std::string s;
+    ss << i;
+    s = ss.str();
+
+    return s;
+}
+
+void WebSocketServer::on_init()
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_INIT];
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+}
+
+void WebSocketServer::on_exit()
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_EXIT];
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+}
+
+void WebSocketServer::on_focus_in(int ic)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_FOCUS_IN];
+    message.values.push_back(to_string(ic));
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+}
+
+void WebSocketServer::on_focus_out(int ic)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_FOCUS_OUT];
+    message.values.push_back(to_string(ic));
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+}
+
+void WebSocketServer::on_show(int ic)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SHOW];
+    message.values.push_back(to_string(ic));
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+
+    LOGD("put into send message buffer");
+}
+
+void WebSocketServer::on_hide(int ic)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_HIDE];
+    message.values.push_back(to_string(ic));
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+}
+
+void WebSocketServer::on_set_rotation(int degree)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SET_ROTATION];
+    message.values.push_back(to_string(degree));
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+}
+
+void WebSocketServer::on_update_cursor_position(int ic, int cursor_pos)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_UPDATE_CURSOR_POSITION];
+    message.values.push_back(to_string(ic));
+    message.values.push_back(to_string(cursor_pos));
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+}
+
+void WebSocketServer::on_set_language(unsigned int language)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SET_LANGUAGE];
+
+    bool found = false;
+    for (unsigned int loop = 0;loop < sizeof(ISE_LANGUAGE_TYPES) / sizeof(ISE_TYPE_VALUE_STRING);loop++) {
+        if (language == ISE_LANGUAGE_TYPES[loop].type_value) {
+            message.values.push_back(ISE_LANGUAGE_TYPES[loop].type_string);
+            found = true;
+        }
+    }
+
+    if (found) {
+        pthread_mutex_lock(&g_ws_server_mutex);
+        m_send_message_queue.push(message);
+        pthread_mutex_unlock(&g_ws_server_mutex);
+
+        libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+    }
+}
+
+void WebSocketServer::on_set_imdata(char *buf, unsigned int len)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SET_IMDATA];
+    message.values.push_back(buf);
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+}
+
+void WebSocketServer::on_get_imdata(char **buf, unsigned int *len)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_QUERY];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_GET_IMDATA];
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+
+    wait_for_reply_message();
+
+    std::vector<std::string> values;
+    /* Check if we received reply for GET_IMDATA message */
+    if (process_recved_messages_until_reply_found(
+        ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_GET_IMDATA], values)) {
+            if (values.size() > 0 && buf && len) {
+                int string_length = values.at(0).length();
+                (*buf) = new char[string_length + 1];
+                if (*buf) {
+                    strncpy(*buf, values.at(0).c_str(), string_length);
+                    /* Make sure this is a null-terminated string */
+                    *(*buf + string_length) = '\0';
+                    *len = string_length;
+                }
+            }
+    } else {
+        LOGD("process_recved_messages_until_reply_found returned FALSE");
+    }
+    /* Now process the rest in the recv buffer */
+    process_recved_messages();
+}
+
+void WebSocketServer::on_set_return_key_type(unsigned int type)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SET_RETURN_KEY_TYPE];
+
+    bool found = false;
+    for (unsigned int loop = 0;loop < sizeof(ISE_RETURN_KEY_TYPES) / sizeof(ISE_TYPE_VALUE_STRING);loop++) {
+        if (type == ISE_RETURN_KEY_TYPES[loop].type_value) {
+            message.values.push_back(ISE_RETURN_KEY_TYPES[loop].type_string);
+            found = true;
+        }
+    }
+
+    if (found) {
+        pthread_mutex_lock(&g_ws_server_mutex);
+        m_send_message_queue.push(message);
+        pthread_mutex_unlock(&g_ws_server_mutex);
+
+        libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+    }
+}
+
+void WebSocketServer::on_get_return_key_type(unsigned int *type)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_QUERY];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_GET_RETURN_KEY_TYPE];
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+
+    wait_for_reply_message();
+
+    /* Since we are accessing recved buffer, lock the server mutex again */
+    pthread_mutex_lock(&g_ws_server_mutex);
+    std::vector<std::string> values;
+    /* Check if we received reply for GET_RETURN_KEY_TYPE message */
+    if (process_recved_messages_until_reply_found(
+        ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_GET_RETURN_KEY_TYPE], values)) {
+            if (type) {
+                for (unsigned int loop = 0;loop < sizeof(ISE_RETURN_KEY_TYPES) / sizeof(ISE_TYPE_VALUE_STRING);loop++) {
+                    if (values.at(0).compare(ISE_RETURN_KEY_TYPES[loop].type_string) == 0) {
+                        *type = ISE_RETURN_KEY_TYPES[loop].type_value;
+                    }
+                }
+            }
+    }
+    /* Now process the rest in the recv buffer */
+    process_recved_messages();
+    pthread_mutex_unlock(&g_ws_server_mutex);
+}
+
+void WebSocketServer::on_set_return_key_disable(unsigned int disabled)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SET_RETURN_KEY_DISABLE];
+
+    bool found = false;
+    for (unsigned int loop = 0;loop < sizeof(ISE_TRUEFALSE_TYPES) / sizeof(ISE_TYPE_VALUE_STRING);loop++) {
+        if (disabled == ISE_TRUEFALSE_TYPES[loop].type_value) {
+            message.values.push_back(ISE_TRUEFALSE_TYPES[loop].type_string);
+            found = true;
+        }
+    }
+
+    if (found) {
+        pthread_mutex_lock(&g_ws_server_mutex);
+        m_send_message_queue.push(message);
+        pthread_mutex_unlock(&g_ws_server_mutex);
+
+        libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+    }
+}
+
+void WebSocketServer::on_get_return_key_disable(unsigned int *disabled)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_QUERY];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_GET_RETURN_KEY_DISABLE];
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+
+    wait_for_reply_message();
+
+    /* Since we are accessing recved buffer, lock the server mutex again */
+    pthread_mutex_lock(&g_ws_server_mutex);
+    std::vector<std::string> values;
+    /* Check if we received reply for GET_RETURN_KEY_DISABLE message */
+    if (process_recved_messages_until_reply_found(
+        ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_GET_RETURN_KEY_DISABLE], values)) {
+            if (disabled) {
+                for (unsigned int loop = 0;loop < sizeof(ISE_TRUEFALSE_TYPES) / sizeof(ISE_TYPE_VALUE_STRING);loop++) {
+                    if (values.at(0).compare(ISE_TRUEFALSE_TYPES[loop].type_string) == 0) {
+                        *disabled = ISE_TRUEFALSE_TYPES[loop].type_value;
+                    }
+                }
+            }
+    }
+    /* Now process the rest in the recv buffer */
+    process_recved_messages();
+    pthread_mutex_unlock(&g_ws_server_mutex);
+}
+
+void WebSocketServer::on_set_layout(unsigned int layout)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_SET_LAYOUT];
+
+    bool found = false;
+    for (unsigned int loop = 0;loop < sizeof(ISE_LAYOUT_TYPES) / sizeof(ISE_TYPE_VALUE_STRING);loop++) {
+        if (layout == ISE_LAYOUT_TYPES[loop].type_value) {
+            message.values.push_back(ISE_LAYOUT_TYPES[loop].type_string);
+            found = true;
+        }
+    }
+
+    if (found) {
+        pthread_mutex_lock(&g_ws_server_mutex);
+        m_send_message_queue.push(message);
+        pthread_mutex_unlock(&g_ws_server_mutex);
+
+        libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+    }
+}
+
+void WebSocketServer::on_get_layout(unsigned int *layout)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_QUERY];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_GET_LAYOUT];
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+
+    wait_for_reply_message();
+
+    /* Since we are accessing recved buffer, lock the server mutex again */
+    pthread_mutex_lock(&g_ws_server_mutex);
+    std::vector<std::string> values;
+    /* Check if we received reply for GET_LAYOUT message */
+    if (process_recved_messages_until_reply_found(
+        ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_GET_LAYOUT], values)) {
+            if (layout) {
+                for (unsigned int loop = 0;loop < sizeof(ISE_LAYOUT_TYPES) / sizeof(ISE_TYPE_VALUE_STRING);loop++) {
+                    if (values.at(0).compare(ISE_LAYOUT_TYPES[loop].type_string) == 0) {
+                        *layout = ISE_LAYOUT_TYPES[loop].type_value;
+                    }
+                }
+            }
+    }
+    /* Now process the rest in the recv buffer */
+    process_recved_messages();
+    pthread_mutex_unlock(&g_ws_server_mutex);
+}
+
+void WebSocketServer::on_reset_input_context(int ic)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_PLAIN];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_RESET_INPUT_CONTEXT];
+    message.values.push_back(to_string(ic));
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+}
+
+void WebSocketServer::on_process_key_event(unsigned int code, unsigned int mask, unsigned int layout, unsigned int *ret)
+{
+    //LOGD(" ");
+    ISE_MESSAGE message;
+    message.type = ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_QUERY];
+    message.command = ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_PROCESS_KEY_EVENT];
+    message.values.push_back(to_string(code));
+    message.values.push_back(to_string(mask));
+    message.values.push_back(to_string(layout));
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+    m_send_message_queue.push(message);
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+
+    wait_for_reply_message();
+
+    /* Since we are accessing recved buffer, lock the server mutex again */
+    pthread_mutex_lock(&g_ws_server_mutex);
+    std::vector<std::string> values;
+    /* Check if we received reply for PROCESS_KEY_EVENT message */
+    if (process_recved_messages_until_reply_found(
+        ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_PROCESS_KEY_EVENT], values)) {
+            if (ret) {
+                for (unsigned int loop = 0;loop < sizeof(ISE_TRUEFALSE_TYPES) / sizeof(ISE_TYPE_VALUE_STRING);loop++) {
+                    if (values.at(0).compare(ISE_TRUEFALSE_TYPES[loop].type_string) == 0) {
+                        *ret = ISE_TRUEFALSE_TYPES[loop].type_value;
+                    }
+                }
+            }
+    }
+    /* Now process the rest in the recv buffer */
+    process_recved_messages();
+    pthread_mutex_unlock(&g_ws_server_mutex);
+}
+
+WebSocketServer* WebSocketServer::get_current_instance()
+{
+    //LOGD(" ");
+    return m_current_instance;
+}
+
+std::queue<ISE_MESSAGE>& WebSocketServer::get_send_message_queue()
+{
+    //LOGD(" ");
+    return m_send_message_queue;
+}
+
+std::queue<ISE_MESSAGE>& WebSocketServer::get_recv_message_queue()
+{
+    //LOGD(" ");
+    return m_recv_message_queue;
+}
+
+Ecore_Pipe* WebSocketServer::get_recv_message_pipe()
+{
+    //LOGD(" ");
+    return m_recv_message_pipe;
+}
+
+void WebSocketServer::wait_for_reply_message()
+{
+    //LOGD(" ");
+    /* Let's wait for at most REPLY_TIMEOUT */
+    struct timeval now;
+    struct timespec timeout;
+    gettimeofday(&now, NULL);
+    timeout.tv_sec = now.tv_sec + REPLY_TIMEOUT.tv_sec;
+    timeout.tv_nsec = (now.tv_usec + REPLY_TIMEOUT.tv_usec) * 1000;
+    pthread_mutex_lock(&g_ws_query_mutex);
+    pthread_cond_timedwait(&g_ws_query_condition, &g_ws_query_mutex, &timeout);
+    pthread_mutex_unlock(&g_ws_query_mutex);
+
+}
+
+void WebSocketServer::process_recved_messages()
+{
+    //LOGD(" ");
+    pthread_mutex_lock(&g_ws_server_mutex);
+
+    while (m_recv_message_queue.size() > 0) {
+        ISE_MESSAGE &message = m_recv_message_queue.front();
+
+        handle_recved_message(message);
+
+        m_recv_message_queue.pop();
+    }
+
+    pthread_mutex_unlock(&g_ws_server_mutex);
+}
+
+bool WebSocketServer::process_recved_messages_until_reply_found(std::string command, std::vector<std::string> &values)
+{
+    //LOGD(" ");
+
+    bool ret = false;
+
+    pthread_mutex_lock(&g_ws_server_mutex);
+
+    while (ret == false && m_recv_message_queue.size() > 0) {
+        ISE_MESSAGE &message = m_recv_message_queue.front();
+
+        if (message.command.compare(command) == 0 &&
+            message.type.compare(ISE_MESSAGE_TYPE_STRINGS[ISE_MESSAGE_TYPE_REPLY]) == 0) {
+            ret = true;
+            values = message.values;
+        }
+        handle_recved_message(message);
+
+        m_recv_message_queue.pop();
+    }
+
+    pthread_mutex_unlock(&g_ws_server_mutex);
+
+    return ret;
+}
+
+void WebSocketServer::handle_recved_message(ISE_MESSAGE &message)
+{
+    //LOGD(" ");
+    //LOGD("Received message : %s, %s, %s", message.type.c_str(), message.command.c_str() , message.values.at(0).c_str());
+    /*FIXME delte login
+    if (message.command.compare(ISE_MESSAGE_COMMAND_STRINGS[ISE_MESSAGE_COMMAND_LOGIN]) == 0) {
+        libwebsocket_callback_on_writable_all_protocol(&protocols[PROTOCOL_KEYBOARD]);
+    }
+    */
+
+    if (remote_input_impl == NULL) {
+        remote_input_impl = Remote_Input::get_instance();
+    }
+
+    remote_input_impl->handle_websocket_message(message);
+}
diff --git a/ism/extras/efl_panel/websocketserver.h b/ism/extras/efl_panel/websocketserver.h
new file mode 100644 (file)
index 0000000..72383a8
--- /dev/null
@@ -0,0 +1,285 @@
+/*
+ * Copyright (c) 2012 - 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.
+ *
+ */
+
+#ifndef _WEB_SOCKET_SERVER_H_
+#define _WEB_SOCKET_SERVER_H_
+
+#define Uses_SCIM_PANEL_AGENT
+
+#include <queue>
+#include <string>
+#include <sstream>
+#include <vector>
+#include <Ecore.h>
+#include <Ecore_IMF.h>
+
+/* Wait for at most 1 second */
+const struct timeval REPLY_TIMEOUT = {1, 0};
+
+typedef enum {
+    ISE_MESSAGE_TYPE_PLAIN,
+    ISE_MESSAGE_TYPE_QUERY,
+    ISE_MESSAGE_TYPE_REPLY,
+} ISE_MESSAGE_TYPES;
+
+const std::string ISE_MESSAGE_TYPE_STRINGS[] = {
+    "plain", // ISE_MESSAGE_TYPE_PLAIN,
+    "query", // ISE_MESSAGE_TYPE_QUERY
+    "reply", // ISE_MESSAGE_TYPE_REPLY
+};
+
+typedef enum {
+    ISE_MESSAGE_COMMAND_INIT,
+    ISE_MESSAGE_COMMAND_EXIT,
+
+    ISE_MESSAGE_COMMAND_FOCUS_IN,
+    ISE_MESSAGE_COMMAND_FOCUS_OUT,
+    ISE_MESSAGE_COMMAND_SHOW,
+    ISE_MESSAGE_COMMAND_HIDE,
+    ISE_MESSAGE_COMMAND_SET_ROTATION,
+    ISE_MESSAGE_COMMAND_UPDATE_CURSOR_POSITION,
+    ISE_MESSAGE_COMMAND_SET_LANGUAGE,
+    ISE_MESSAGE_COMMAND_SET_IMDATA,
+    ISE_MESSAGE_COMMAND_GET_IMDATA,
+    ISE_MESSAGE_COMMAND_SET_RETURN_KEY_TYPE,
+    ISE_MESSAGE_COMMAND_GET_RETURN_KEY_TYPE,
+    ISE_MESSAGE_COMMAND_SET_RETURN_KEY_DISABLE,
+    ISE_MESSAGE_COMMAND_GET_RETURN_KEY_DISABLE,
+    ISE_MESSAGE_COMMAND_SET_LAYOUT,
+    ISE_MESSAGE_COMMAND_GET_LAYOUT,
+    ISE_MESSAGE_COMMAND_RESET_INPUT_CONTEXT,
+    ISE_MESSAGE_COMMAND_PROCESS_KEY_EVENT,
+
+    ISE_MESSAGE_COMMAND_LOG,
+    ISE_MESSAGE_COMMAND_COMMIT_STRING,
+    ISE_MESSAGE_COMMAND_UPDATE_PREEDIT_STRING,
+    ISE_MESSAGE_COMMAND_SEND_KEY_EVENT,
+    ISE_MESSAGE_COMMAND_SEND_MOUSE_KEY,
+    ISE_MESSAGE_COMMAND_SEND_MOUSE_MOVE,
+    ISE_MESSAGE_COMMAND_SEND_WHEEL_MOVE,
+    ISE_MESSAGE_COMMAND_SEND_AIR_INPUT,
+    ISE_MESSAGE_COMMAND_SEND_AIR_SETTING,
+    ISE_MESSAGE_COMMAND_FORWARD_KEY_EVENT,
+    ISE_MESSAGE_COMMAND_SET_KEYBOARD_SIZES,
+    ISE_MESSAGE_COMMAND_LOGIN,
+
+    ISE_MESSAGE_COMMANDS_NUM,
+} ISE_MESSAGE_COMMANDS;
+
+const std::string ISE_MESSAGE_COMMAND_STRINGS[] = {
+    "init", // ISE_MESSAGE_COMMAND_INIT,
+    "exit", // ISE_MESSAGE_COMMAND_EXIT,
+
+    "focus_in", // ISE_MESSAGE_COMMAND_FOCUS_IN,
+    "focus_out", // ISE_MESSAGE_COMMAND_FOCUS_OUT,
+    "show", // ISE_MESSAGE_COMMAND_SHOW,
+    "hide", // ISE_MESSAGE_COMMAND_HIDE,
+    "set_rotation", // ISE_MESSAGE_COMMAND_SET_ROTATION,
+    "update_cursor_position", // ISE_MESSAGE_COMMAND_UPDATE_CURSOR_POSITION,
+    "set_language", // ISE_MESSAGE_COMMAND_SET_LANGUAGE,
+    "set_imdata", // ISE_MESSAGE_COMMAND_SET_IMDATA,
+    "get_imdata", // ISE_MESSAGE_COMMAND_GET_IMDATA,
+    "set_return_key_type", // ISE_MESSAGE_COMMAND_SET_RETURN_KEY_TYPE,
+    "get_return_key_type", // ISE_MESSAGE_COMMAND_GET_RETURN_KEY_TYPE,
+    "set_return_key_disable", // ISE_MESSAGE_COMMAND_SET_RETURN_KEY_DISABLE,
+    "get_return_key_disable", // ISE_MESSAGE_COMMAND_GET_RETURN_KEY_DISABLE,
+    "set_layout", // ISE_MESSAGE_COMMAND_SET_LAYOUT,
+    "get_layout", // ISE_MESSAGE_COMMAND_GET_LAYOUT,
+    "reset_input_context", // ISE_MESSAGE_COMMAND_RESET_INPUT_CONTEXT,
+    "process_key_event", // ISE_MESSAGE_COMMAND_PROCESS_KEY_EVENT,
+
+    "log", // ISE_MESSAGE_COMMAND_LOG,
+    "commit_string", // ISE_MESSAGE_COMMAND_COMMIT_STRING,
+    "update_preedit_string", // ISE_MESSAGE_COMMAND_UPDATE_PREEDIT_STRING,
+    "send_key_event", // ISE_MESSAGE_COMMAND_SEND_KEY_EVENT,
+    "send_mouse_key", // ISE_MESSAGE_COMMAND_SEND_KEY_EVENT,
+    "send_mouse_move", // ISE_MESSAGE_COMMAND_SEND_KEY_EVENT,
+    "send_wheel_move", // ISE_MESSAGE_COMMAND_SEND_KEY_EVENT,
+    "send_air_input", // ISE_MESSAGE_COMMAND_SEND_KEY_EVENT,
+    "send_air_setting", // ISE_MESSAGE_COMMAND_SEND_KEY_EVENT,
+    "forward_key_event", // ISE_MESSAGE_COMMAND_FORWARD_KEY_EVENT,
+    "set_keyboard_sizes", // ISE_MESSAGE_COMMAND_SET_KEYBOARD_SIZES,
+    "login", // ISE_MESSAGE_COMMAND_LOGIN,
+};
+
+typedef struct {
+    std::string type;
+    std::string command;
+    std::vector<std::string> values;
+} ISE_MESSAGE;
+
+typedef struct {
+    int type_value;
+    std::string type_string;
+} ISE_TYPE_VALUE_STRING;
+
+const ISE_TYPE_VALUE_STRING ISE_RETURN_KEY_TYPES[] = {
+    {ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT, "default"},
+    {ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_DONE, "done"},
+    {ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_GO, "go"},
+    {ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_JOIN, "join"},
+    {ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN, "login"},
+    {ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_NEXT, "next"},
+    {ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH, "search"},
+    {ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_SEND, "send"},
+    {ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_SIGNIN, "signin"},
+};
+
+const ISE_TYPE_VALUE_STRING ISE_LAYOUT_TYPES[] = {
+    {ECORE_IMF_INPUT_PANEL_LAYOUT_NORMAL, "normal"},
+    {ECORE_IMF_INPUT_PANEL_LAYOUT_NUMBER, "number"},
+    {ECORE_IMF_INPUT_PANEL_LAYOUT_EMAIL, "email"},
+    {ECORE_IMF_INPUT_PANEL_LAYOUT_URL, "url"},
+    {ECORE_IMF_INPUT_PANEL_LAYOUT_PHONENUMBER, "phonenumber"},
+    {ECORE_IMF_INPUT_PANEL_LAYOUT_IP, "ip"},
+    {ECORE_IMF_INPUT_PANEL_LAYOUT_MONTH, "month"},
+    {ECORE_IMF_INPUT_PANEL_LAYOUT_NUMBERONLY, "numberonly"},
+    {ECORE_IMF_INPUT_PANEL_LAYOUT_PASSWORD, "password"},
+    {ECORE_IMF_INPUT_PANEL_LAYOUT_DATETIME, "datetime"},
+};
+
+const ISE_TYPE_VALUE_STRING ISE_LANGUAGE_TYPES[] = {
+    {ECORE_IMF_INPUT_PANEL_LANG_AUTOMATIC, "automatic"},
+    {ECORE_IMF_INPUT_PANEL_LANG_ALPHABET, "alphabet"},
+};
+
+/* FIXME : Should consider the case if the boolean value does not match with EINA_TRUE or EINA_FALSE */
+const ISE_TYPE_VALUE_STRING ISE_TRUEFALSE_TYPES[] = {
+    {EINA_FALSE, "false"},
+    {EINA_TRUE, "true"},
+};
+
+
+class CStringTokenizer
+{
+public:
+    static std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems) {
+        std::stringstream ss(s);
+        std::string item;
+        while (std::getline(ss, item, delim)) {
+            if (!item.empty()) {
+                elems.push_back(item);
+            }
+        }
+        if (elems.size() < 3) {
+            elems.push_back("");
+        }
+        return elems;
+    }
+
+    static std::vector<std::string> split(const std::string &s, char delim) {
+        std::vector<std::string> elems;
+        split(s, delim, elems);
+        return elems;
+    }
+};
+
+class CISEMessageSerializer
+{
+protected:
+    /* FIXME : Temporary solution for distinguish commands and values */
+    static const char MESSAGE_DELIMETER = '|';
+
+public:
+    static std::string serialize(ISE_MESSAGE message) {
+        std::string ret;
+        ret += message.type;
+        ret += MESSAGE_DELIMETER;
+        ret += message.command;
+        for (unsigned int loop = 0;loop < message.values.size();loop++) {
+            ret += MESSAGE_DELIMETER;
+            ret += message.values.at(loop);
+        }
+        return ret;
+    }
+
+    static ISE_MESSAGE deserialize(std::string message) {
+        ISE_MESSAGE ret;
+        std::vector<std::string> vec = CStringTokenizer::split(message, MESSAGE_DELIMETER);
+        if (vec.size() > 1) {
+            ret.type = vec.at(0);
+            vec.erase(vec.begin());
+            ret.command = vec.at(0);
+            vec.erase(vec.begin());
+            ret.values = vec;
+        }
+        return ret;
+    }
+};
+
+class WebSocketServer {
+public:
+    WebSocketServer();
+    virtual ~WebSocketServer();
+
+    bool init();
+    bool exit();
+
+    void signal(int sig);
+
+    void on_init();
+    void on_exit();
+
+    void on_focus_in(int ic);
+    void on_focus_out(int ic);
+
+    void on_show(int ic);
+    void on_hide(int ic);
+
+    void on_set_rotation(int degree);
+
+    void on_update_cursor_position(int ic, int cursor_pos);
+
+    void on_set_language(unsigned int language);
+
+    void on_set_imdata(char *buf, unsigned int len);
+    void on_get_imdata(char **buf, unsigned int *len);
+
+    void on_set_return_key_type(unsigned int type);
+    void on_get_return_key_type(unsigned int *type);
+
+    void on_set_return_key_disable(unsigned int disabled);
+    void on_get_return_key_disable(unsigned int *disabled);
+
+    void on_set_layout(unsigned int layout);
+    void on_get_layout(unsigned int *layout);
+
+    void on_reset_input_context(int ic);
+
+    void on_process_key_event(unsigned int code, unsigned int mask, unsigned int layout, unsigned int *ret);
+
+    std::queue<ISE_MESSAGE>& get_send_message_queue();
+    std::queue<ISE_MESSAGE>& get_recv_message_queue();
+    Ecore_Pipe* get_recv_message_pipe();
+
+    void wait_for_reply_message();
+
+    void process_recved_messages();
+    bool process_recved_messages_until_reply_found(std::string command, std::vector<std::string> &values);
+    void handle_recved_message(ISE_MESSAGE &message);
+
+    static WebSocketServer* get_current_instance();
+protected:
+    static WebSocketServer *m_current_instance;
+
+    std::queue<ISE_MESSAGE> m_send_message_queue;
+    std::queue<ISE_MESSAGE> m_recv_message_queue;
+
+    Ecore_Pipe *m_recv_message_pipe;
+};
+
+#endif // _WEB_HELPER_AGENT_WEBSOCKET_H_
old mode 100644 (file)
new mode 100755 (executable)
index 4585fa4..9794537
@@ -2877,6 +2877,10 @@ private:
                     trans.put_command(SCIM_TRANS_CMD_OK);
                     trans.write_to_socket(client_socket);
                     m_info_manager->hide_helper_ise ();
+                } else if (cmd == ISM_TRANS_CMD_ENABLE_REMOTE_INPUT) {
+                    m_info_manager->enable_remote_input ();
+                } else if (cmd == ISM_TRANS_CMD_DISABLE_REMOTE_INPUT) {
+                    m_info_manager->disable_remote_input ();
                 } else {
                     LOGW ("unknow cmd: %d\n", cmd);
                 }
index 5f3bb33..4760c22 100644 (file)
@@ -88,6 +88,26 @@ EXAPI int isf_control_get_active_ise (char **uuid)
     return strUuid.length ();
 }
 
+EXAPI int isf_control_enable_remote_input (void)
+{
+    IMControlClient imcontrol_client;
+    imcontrol_client.open_connection ();
+    imcontrol_client.prepare ();
+    imcontrol_client.enable_remote_input ();
+    imcontrol_client.close_connection ();
+    return 0;
+}
+
+EXAPI int isf_control_disable_remote_input (void)
+{
+    IMControlClient imcontrol_client;
+    imcontrol_client.open_connection ();
+    imcontrol_client.prepare ();
+    imcontrol_client.disable_remote_input ();
+    imcontrol_client.close_connection ();
+    return 0;
+}
+
 EXAPI int isf_control_get_ise_list (char ***uuid_list)
 {
     if (uuid_list == NULL)
index 6f26b7b..8bef778 100644 (file)
@@ -82,6 +82,20 @@ EXAPI int isf_control_set_active_ise_by_uuid (const char *uuid);
 EXAPI int isf_control_get_active_ise (char **uuid);
 
 /**
+ * @brief Enable remote input.
+ *
+ * @return 0 if successfully, otherwise return -1;
+ */
+EXAPI int isf_control_enable_remote_input (void);
+
+/**
+ * @brief Disable remote input.
+ *
+ * @return 0 if successfully, otherwise return -1;
+ */
+EXAPI int isf_control_disable_remote_input (void);
+
+/**
  * @brief Get the list of all ISEs' UUID.
  *
  * @param uuid_list The list is used to store all ISEs' UUID.
index 1b0827d..49f3efb 100644 (file)
@@ -283,6 +283,38 @@ public:
         return true;
     }
 
+    void enable_remote_input (void) {
+        int cmd;
+
+        m_trans.put_command (ISM_TRANS_CMD_ENABLE_REMOTE_INPUT);
+        m_trans.write_to_socket (m_socket_imclient2panel);
+        if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
+            std::cerr << __func__ << " read_from_socket() may be timeout \n";
+
+        if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
+                m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK) {
+            ;
+        } else {
+            std::cerr << __func__ << " get_command() is failed!!!\n";
+        }
+    }
+
+    void disable_remote_input (void) {
+        int cmd;
+
+        m_trans.put_command (ISM_TRANS_CMD_DISABLE_REMOTE_INPUT);
+        m_trans.write_to_socket (m_socket_imclient2panel);
+        if (!m_trans.read_from_socket (m_socket_imclient2panel, m_socket_timeout))
+            std::cerr << __func__ << " read_from_socket() may be timeout \n";
+
+        if (m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REPLY &&
+                m_trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_OK) {
+            ;
+        } else {
+            std::cerr << __func__ << " get_command() is failed!!!\n";
+        }
+    }
+
     bool get_ise_list (int* count, char*** iselist) {
         int cmd;
         uint32 count_temp = 0;
@@ -636,6 +668,16 @@ bool IMControlClient::set_initial_ise_by_uuid (const char* uuid)
     return m_impl->set_initial_ise_by_uuid (uuid);
 }
 
+void IMControlClient::enable_remote_input (void)
+{
+    m_impl->enable_remote_input ();
+}
+
+void IMControlClient::disable_remote_input (void)
+{
+    m_impl->disable_remote_input ();
+}
+
 bool IMControlClient::get_active_ise (String &uuid)
 {
     return m_impl->get_active_ise (uuid);
index fd4f64c..8e26611 100644 (file)
@@ -64,6 +64,8 @@ public:
     bool is_helper_ise_enabled (const char* appid, int &enabled);
     bool get_recent_ime_geometry (int *x, int *y, int *w, int *h, int angle = -1);
     bool hide_helper_ise (void);
+    void enable_remote_input (void);
+    void disable_remote_input (void);
 };
 
 }
index ee328f8..546a32d 100644 (file)
@@ -371,6 +371,9 @@ class InfoManager::InfoManagerImpl
 
     InfoManagerSignalIntRect             m_signal_get_recent_ise_geometry;
 
+    InfoManagerSignalVoid                m_signal_enable_remote_input;
+    InfoManagerSignalVoid                m_signal_disable_remote_input;
+
     InfoManagerSignalIntString2          m_signal_check_privilege_by_sockfd;
 
     PanelAgentManager                    m_panel_agent_manager;
@@ -1255,6 +1258,19 @@ public:
         SCIM_DEBUG_MAIN (4) << "InfoManager::show_isf_panel ()\n";
         m_signal_show_panel ();
     }
+
+    void enable_remote_input (void)
+    {
+        SCIM_DEBUG_MAIN(4) << "PanelAgent::enable_remote_input ()\n";
+        m_signal_enable_remote_input ();
+    }
+
+    void disable_remote_input (void)
+    {
+        SCIM_DEBUG_MAIN(4) << "PanelAgent::disable_remote_input ()\n";
+        m_signal_disable_remote_input ();
+    }
+
     //ISM_TRANS_CMD_HIDE_ISF_CONTROL
     void hide_isf_panel (int client_id) {
         LOGD ("");
@@ -1907,6 +1923,74 @@ public:
         return m_signal_check_privilege_by_sockfd (client_id, privilege);
     }
 
+    bool update_preedit_string (const WideString &str, const AttributeList &attrs)
+    {
+        SCIM_DEBUG_MAIN(1) << "PanelAgent::update_preedit_string ()\n";
+        int    client = -1;
+        uint32 context = 0;
+
+        lock ();
+
+        get_focused_context (client, context);
+        if (client >= 0) {
+        }
+
+        unlock ();
+
+        return client >= 0;
+    }
+
+    bool commit_string (const WideString &str)
+    {
+        SCIM_DEBUG_MAIN(1) << "PanelAgent::commit_string ()\n";
+        int    client = -1;
+        uint32 context = 0;
+
+        lock ();
+
+        get_focused_context (client, context);
+        if (client >= 0) {
+        }
+
+        unlock ();
+
+        return client >= 0;
+    }
+
+    bool send_key_event (const KeyEvent &key)
+    {
+        SCIM_DEBUG_MAIN(1) << "PanelAgent::send_key_event ()\n";
+        int    client = -1;
+        uint32 context = 0;
+
+        lock ();
+
+        get_focused_context (client, context);
+        if (client >= 0) {
+        }
+
+        unlock ();
+
+        return client >= 0;
+    }
+
+    bool forward_key_event (const KeyEvent &key)
+    {
+        SCIM_DEBUG_MAIN(1) << "PanelAgent::forward_key_event ()\n";
+        int    client = -1;
+        uint32 context = 0;
+
+        lock ();
+
+        get_focused_context (client, context);
+        if (client >= 0) {
+        }
+
+        unlock ();
+
+        return client >= 0;
+    }
+
     Connection signal_connect_turn_on (InfoManagerSlotVoid*                slot) {
         return m_signal_turn_on.connect (slot);
     }
@@ -2213,6 +2297,16 @@ public:
         return m_signal_check_privilege_by_sockfd.connect (slot);
     }
 
+    Connection signal_connect_enable_remote_input        (InfoManagerSlotVoid*                slot)
+    {
+        return m_signal_enable_remote_input.connect (slot);
+    }
+
+    Connection signal_connect_disable_remote_input        (InfoManagerSlotVoid*                slot)
+    {
+        return m_signal_disable_remote_input.connect (slot);
+    }
+
     //ISM_TRANS_CMD_REGISTER_PANEL_CLIENT
     void register_panel_client (uint32 client_id, uint32 id) {
         LOGD ("");
@@ -4032,6 +4126,27 @@ InfoManager::update_ise_list (std::vector<String>& strList)
     m_impl->update_ise_list (strList);
 }
 
+bool
+InfoManager::update_preedit_string (const WideString &str, const AttributeList &attrs)
+{
+    return m_impl->update_preedit_string (str, attrs);
+}
+bool
+InfoManager::commit_string (const WideString &str)
+{
+    return m_impl->commit_string (str);
+}
+bool
+InfoManager::send_key_event (const KeyEvent &key)
+{
+    return m_impl->send_key_event (key);
+}
+bool
+InfoManager::forward_key_event (const KeyEvent &key)
+{
+    return m_impl->forward_key_event (key);
+}
+
 /////////////////////////////////Message function begin/////////////////////////////////////////
 
 //ISM_TRANS_CMD_PANEL_RESET_KEYBOARD_ISE
@@ -4324,6 +4439,18 @@ void InfoManager::get_recent_ise_geometry (int client_id, uint32 angle, _OUT_ st
     m_impl->get_recent_ise_geometry (client_id, angle, info);
 }
 
+//ISM_TRANS_CMD_ENABLE_REMOTE_INPUT
+void InfoManager::enable_remote_input ()
+{
+    m_impl->enable_remote_input ();
+}
+
+//ISM_TRANS_CMD_DISABLE_REMOTE_INPUT
+void InfoManager::disable_remote_input ()
+{
+    m_impl->disable_remote_input ();
+}
+
 //ISM_TRANS_CMD_REGISTER_PANEL_CLIENT
 void InfoManager::register_panel_client (uint32 client_id, uint32 id)
 {
@@ -5202,6 +5329,17 @@ InfoManager::signal_connect_check_privilege_by_sockfd  (InfoManagerSlotIntString
     return m_impl->signal_connect_check_privilege_by_sockfd (slot);
 }
 
+Connection
+InfoManager::signal_connect_enable_remote_input         (InfoManagerSlotVoid*                slot)
+{
+    return m_impl->signal_connect_enable_remote_input (slot);
+}
+
+Connection
+InfoManager::signal_connect_disable_remote_input         (InfoManagerSlotVoid*                slot)
+{
+    return m_impl->signal_connect_disable_remote_input (slot);
+}
 
 } /* namespace scim */
 
index 1085090..137307b 100644 (file)
@@ -556,6 +556,31 @@ public:
      * @return none.
      */
     void update_ise_list (std::vector<String>& strList);
+
+
+    bool update_preedit_string (const WideString &str, const AttributeList &attrs) ;
+
+    bool commit_string (const WideString &str) ;
+
+    bool send_key_event (const KeyEvent &key) ;
+
+    bool forward_key_event (const KeyEvent &key) ;
+
+
+    /**
+     * @brief Enable remote input.
+     *
+     * @return none.
+     */
+    void enable_remote_input (void);
+
+    /**
+     * @brief Disable remote input.
+     *
+     * @return none.
+     */
+    void disable_remote_input (void);
+
 /////////////////////////////////Message function begin/////////////////////////////////////////
 
 //ISM_TRANS_CMD_PANEL_RESET_KEYBOARD_ISE
@@ -1500,6 +1525,20 @@ public:
      */
     Connection signal_connect_get_recent_ise_geometry (InfoManagerSlotIntRect*             slot);
 
+    /**
+     * @brief Signal: Enable remote input.
+     *
+     * slot prototype: void enabl_remote_input (void);
+     */
+    Connection signal_connect_enable_remote_input (InfoManagerSlotVoid*                slot);
+
+    /**
+     * @brief Signal: Disable remote input.
+     *
+     * slot prototype: void disable_remote_input (void);
+     */
+    Connection signal_connect_disable_remote_input (InfoManagerSlotVoid*                slot);
+
     Connection signal_connect_check_privilege_by_sockfd  (InfoManagerSlotIntString2* slot);
 };
 
index d503227..0bc9b93 100644 (file)
@@ -91,6 +91,7 @@ namespace scim {
 #define SCIM_GLOBAL_CONFIG_HIDE_ISE_BASED_ON_FOCUS                  "/HideIseBasedOnFocus"
 #define SCIM_GLOBAL_CONFIG_SUPPORT_HW_KEYBOARD_MODE                 "/SupportHWKeyboardMode"
 #define SCIM_GLOBAL_CONFIG_DEFAULT_KBD_MODE_CHANGER_PROGRAM         "/DefaultKbdModeChangerProgram"
+#define SCIM_GLOBAL_CONFIG_LAUNCH_REMOTE_INPUT                      "/LaunchRemoteInput"
 #define SCIM_GLOBAL_CONFIG_LOCK_SCREEN_CLASS_NAME                   "/LockScreenClassName"
 
 #define ISF_CONFIG_HARDWARE_KEYBOARD_DETECT                         "/isf/hw_keyboard_detect"
index 64482f4..0e69829 100644 (file)
@@ -637,6 +637,8 @@ const int ISM_TRANS_CMD_SHOW_HELPER_ISE_LIST              = 1021;
 const int ISM_TRANS_CMD_SHOW_HELPER_ISE_SELECTOR          = 1022;
 const int ISM_TRANS_CMD_IS_HELPER_ISE_ENABLED             = 1023;
 const int ISM_TRANS_CMD_GET_RECENT_ISE_GEOMETRY           = 1024;
+const int ISM_TRANS_CMD_ENABLE_REMOTE_INPUT               = 1025;
+const int ISM_TRANS_CMD_DISABLE_REMOTE_INPUT              = 1026;
 
 /* IMControl to ISE */
 const int ISM_TRANS_CMD_SET_ISE_MODE                      = 1108;
index 0c788c4..751f49b 100644 (file)
@@ -43,6 +43,10 @@ Requires(postun): /sbin/ldconfig
 BuildRequires:  pkgconfig(notification)
 Requires: org.tizen.isf-kbd-mode-changer
 %endif
+%if "%{?profile}" == "tv"
+BuildRequires:  pkgconfig(libwebsockets)
+BuildRequires:  pkgconfig(opencv)
+%endif
 
 %define APP_PREFIX %{TZ_SYS_RO_APP}/org.tizen.isf-kbd-mode-changer/bin/
 
@@ -140,6 +144,7 @@ ln -sf %{_libdir}/ecore_imf/modules/wayland/v-1.16/module.so %{_libdir}/ecore_im
 %{_sysconfdir}/scim/config
 %{_datadir}/scim/isf_candidate_theme1.edj
 %{_datadir}/scim/icons/*
+%attr(766,app,app) %{_datadir}/scim/remote-input/*
 %{_bindir}/isf-demo-efl
 %{_bindir}/isf-panel-efl
 %{_bindir}/scim